From 5002e69b85a7d718156367edee38d148636e3475 Mon Sep 17 00:00:00 2001
From: Josh Allmann <joshua.allmann@gmail.com>
Date: Fri, 25 Jun 2010 15:11:36 -0700
Subject: [PATCH 6/7] Clean up FMTP parsing code in MPEG-4/AAC RTP depacketizer.

---
 libavformat/rtpdec_mpeg4.c |   33 ++++++++++++++-------------------
 1 files changed, 14 insertions(+), 19 deletions(-)

diff --git a/libavformat/rtpdec_mpeg4.c b/libavformat/rtpdec_mpeg4.c
index cb22b32..d1999b9 100644
--- a/libavformat/rtpdec_mpeg4.c
+++ b/libavformat/rtpdec_mpeg4.c
@@ -219,24 +219,12 @@ static int aac_parse_packet(AVFormatContext *ctx,
     return 0;
 }
 
-static int parse_sdp_line(AVFormatContext *s, int st_index,
-                          PayloadContext *data, const char *line)
+static int parse_fmtp(AVFormatContext *s, int st_index,
+                      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
-
-        while (ff_rtsp_next_attr_and_value(&p,
-                                           attr, sizeof(attr),
-                                           value, sizeof(value))) {
+    AVCodecContext *codec = s->streams[st_index]->codec;
+    int res, i;
+
             if (!strcmp(attr, "config")) {
                 res = parse_fmtp_config(codec, value);
 
@@ -257,11 +245,18 @@ static int parse_sdp_line(AVFormatContext *s, int st_index,
                     }
                 }
             }
+    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, st_index, data, p, &parse_fmtp);
 
+    return 0;
 }
 
 RTPDynamicProtocolHandler ff_mp4v_es_dynamic_handler = {
-- 
1.7.0.4

