[FFmpeg-cvslog] r23851 - trunk/libavformat/rtpdec_mpeg4.c

mstorsjo subversion
Mon Jun 28 13:30:44 CEST 2010


Author: mstorsjo
Date: Mon Jun 28 13:30:44 2010
New Revision: 23851

Log:
rtpdec: Clean up FMTP parsing code in MPEG-4/AAC RTP depacketizer

Patch by Josh Allmann, joshua dot allmann at gmail

Modified:
   trunk/libavformat/rtpdec_mpeg4.c

Modified: trunk/libavformat/rtpdec_mpeg4.c
==============================================================================
--- trunk/libavformat/rtpdec_mpeg4.c	Mon Jun 28 13:28:02 2010	(r23850)
+++ trunk/libavformat/rtpdec_mpeg4.c	Mon Jun 28 13:30:44 2010	(r23851)
@@ -219,24 +219,12 @@ static int aac_parse_packet(AVFormatCont
     return 0;
 }
 
-static int parse_sdp_line(AVFormatContext *s, int st_index,
-                          PayloadContext *data, const char *line)
+static int parse_fmtp(AVStream *stream, PayloadContext *data,
+                      char *attr, char *value)
 {
-    const char *p;
-    char value[4096], attr[25];
-    int res = 0, i;
-    AVStream *st = s->streams[st_index];
-    AVCodecContext* codec = st->codec;
-
-    if (av_strstart(line, "fmtp:", &p)) {
-        // remove protocol identifier
-        while (*p && *p == ' ') p++; // strip spaces
-        while (*p && *p != ' ') p++; // eat protocol identifier
-        while (*p && *p == ' ') p++; // strip trailing spaces
+    AVCodecContext *codec = stream->codec;
+    int res, i;
 
-        while (ff_rtsp_next_attr_and_value(&p,
-                                           attr, sizeof(attr),
-                                           value, sizeof(value))) {
             if (!strcmp(attr, "config")) {
                 res = parse_fmtp_config(codec, value);
 
@@ -257,11 +245,18 @@ static int parse_sdp_line(AVFormatContex
                     }
                 }
             }
+    return 0;
         }
-    }
 
-    return 0;
+static int parse_sdp_line(AVFormatContext *s, int st_index,
+                          PayloadContext *data, const char *line)
+{
+    const char *p;
 
+    if (av_strstart(line, "fmtp:", &p))
+        return ff_parse_fmtp(s->streams[st_index], data, p, parse_fmtp);
+
+    return 0;
 }
 
 RTPDynamicProtocolHandler ff_mp4v_es_dynamic_handler = {



More information about the ffmpeg-cvslog mailing list