aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/idctdsp.c
diff options
context:
space:
mode:
authorDiego Biurrun <diego@biurrun.de>2014-08-31 11:45:15 -0700
committerDiego Biurrun <diego@biurrun.de>2014-09-02 14:41:13 -0700
commit95c0cec03acec0a80cc1c7db48f3b2355d9e767b (patch)
treee1ad21afa12a7f9b90b9d14ca0102bc7ab5b5904 /libavcodec/idctdsp.c
parent91d305790ea0f6fe0f54b48236da42181c39c18b (diff)
downloadffmpeg-95c0cec03acec0a80cc1c7db48f3b2355d9e767b.tar.gz
idctdsp: Add global function pointers for {add|put}_pixels_clamped functions
These function pointers already existed in the ARM code. Adding them globally allows calls to the function pointers to access arch-optimized versions of the functions transparently.
Diffstat (limited to 'libavcodec/idctdsp.c')
-rw-r--r--libavcodec/idctdsp.c22
1 files changed, 8 insertions, 14 deletions
diff --git a/libavcodec/idctdsp.c b/libavcodec/idctdsp.c
index 6beb2b2acc..2a979bc581 100644
--- a/libavcodec/idctdsp.c
+++ b/libavcodec/idctdsp.c
@@ -79,6 +79,9 @@ av_cold void ff_init_scantable_permutation(uint8_t *idct_permutation,
}
}
+void (*ff_put_pixels_clamped)(const int16_t *block, uint8_t *pixels, int line_size);
+void (*ff_add_pixels_clamped)(const int16_t *block, uint8_t *pixels, int line_size);
+
static void put_pixels_clamped_c(const int16_t *block, uint8_t *restrict pixels,
int line_size)
{
@@ -141,18 +144,6 @@ static void add_pixels_clamped_c(const int16_t *block, uint8_t *restrict pixels,
}
}
-static void jref_idct_put(uint8_t *dest, int line_size, int16_t *block)
-{
- ff_j_rev_dct(block);
- put_pixels_clamped_c(block, dest, line_size);
-}
-
-static void jref_idct_add(uint8_t *dest, int line_size, int16_t *block)
-{
- ff_j_rev_dct(block);
- add_pixels_clamped_c(block, dest, line_size);
-}
-
av_cold void ff_idctdsp_init(IDCTDSPContext *c, AVCodecContext *avctx)
{
const unsigned high_bit_depth = avctx->bits_per_raw_sample > 8;
@@ -163,8 +154,8 @@ av_cold void ff_idctdsp_init(IDCTDSPContext *c, AVCodecContext *avctx)
c->idct = ff_simple_idct_10;
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;
} else if (avctx->idct_algo == FF_IDCT_FAAN) {
@@ -183,6 +174,9 @@ av_cold void ff_idctdsp_init(IDCTDSPContext *c, AVCodecContext *avctx)
c->put_signed_pixels_clamped = put_signed_pixels_clamped_c;
c->add_pixels_clamped = add_pixels_clamped_c;
+ ff_put_pixels_clamped = c->put_pixels_clamped;
+ ff_add_pixels_clamped = c->add_pixels_clamped;
+
if (ARCH_ARM)
ff_idctdsp_init_arm(c, avctx, high_bit_depth);
if (ARCH_PPC)