X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fvc1.c;h=8eba65c1d04c3188a39523df663ed463ea557d68;hb=ad99cbc9b3f4e0fae5c9bc5291d422d477dbf069;hp=a7f2aab209ddcb18ab5a3bfd3cdaab1bf6ec43fd;hpb=dd2d0039b6405dc724e4fef0d5b8f49530eea3aa;p=ffmpeg diff --git a/libavcodec/vc1.c b/libavcodec/vc1.c index a7f2aab209d..8eba65c1d04 100644 --- a/libavcodec/vc1.c +++ b/libavcodec/vc1.c @@ -24,22 +24,18 @@ /** * @file * VC-1 and WMV3 decoder common code - * */ #include "libavutil/attributes.h" #include "internal.h" #include "avcodec.h" #include "mpegvideo.h" +#include "unary_legacy.h" #include "vc1.h" #include "vc1data.h" -#include "msmpeg4data.h" -#include "unary.h" +#include "wmv2data.h" #include "simple_idct.h" -#undef NDEBUG -#include - /***********************************************************************/ /** * @name VC-1 Bitplane decoding @@ -405,7 +401,7 @@ int ff_vc1_decode_sequence_header(AVCodecContext *avctx, VC1Context *v, GetBitCo "Profile %i:\nfrmrtq_postproc=%i, bitrtq_postproc=%i\n" "LoopFilter=%i, MultiRes=%i, FastUVMC=%i, Extended MV=%i\n" "Rangered=%i, VSTransform=%i, Overlap=%i, SyncMarker=%i\n" - "DQuant=%i, Quantizer mode=%i, Max B frames=%i\n", + "DQuant=%i, Quantizer mode=%i, Max B-frames=%i\n", v->profile, v->frmrtq_postproc, v->bitrtq_postproc, v->s.loop_filter, v->multires, v->fastuvmc, v->extended_mv, v->rangered, v->vstransform, v->overlap, v->resync_marker, @@ -478,25 +474,26 @@ static int decode_sequence_header_adv(VC1Context *v, GetBitContext *gb) v->s.avctx->width * h, 1 << 30); } + ff_set_sar(v->s.avctx, v->s.avctx->sample_aspect_ratio); av_log(v->s.avctx, AV_LOG_DEBUG, "Aspect: %i:%i\n", v->s.avctx->sample_aspect_ratio.num, v->s.avctx->sample_aspect_ratio.den); if (get_bits1(gb)) { //framerate stuff if (get_bits1(gb)) { - v->s.avctx->time_base.num = 32; - v->s.avctx->time_base.den = get_bits(gb, 16) + 1; + v->s.avctx->framerate.den = 32; + v->s.avctx->framerate.num = get_bits(gb, 16) + 1; } else { int nr, dr; nr = get_bits(gb, 8); dr = get_bits(gb, 4); if (nr > 0 && nr < 8 && dr > 0 && dr < 3) { - v->s.avctx->time_base.num = ff_vc1_fps_dr[dr - 1]; - v->s.avctx->time_base.den = ff_vc1_fps_nr[nr - 1] * 1000; + v->s.avctx->framerate.den = ff_vc1_fps_dr[dr - 1]; + v->s.avctx->framerate.num = ff_vc1_fps_nr[nr - 1] * 1000; } } if (v->broadcast) { // Pulldown may be present - v->s.avctx->time_base.den *= 2; + v->s.avctx->framerate.num *= 2; v->s.avctx->ticks_per_frame = 2; } } @@ -702,7 +699,7 @@ int ff_vc1_parse_frame_header(VC1Context *v, GetBitContext* gb) v->x8_type = get_bits1(gb); } else v->x8_type = 0; - av_dlog(v->s.avctx, "%c Frame: QP=[%i]%i (+%i/2) %i\n", + ff_dlog(v->s.avctx, "%c Frame: QP=[%i]%i (+%i/2) %i\n", (v->s.pict_type == AV_PICTURE_TYPE_P) ? 'P' : ((v->s.pict_type == AV_PICTURE_TYPE_I) ? 'I' : 'B'), pqindex, v->pq, v->halfpq, v->rangeredfrm); @@ -756,7 +753,7 @@ int ff_vc1_parse_frame_header(VC1Context *v, GetBitContext* gb) av_log(v->s.avctx, AV_LOG_DEBUG, "MB Skip plane encoding: " "Imode: %i, Invert: %i\n", status>>1, status&1); - /* Hopefully this is correct for P frames */ + /* Hopefully this is correct for P-frames */ v->s.mv_table_index = get_bits(gb, 2); //but using ff_vc1_ tables v->cbpcy_vlc = &ff_vc1_cbpcy_p_vlc[get_bits(gb, 2)]; @@ -848,7 +845,7 @@ int ff_vc1_parse_frame_header_adv(VC1Context *v, GetBitContext* gb) v->s.pict_type = (v->fptype & 1) ? AV_PICTURE_TYPE_P : AV_PICTURE_TYPE_I; if (v->fptype & 4) v->s.pict_type = (v->fptype & 1) ? AV_PICTURE_TYPE_BI : AV_PICTURE_TYPE_B; - v->s.current_picture_ptr->f.pict_type = v->s.pict_type; + v->s.current_picture_ptr->f->pict_type = v->s.pict_type; if (!v->pic_header_flag) goto parse_common_info; } @@ -1139,7 +1136,7 @@ int ff_vc1_parse_frame_header_adv(VC1Context *v, GetBitContext* gb) av_log(v->s.avctx, AV_LOG_DEBUG, "MB Skip plane encoding: " "Imode: %i, Invert: %i\n", status>>1, status&1); - /* Hopefully this is correct for P frames */ + /* Hopefully this is correct for P-frames */ v->s.mv_table_index = get_bits(gb, 2); //but using ff_vc1_ tables v->cbpcy_vlc = &ff_vc1_cbpcy_p_vlc[get_bits(gb, 2)]; } else if (v->fcm == ILACE_FRAME) { // frame interlaced @@ -1687,5 +1684,7 @@ av_cold int ff_vc1_init_common(VC1Context *v) v->pq = -1; v->mvrange = 0; /* 7.1.1.18, p80 */ + ff_vc1dsp_init(&v->vc1dsp); + return 0; }