Parse the bitrate field in the ASMRuleBook ("AverageBandwidth") to fill in
the AVStream->AVCodecContext->bit_rate field, which is not in the MDPR block (the "OpaqueData" SDP field). This allows clients to choose streams based on their bitrate, which is what most network-players base stream selection on. (Of course, it is also possible to select based on anything else, that is entirely up to the client.) See "[PATCH] rdt.c: ASM rulebook bitrate reading" thread on mailinglist. Originally committed as revision 16467 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
3ca45429fe
commit
530bca9439
@ -428,6 +428,19 @@ rdt_parse_sdp_line (AVFormatContext *s, int st_index,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
real_parse_asm_rule(AVStream *st, const char *p, const char *end)
|
||||||
|
{
|
||||||
|
do {
|
||||||
|
/* can be either averagebandwidth= or AverageBandwidth= */
|
||||||
|
if (sscanf(p, " %*1[Aa]verage%*1[Bb]andwidth=%d", &st->codec->bit_rate) == 1)
|
||||||
|
break;
|
||||||
|
if (!(p = strchr(p, ',')) || p > end)
|
||||||
|
p = end;
|
||||||
|
p++;
|
||||||
|
} while (p < end);
|
||||||
|
}
|
||||||
|
|
||||||
static AVStream *
|
static AVStream *
|
||||||
add_dstream(AVFormatContext *s, AVStream *orig_st)
|
add_dstream(AVFormatContext *s, AVStream *orig_st)
|
||||||
{
|
{
|
||||||
@ -473,6 +486,7 @@ real_parse_asm_rulebook(AVFormatContext *s, AVStream *orig_st,
|
|||||||
st = add_dstream(s, orig_st);
|
st = add_dstream(s, orig_st);
|
||||||
else
|
else
|
||||||
st = orig_st;
|
st = orig_st;
|
||||||
|
real_parse_asm_rule(st, p, end);
|
||||||
n_rules++;
|
n_rules++;
|
||||||
}
|
}
|
||||||
p = end + 1;
|
p = end + 1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user