diff --git a/libavcodec/bfin/dsputil_bfin.c b/libavcodec/bfin/dsputil_bfin.c index 1a8ae3b505..4641c3b0b5 100644 --- a/libavcodec/bfin/dsputil_bfin.c +++ b/libavcodec/bfin/dsputil_bfin.c @@ -293,13 +293,16 @@ void dsputil_init_bfin( DSPContext* c, AVCodecContext *avctx ) c->put_no_rnd_pixels_tab[0][2] = bfin_put_pixels16_y2_nornd; c->put_no_rnd_pixels_tab[0][3] = ff_bfin_put_pixels16_xy2_nornd; - c->idct_permutation_type = FF_NO_IDCT_PERM; - c->fdct = ff_bfin_fdct; + if (avctx->dct_algo == FF_DCT_AUTO) + c->fdct = ff_bfin_fdct; + if (avctx->idct_algo==FF_IDCT_VP3) { + c->idct_permutation_type = FF_NO_IDCT_PERM; c->idct = ff_bfin_vp3_idct; c->idct_add = ff_bfin_vp3_idct_add; c->idct_put = ff_bfin_vp3_idct_put; - } else { + } else if (avctx->idct_algo == FF_IDCT_AUTO) { + c->idct_permutation_type = FF_NO_IDCT_PERM; c->idct = ff_bfin_idct; c->idct_add = bfin_idct_add; c->idct_put = bfin_idct_put;