move up (in the file) AAC audio handling moved from below

This is because upper section handles packets, and the lower switch handles timestamps
Patch by Ryan Martell % rdm4 A martellventures P com %
Original thread:
Date: Oct 27, 2006 11:40 PM
Subject: Re: [Ffmpeg-devel] RTP patches & RFC

Originally committed as revision 6817 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Ryan Martell
2006-10-28 00:29:59 +00:00
committed by Guillaume Poirier
parent a01e68aa5e
commit d83723305e
2 changed files with 28 additions and 22 deletions

View File

@ -174,7 +174,7 @@ OBJS+= avio.o aviobuf.o
ifeq ($(CONFIG_PROTOCOLS),yes) ifeq ($(CONFIG_PROTOCOLS),yes)
OBJS+= file.o OBJS+= file.o
ifeq ($(CONFIG_NETWORK),yes) ifeq ($(CONFIG_NETWORK),yes)
OBJS+= udp.o tcp.o http.o rtsp.o rtp.o rtpproto.o mpegts.o OBJS+= udp.o tcp.o http.o rtsp.o rtp.o rtpproto.o mpegts.o base64.o
# BeOS and Darwin network stuff # BeOS and Darwin network stuff
ifeq ($(NEED_INET_ATON),yes) ifeq ($(NEED_INET_ATON),yes)
OBJS+= barpainet.o OBJS+= barpainet.o

View File

@ -526,6 +526,31 @@ int rtp_parse_packet(RTPDemuxContext *s, AVPacket *pkt,
av_new_packet(pkt, len); av_new_packet(pkt, len);
memcpy(pkt->data, buf, len); memcpy(pkt->data, buf, len);
break; break;
// moved from below, verbatim. this is because this section handles packets, and the lower switch handles
// timestamps.
// TODO: Put this into a dynamic packet handler...
case CODEC_ID_MPEG4AAC:
if (rtp_parse_mp4_au(s, buf))
return -1;
{
rtp_payload_data_t *infos = s->rtp_payload_data;
if (infos == NULL)
return -1;
buf += infos->au_headers_length_bytes + 2;
len -= infos->au_headers_length_bytes + 2;
/* XXX: Fixme we only handle the case where rtp_parse_mp4_au define
one au_header */
av_new_packet(pkt, infos->au_headers[0].size);
memcpy(pkt->data, buf, infos->au_headers[0].size);
buf += infos->au_headers[0].size;
len -= infos->au_headers[0].size;
}
s->read_buf_size = len;
s->buf_ptr = buf;
pkt->stream_index = s->st->index;
return 0; ///< Temporary return.
break;
default: default:
if(s->parse_packet) { if(s->parse_packet) {
return s->parse_packet(s, pkt, timestamp, buf, len); return s->parse_packet(s, pkt, timestamp, buf, len);
@ -550,30 +575,11 @@ int rtp_parse_packet(RTPDemuxContext *s, AVPacket *pkt,
pkt->pts = addend + delta_timestamp; pkt->pts = addend + delta_timestamp;
} }
break; break;
case CODEC_ID_MPEG4AAC:
case CODEC_ID_H264:
case CODEC_ID_MPEG4: case CODEC_ID_MPEG4:
pkt->pts = timestamp; pkt->pts = timestamp;
break; break;
case CODEC_ID_MPEG4AAC:
if (rtp_parse_mp4_au(s, buf))
return -1;
{
rtp_payload_data_t *infos = s->rtp_payload_data;
if (infos == NULL)
return -1;
buf += infos->au_headers_length_bytes + 2;
len -= infos->au_headers_length_bytes + 2;
/* XXX: Fixme we only handle the case where rtp_parse_mp4_au define
one au_header */
av_new_packet(pkt, infos->au_headers[0].size);
memcpy(pkt->data, buf, infos->au_headers[0].size);
buf += infos->au_headers[0].size;
len -= infos->au_headers[0].size;
}
s->read_buf_size = len;
s->buf_ptr = buf;
pkt->stream_index = s->st->index;
return 0;
default: default:
/* no timestamp info yet */ /* no timestamp info yet */
break; break;