# HG changeset patch # User mstorsjo # Date 1277724644 0 # Node ID 7884ec350d888dd934c8e049858fd2234c592d7b # Parent 8ee715d46f994488f28d901b4a03cd8bf90468b8 rtpdec: Clean up FMTP parsing code in MPEG-4/AAC RTP depacketizer Patch by Josh Allmann, joshua dot allmann at gmail diff -r 8ee715d46f99 -r 7884ec350d88 rtpdec_mpeg4.c --- a/rtpdec_mpeg4.c Mon Jun 28 11:28:02 2010 +0000 +++ b/rtpdec_mpeg4.c Mon Jun 28 11:30:44 2010 +0000 @@ -219,24 +219,12 @@ 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; + AVCodecContext *codec = stream->codec; + int res, i; - 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))) { if (!strcmp(attr, "config")) { res = parse_fmtp_config(codec, value); @@ -257,11 +245,18 @@ } } } + 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 = {