mirror of https://git.ffmpeg.org/ffmpeg.git
avcodec/vc1: factor read_bfraction() out
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
f4b288a639
commit
388b4cf86e
|
@ -613,6 +613,12 @@ static void rotate_luts(VC1Context *v)
|
|||
*v->curr_use_ic = 0;
|
||||
}
|
||||
|
||||
static int read_bfraction(VC1Context *v, GetBitContext* gb) {
|
||||
v->bfraction_lut_index = get_vlc2(gb, ff_vc1_bfraction_vlc.table, VC1_BFRACTION_VLC_BITS, 1);
|
||||
v->bfraction = ff_vc1_bfraction_lut[v->bfraction_lut_index];
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ff_vc1_parse_frame_header(VC1Context *v, GetBitContext* gb)
|
||||
{
|
||||
int pqindex, lowquant, status;
|
||||
|
@ -644,8 +650,8 @@ int ff_vc1_parse_frame_header(VC1Context *v, GetBitContext* gb)
|
|||
|
||||
v->bi_type = 0;
|
||||
if (v->s.pict_type == AV_PICTURE_TYPE_B) {
|
||||
v->bfraction_lut_index = get_vlc2(gb, ff_vc1_bfraction_vlc.table, VC1_BFRACTION_VLC_BITS, 1);
|
||||
v->bfraction = ff_vc1_bfraction_lut[v->bfraction_lut_index];
|
||||
if (read_bfraction(v, gb) < 0)
|
||||
return AVERROR_INVALIDDATA;
|
||||
if (v->bfraction == 0) {
|
||||
v->s.pict_type = AV_PICTURE_TYPE_BI;
|
||||
}
|
||||
|
@ -928,8 +934,8 @@ int ff_vc1_parse_frame_header_adv(VC1Context *v, GetBitContext* gb)
|
|||
v->refdist += get_unary(gb, 0, 16);
|
||||
}
|
||||
if ((v->s.pict_type == AV_PICTURE_TYPE_B) || (v->s.pict_type == AV_PICTURE_TYPE_BI)) {
|
||||
v->bfraction_lut_index = get_vlc2(gb, ff_vc1_bfraction_vlc.table, VC1_BFRACTION_VLC_BITS, 1);
|
||||
v->bfraction = ff_vc1_bfraction_lut[v->bfraction_lut_index];
|
||||
if (read_bfraction(v, gb) < 0)
|
||||
return AVERROR_INVALIDDATA;
|
||||
v->frfd = (v->bfraction * v->refdist) >> 8;
|
||||
v->brfd = v->refdist - v->frfd - 1;
|
||||
if (v->brfd < 0)
|
||||
|
@ -941,8 +947,8 @@ int ff_vc1_parse_frame_header_adv(VC1Context *v, GetBitContext* gb)
|
|||
if (v->finterpflag)
|
||||
v->interpfrm = get_bits1(gb);
|
||||
if (v->s.pict_type == AV_PICTURE_TYPE_B) {
|
||||
v->bfraction_lut_index = get_vlc2(gb, ff_vc1_bfraction_vlc.table, VC1_BFRACTION_VLC_BITS, 1);
|
||||
v->bfraction = ff_vc1_bfraction_lut[v->bfraction_lut_index];
|
||||
if (read_bfraction(v, gb) < 0)
|
||||
return AVERROR_INVALIDDATA;
|
||||
if (v->bfraction == 0) {
|
||||
v->s.pict_type = AV_PICTURE_TYPE_BI; /* XXX: should not happen here */
|
||||
}
|
||||
|
@ -1186,8 +1192,8 @@ int ff_vc1_parse_frame_header_adv(VC1Context *v, GetBitContext* gb)
|
|||
break;
|
||||
case AV_PICTURE_TYPE_B:
|
||||
if (v->fcm == ILACE_FRAME) {
|
||||
v->bfraction_lut_index = get_vlc2(gb, ff_vc1_bfraction_vlc.table, VC1_BFRACTION_VLC_BITS, 1);
|
||||
v->bfraction = ff_vc1_bfraction_lut[v->bfraction_lut_index];
|
||||
if (read_bfraction(v, gb) < 0)
|
||||
return AVERROR_INVALIDDATA;
|
||||
if (v->bfraction == 0) {
|
||||
return -1;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue