|
|
@@ -315,8 +315,7 @@ int vc1_decode_sequence_header(AVCodecContext *avctx, VC1Context *v, GetBitConte |
|
|
|
return -1; |
|
|
|
} |
|
|
|
if (v->res_sprite) { |
|
|
|
av_log(avctx, AV_LOG_ERROR, "WMVP is not supported\n"); |
|
|
|
return -1; |
|
|
|
av_log(avctx, AV_LOG_ERROR, "WMVP is not fully supported\n"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@@ -387,7 +386,21 @@ int vc1_decode_sequence_header(AVCodecContext *avctx, VC1Context *v, GetBitConte |
|
|
|
v->quantizer_mode = get_bits(gb, 2); //common |
|
|
|
|
|
|
|
v->finterpflag = get_bits1(gb); //common |
|
|
|
v->res_rtm_flag = get_bits1(gb); //reserved |
|
|
|
|
|
|
|
if (v->res_sprite) { |
|
|
|
v->s.avctx->width = v->s.avctx->coded_width = get_bits(gb, 11); |
|
|
|
v->s.avctx->height = v->s.avctx->coded_height = get_bits(gb, 11); |
|
|
|
skip_bits(gb, 5); //frame rate |
|
|
|
v->res_x8 = get_bits1(gb); |
|
|
|
if (get_bits1(gb)) { // something to do with DC VLC selection |
|
|
|
av_log(avctx, AV_LOG_ERROR, "Unsupported sprite feature\n"); |
|
|
|
return -1; |
|
|
|
} |
|
|
|
skip_bits(gb, 3); //slice code |
|
|
|
v->res_rtm_flag = 0; |
|
|
|
} else { |
|
|
|
v->res_rtm_flag = get_bits1(gb); //reserved |
|
|
|
} |
|
|
|
if (!v->res_rtm_flag) |
|
|
|
{ |
|
|
|
// av_log(avctx, AV_LOG_ERROR, |
|
|
@@ -566,6 +579,9 @@ int vc1_parse_frame_header(VC1Context *v, GetBitContext* gb) |
|
|
|
{ |
|
|
|
int pqindex, lowquant, status; |
|
|
|
|
|
|
|
if(v->res_sprite) { |
|
|
|
skip_bits(gb, 2); //not yet deciphered |
|
|
|
} |
|
|
|
if(v->finterpflag) v->interpfrm = get_bits1(gb); |
|
|
|
skip_bits(gb, 2); //framecnt unused |
|
|
|
v->rangeredfrm = 0; |
|
|
|