X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fidctdsp.c;h=b4972211de8674e753b074678bfe7e4530e49feb;hb=5672107ed6961a88fc550885e4c8703597eb345b;hp=8311fab92f79add7b0e7dbfd75190995adef10fc;hpb=f626eaa58e69532ff85044007b2ceb3ce8dd5ed2;p=ffmpeg diff --git a/libavcodec/idctdsp.c b/libavcodec/idctdsp.c index 8311fab92f7..b4972211de8 100644 --- a/libavcodec/idctdsp.c +++ b/libavcodec/idctdsp.c @@ -80,8 +80,11 @@ av_cold void ff_init_scantable_permutation(uint8_t *idct_permutation, } } -void ff_put_pixels_clamped(const int16_t *block, uint8_t *av_restrict pixels, - int line_size) +void (*ff_put_pixels_clamped)(const int16_t *block, uint8_t *pixels, ptrdiff_t line_size); +void (*ff_add_pixels_clamped)(const int16_t *block, uint8_t *pixels, ptrdiff_t line_size); + +static void put_pixels_clamped_c(const int16_t *block, uint8_t *av_restrict pixels, + ptrdiff_t line_size) { int i; @@ -135,7 +138,7 @@ static void put_pixels_clamped2_c(const int16_t *block, uint8_t *av_restrict pix static void put_signed_pixels_clamped_c(const int16_t *block, uint8_t *av_restrict pixels, - int line_size) + ptrdiff_t line_size) { int i, j; @@ -154,8 +157,8 @@ static void put_signed_pixels_clamped_c(const int16_t *block, } } -void ff_add_pixels_clamped(const int16_t *block, uint8_t *av_restrict pixels, - int line_size) +static void add_pixels_clamped_c(const int16_t *block, uint8_t *av_restrict pixels, + ptrdiff_t line_size) { int i; @@ -204,17 +207,6 @@ static void add_pixels_clamped2_c(const int16_t *block, uint8_t *av_restrict pix } } -static void jref_idct_put(uint8_t *dest, int line_size, int16_t *block) -{ - ff_j_rev_dct(block); - ff_put_pixels_clamped(block, dest, line_size); -} - -static void jref_idct_add(uint8_t *dest, int line_size, int16_t *block) -{ - ff_j_rev_dct(block); - ff_add_pixels_clamped(block, dest, line_size); -} static void ff_jref_idct4_put(uint8_t *dest, int line_size, int16_t *block) { ff_j_rev_dct4 (block); @@ -278,15 +270,17 @@ av_cold void ff_idctdsp_init(IDCTDSPContext *c, AVCodecContext *avctx) c->perm_type = FF_IDCT_PERM_NONE; } else { if (avctx->idct_algo == FF_IDCT_INT) { - c->idct_put = jref_idct_put; - c->idct_add = jref_idct_add; + c->idct_put = ff_jref_idct_put; + c->idct_add = ff_jref_idct_add; c->idct = ff_j_rev_dct; c->perm_type = FF_IDCT_PERM_LIBMPEG2; +#if CONFIG_FAANIDCT } else if (avctx->idct_algo == FF_IDCT_FAAN) { c->idct_put = ff_faanidct_put; c->idct_add = ff_faanidct_add; c->idct = ff_faanidct; c->perm_type = FF_IDCT_PERM_NONE; +#endif /* CONFIG_FAANIDCT */ } else { // accurate/default c->idct_put = ff_simple_idct_put_8; c->idct_add = ff_simple_idct_add_8; @@ -296,9 +290,9 @@ av_cold void ff_idctdsp_init(IDCTDSPContext *c, AVCodecContext *avctx) } } - c->put_pixels_clamped = ff_put_pixels_clamped; + c->put_pixels_clamped = put_pixels_clamped_c; c->put_signed_pixels_clamped = put_signed_pixels_clamped_c; - c->add_pixels_clamped = ff_add_pixels_clamped; + c->add_pixels_clamped = add_pixels_clamped_c; if (CONFIG_MPEG4_DECODER && avctx->idct_algo == FF_IDCT_XVID) ff_xvid_idct_init(c, avctx); @@ -312,6 +306,9 @@ av_cold void ff_idctdsp_init(IDCTDSPContext *c, AVCodecContext *avctx) if (ARCH_X86) ff_idctdsp_init_x86(c, avctx, high_bit_depth); + ff_put_pixels_clamped = c->put_pixels_clamped; + ff_add_pixels_clamped = c->add_pixels_clamped; + ff_init_scantable_permutation(c->idct_permutation, c->perm_type); }