mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-03-22 10:58:04 +00:00
Make WMV3 decoder attempt to decode WMVP as well
Originally committed as revision 25209 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
10f93363b7
commit
cba322d76d
@ -32,7 +32,7 @@
|
|||||||
|
|
||||||
#define LIBAVCODEC_VERSION_MAJOR 52
|
#define LIBAVCODEC_VERSION_MAJOR 52
|
||||||
#define LIBAVCODEC_VERSION_MINOR 90
|
#define LIBAVCODEC_VERSION_MINOR 90
|
||||||
#define LIBAVCODEC_VERSION_MICRO 0
|
#define LIBAVCODEC_VERSION_MICRO 1
|
||||||
|
|
||||||
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
|
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
|
||||||
LIBAVCODEC_VERSION_MINOR, \
|
LIBAVCODEC_VERSION_MINOR, \
|
||||||
|
@ -315,8 +315,7 @@ int vc1_decode_sequence_header(AVCodecContext *avctx, VC1Context *v, GetBitConte
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (v->res_sprite) {
|
if (v->res_sprite) {
|
||||||
av_log(avctx, AV_LOG_ERROR, "WMVP is not supported\n");
|
av_log(avctx, AV_LOG_ERROR, "WMVP is not fully supported\n");
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -387,7 +386,21 @@ int vc1_decode_sequence_header(AVCodecContext *avctx, VC1Context *v, GetBitConte
|
|||||||
v->quantizer_mode = get_bits(gb, 2); //common
|
v->quantizer_mode = get_bits(gb, 2); //common
|
||||||
|
|
||||||
v->finterpflag = get_bits1(gb); //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)
|
if (!v->res_rtm_flag)
|
||||||
{
|
{
|
||||||
// av_log(avctx, AV_LOG_ERROR,
|
// av_log(avctx, AV_LOG_ERROR,
|
||||||
@ -566,6 +579,9 @@ int vc1_parse_frame_header(VC1Context *v, GetBitContext* gb)
|
|||||||
{
|
{
|
||||||
int pqindex, lowquant, status;
|
int pqindex, lowquant, status;
|
||||||
|
|
||||||
|
if(v->res_sprite) {
|
||||||
|
skip_bits(gb, 2); //not yet deciphered
|
||||||
|
}
|
||||||
if(v->finterpflag) v->interpfrm = get_bits1(gb);
|
if(v->finterpflag) v->interpfrm = get_bits1(gb);
|
||||||
skip_bits(gb, 2); //framecnt unused
|
skip_bits(gb, 2); //framecnt unused
|
||||||
v->rangeredfrm = 0;
|
v->rangeredfrm = 0;
|
||||||
|
@ -3240,6 +3240,11 @@ static int vc1_decode_frame(AVCodecContext *avctx,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(v->res_sprite && (s->pict_type!=FF_I_TYPE)){
|
||||||
|
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;
|
||||||
|
@ -227,6 +227,7 @@ const AVCodecTag ff_codec_bmp_tags[] = {
|
|||||||
{ CODEC_ID_QPEG, MKTAG('Q', '1', '.', '0') },
|
{ CODEC_ID_QPEG, MKTAG('Q', '1', '.', '0') },
|
||||||
{ CODEC_ID_QPEG, MKTAG('Q', '1', '.', '1') },
|
{ CODEC_ID_QPEG, MKTAG('Q', '1', '.', '1') },
|
||||||
{ CODEC_ID_WMV3, MKTAG('W', 'M', 'V', '3') },
|
{ CODEC_ID_WMV3, MKTAG('W', 'M', 'V', '3') },
|
||||||
|
{ CODEC_ID_WMV3, MKTAG('W', 'M', 'V', 'P') },
|
||||||
{ CODEC_ID_VC1, MKTAG('W', 'V', 'C', '1') },
|
{ CODEC_ID_VC1, MKTAG('W', 'V', 'C', '1') },
|
||||||
{ CODEC_ID_VC1, MKTAG('W', 'M', 'V', 'A') },
|
{ CODEC_ID_VC1, MKTAG('W', 'M', 'V', 'A') },
|
||||||
{ CODEC_ID_LOCO, MKTAG('L', 'O', 'C', 'O') },
|
{ CODEC_ID_LOCO, MKTAG('L', 'O', 'C', 'O') },
|
||||||
|
Loading…
Reference in New Issue
Block a user