X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=libavcodec%2Fmpc8.c;h=379528e9bd40b9866982d9f6b8c3b714387fd145;hb=a4914ac70880784d0e9bee814afac1235d1cd92b;hp=adee15f53487a6153d846338e8737cb79646ee62;hpb=bd4110f99b6c4ce3a7fc134206404489dc8e41a6;p=ffmpeg diff --git a/libavcodec/mpc8.c b/libavcodec/mpc8.c index adee15f5348..379528e9bd4 100644 --- a/libavcodec/mpc8.c +++ b/libavcodec/mpc8.c @@ -44,7 +44,8 @@ static const int quant_offsets[6] = { MPC8_Q5_OFFSET, MPC8_Q6_OFFSET, MPC8_Q7_OF static inline int mpc8_dec_base(GetBitContext *gb, int k, int n) { - int code = get_bits(gb, mpc8_cnk_len[k-1][n-1] - 1); + int len = mpc8_cnk_len[k-1][n-1] - 1; + int code = len ? get_bits_long(gb, len) : 0; if (code >= mpc8_cnk_lost[k-1][n-1]) code = ((code << 1) | get_bits1(gb)) - mpc8_cnk_lost[k-1][n-1]; @@ -88,7 +89,7 @@ static int mpc8_get_mask(GetBitContext *gb, int size, int t) return mask; } -static int vlc_offsets[13] = { +static const uint16_t vlc_offsets[13] = { 0, 640, 1184, 1748, 2298, 2426, 2554, 3066, 3578, 4106, 4618, 5196, 5708 }; @@ -128,6 +129,9 @@ static av_cold int mpc8_decode_init(AVCodecContext * avctx) c->MSS = get_bits1(&gb); c->frames = 1 << (get_bits(&gb, 3) * 2); + avctx->sample_fmt = SAMPLE_FMT_S16; + avctx->channel_layout = (avctx->channels==2) ? CH_LAYOUT_STEREO : CH_LAYOUT_MONO; + if(vlc_initialized) return 0; av_log(avctx, AV_LOG_DEBUG, "Initing VLC\n"); @@ -218,8 +222,6 @@ static av_cold int mpc8_decode_init(AVCodecContext * avctx) &mpc8_q8_codes[i], 1, 1, INIT_VLC_USE_NEW_STATIC); } vlc_initialized = 1; - avctx->sample_fmt = SAMPLE_FMT_S16; - avctx->channel_layout = (avctx->channels==2) ? CH_LAYOUT_STEREO : CH_LAYOUT_MONO; return 0; }