Browse Source

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

Patch by Josh Allmann, joshua dot allmann at gmail

Originally committed as revision 23851 to svn://svn.ffmpeg.org/ffmpeg/trunk
tags/n0.8
Josh Allmann Martin Storsjö 15 years ago
parent
commit
efc6d45196
1 changed files with 14 additions and 19 deletions
  1. +14
    -19
      libavformat/rtpdec_mpeg4.c

+ 14
- 19
libavformat/rtpdec_mpeg4.c View File

@@ -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(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

while (ff_rtsp_next_attr_and_value(&p,
attr, sizeof(attr),
value, sizeof(value))) {
AVCodecContext *codec = stream->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->streams[st_index], data, p, parse_fmtp);

return 0;
}

RTPDynamicProtocolHandler ff_mp4v_es_dynamic_handler = {


Loading…
Cancel
Save