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:
committed by
Guillaume Poirier
parent
a01e68aa5e
commit
d83723305e
@ -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
|
||||||
|
@ -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;
|
||||||
|
Reference in New Issue
Block a user