mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
rtpdec: Cleanup FMTP parsing code in Xiph RTP depacketizer
Patch by Josh Allmann, joshua dot allmann at gmail Originally committed as revision 23860 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
824535e3c6
commit
af1308f024
@ -286,10 +286,11 @@ parse_packed_headers(const uint8_t * packed_headers,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int xiph_parse_fmtp_pair(AVCodecContext * codec,
|
static int xiph_parse_fmtp_pair(AVStream* stream,
|
||||||
PayloadContext *xiph_data,
|
PayloadContext *xiph_data,
|
||||||
char *attr, char *value)
|
char *attr, char *value)
|
||||||
{
|
{
|
||||||
|
AVCodecContext *codec = stream->codec;
|
||||||
int result = 0;
|
int result = 0;
|
||||||
|
|
||||||
if (!strcmp(attr, "sampling")) {
|
if (!strcmp(attr, "sampling")) {
|
||||||
@ -346,34 +347,12 @@ static int xiph_parse_sdp_line(AVFormatContext *s, int st_index,
|
|||||||
PayloadContext *data, const char *line)
|
PayloadContext *data, const char *line)
|
||||||
{
|
{
|
||||||
const char *p;
|
const char *p;
|
||||||
char *value;
|
|
||||||
char attr[25];
|
|
||||||
int value_size = strlen(line), attr_size = sizeof(attr), res = 0;
|
|
||||||
AVCodecContext* codec = s->streams[st_index]->codec;
|
|
||||||
|
|
||||||
assert(data);
|
|
||||||
|
|
||||||
if (!(value = av_malloc(value_size))) {
|
|
||||||
av_log(codec, AV_LOG_ERROR, "Out of memory\n");
|
|
||||||
return AVERROR(ENOMEM);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (av_strstart(line, "fmtp:", &p)) {
|
if (av_strstart(line, "fmtp:", &p)) {
|
||||||
// remove protocol identifier
|
return ff_parse_fmtp(s->streams[st_index], data, p,
|
||||||
while (*p && *p == ' ') p++; // strip spaces
|
xiph_parse_fmtp_pair);
|
||||||
while (*p && *p != ' ') p++; // eat protocol identifier
|
|
||||||
while (*p && *p == ' ') p++; // strip trailing spaces
|
|
||||||
|
|
||||||
while (ff_rtsp_next_attr_and_value(&p,
|
|
||||||
attr, attr_size,
|
|
||||||
value, value_size)) {
|
|
||||||
res = xiph_parse_fmtp_pair(codec, data, attr, value);
|
|
||||||
if (res < 0 && res != AVERROR_PATCHWELCOME)
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
av_free(value);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user