mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-21 10:55:51 +02:00
Make WMV3 decoder print more errors when decoding beta WMV9 files.
As a side effect it will also decode a lot of P-frames from those. Originally committed as revision 24161 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
42d1e7a287
commit
42ff9d7a58
@ -388,7 +388,7 @@ int vc1_decode_sequence_header(AVCodecContext *avctx, VC1Context *v, GetBitConte
|
|||||||
// av_log(avctx, AV_LOG_ERROR,
|
// av_log(avctx, AV_LOG_ERROR,
|
||||||
// "0 for reserved RES_RTM_FLAG is forbidden\n");
|
// "0 for reserved RES_RTM_FLAG is forbidden\n");
|
||||||
av_log(avctx, AV_LOG_ERROR,
|
av_log(avctx, AV_LOG_ERROR,
|
||||||
"Old WMV3 version detected, only I-frames will be decoded\n");
|
"Old WMV3 version detected, some frames may be decoded incorrectly\n");
|
||||||
//return -1;
|
//return -1;
|
||||||
}
|
}
|
||||||
//TODO: figure out what they mean (always 0x402F)
|
//TODO: figure out what they mean (always 0x402F)
|
||||||
|
@ -1996,7 +1996,9 @@ static int vc1_decode_p_block(VC1Context *v, DCTELEM block[64], int n, int mquan
|
|||||||
if(ttblk == TT_4X4) {
|
if(ttblk == TT_4X4) {
|
||||||
subblkpat = ~(get_vlc2(gb, ff_vc1_subblkpat_vlc[v->tt_index].table, VC1_SUBBLKPAT_VLC_BITS, 1) + 1);
|
subblkpat = ~(get_vlc2(gb, ff_vc1_subblkpat_vlc[v->tt_index].table, VC1_SUBBLKPAT_VLC_BITS, 1) + 1);
|
||||||
}
|
}
|
||||||
if((ttblk != TT_8X8 && ttblk != TT_4X4) && (v->ttmbf || (ttmb != -1 && (ttmb & 8) && !first_block))) {
|
if((ttblk != TT_8X8 && ttblk != TT_4X4)
|
||||||
|
&& ((v->ttmbf || (ttmb != -1 && (ttmb & 8) && !first_block))
|
||||||
|
|| (!v->res_rtm_flag && !first_block))) {
|
||||||
subblkpat = decode012(gb);
|
subblkpat = decode012(gb);
|
||||||
if(subblkpat) subblkpat ^= 3; //swap decoded pattern bits
|
if(subblkpat) subblkpat ^= 3; //swap decoded pattern bits
|
||||||
if(ttblk == TT_8X4_TOP || ttblk == TT_8X4_BOTTOM) ttblk = TT_8X4;
|
if(ttblk == TT_8X4_TOP || ttblk == TT_8X4_BOTTOM) ttblk = TT_8X4;
|
||||||
@ -3212,11 +3214,6 @@ static int vc1_decode_frame(AVCodecContext *avctx,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(s->pict_type != FF_I_TYPE && !v->res_rtm_flag){
|
|
||||||
av_free(buf2);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// for hurry_up==5
|
// for hurry_up==5
|
||||||
s->current_picture.pict_type= s->pict_type;
|
s->current_picture.pict_type= s->pict_type;
|
||||||
s->current_picture.key_frame= s->pict_type == FF_I_TYPE;
|
s->current_picture.key_frame= s->pict_type == FF_I_TYPE;
|
||||||
|
Loading…
Reference in New Issue
Block a user