move up (in the file) AAC audio handling moved from below
authorRyan Martell <rdm4@martellventures.com>
Sat, 28 Oct 2006 00:29:59 +0000 (00:29 +0000)
committerGuillaume Poirier <gpoirier@mplayerhq.hu>
Sat, 28 Oct 2006 00:29:59 +0000 (00:29 +0000)
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

libavformat/Makefile
libavformat/rtp.c

index 8c8e2b7..c1036d7 100644 (file)
@@ -174,7 +174,7 @@ OBJS+= avio.o aviobuf.o
 ifeq ($(CONFIG_PROTOCOLS),yes)
 OBJS+= file.o
 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
 ifeq ($(NEED_INET_ATON),yes)
 OBJS+= barpainet.o
index e075ba6..ad6931d 100644 (file)
@@ -526,6 +526,31 @@ int rtp_parse_packet(RTPDemuxContext *s, AVPacket *pkt,
             av_new_packet(pkt, len);
             memcpy(pkt->data, buf, len);
             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:
             if(s->parse_packet) {
                 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;
             }
             break;
+        case CODEC_ID_MPEG4AAC:
+        case CODEC_ID_H264:
         case CODEC_ID_MPEG4:
             pkt->pts = timestamp;
             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:
             /* no timestamp info yet */
             break;