diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2014-09-03 03:18:07 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2014-09-03 03:19:40 +0200 |
commit | 5db23c07a3f76d31e8e3178f8bacb68289bba62b (patch) | |
tree | e798d3c254a0cc5a38b7e5f78864326919516602 /libavcodec | |
parent | 9e59a7be1cc9bd840d91f78c55b7f4953659319b (diff) | |
parent | 95c0cec03acec0a80cc1c7db48f3b2355d9e767b (diff) | |
download | ffmpeg-5db23c07a3f76d31e8e3178f8bacb68289bba62b.tar.gz |
Merge commit '95c0cec03acec0a80cc1c7db48f3b2355d9e767b'
* commit '95c0cec03acec0a80cc1c7db48f3b2355d9e767b':
idctdsp: Add global function pointers for {add|put}_pixels_clamped functions
Conflicts:
libavcodec/arm/idctdsp_init_arm.c
libavcodec/dct.h
libavcodec/idctdsp.c
libavcodec/jrevdct.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/arm/idctdsp_init_arm.c | 15 | ||||
-rw-r--r-- | libavcodec/dct.h | 2 | ||||
-rw-r--r-- | libavcodec/idctdsp.c | 33 | ||||
-rw-r--r-- | libavcodec/idctdsp.h | 8 | ||||
-rw-r--r-- | libavcodec/jrevdct.c | 14 | ||||
-rw-r--r-- | libavcodec/x86/simple_idct.c | 7 |
6 files changed, 42 insertions, 37 deletions
diff --git a/libavcodec/arm/idctdsp_init_arm.c b/libavcodec/arm/idctdsp_init_arm.c index 0a983bfac4..2d846dc5bd 100644 --- a/libavcodec/arm/idctdsp_init_arm.c +++ b/libavcodec/arm/idctdsp_init_arm.c @@ -29,10 +29,6 @@ #include "idct.h" #include "idctdsp_arm.h" -/* XXX: local hack */ -static void (*put_pixels_clamped)(const int16_t *block, uint8_t *pixels, int line_size); -static void (*add_pixels_clamped)(const int16_t *block, uint8_t *pixels, int line_size); - void ff_add_pixels_clamped_arm(const int16_t *block, uint8_t *dest, int line_size); @@ -41,25 +37,25 @@ void ff_add_pixels_clamped_arm(const int16_t *block, uint8_t *dest, static void j_rev_dct_arm_put(uint8_t *dest, int line_size, int16_t *block) { ff_j_rev_dct_arm(block); - put_pixels_clamped(block, dest, line_size); + ff_put_pixels_clamped(block, dest, line_size); } static void j_rev_dct_arm_add(uint8_t *dest, int line_size, int16_t *block) { ff_j_rev_dct_arm(block); - add_pixels_clamped(block, dest, line_size); + ff_add_pixels_clamped(block, dest, line_size); } static void simple_idct_arm_put(uint8_t *dest, int line_size, int16_t *block) { ff_simple_idct_arm(block); - put_pixels_clamped(block, dest, line_size); + ff_put_pixels_clamped(block, dest, line_size); } static void simple_idct_arm_add(uint8_t *dest, int line_size, int16_t *block) { ff_simple_idct_arm(block); - add_pixels_clamped(block, dest, line_size); + ff_add_pixels_clamped(block, dest, line_size); } av_cold void ff_idctdsp_init_arm(IDCTDSPContext *c, AVCodecContext *avctx, @@ -67,9 +63,6 @@ av_cold void ff_idctdsp_init_arm(IDCTDSPContext *c, AVCodecContext *avctx, { int cpu_flags = av_get_cpu_flags(); - put_pixels_clamped = c->put_pixels_clamped; - add_pixels_clamped = c->add_pixels_clamped; - if (!avctx->lowres && !high_bit_depth) { if ((avctx->idct_algo == FF_IDCT_AUTO && !(avctx->flags & CODEC_FLAG_BITEXACT)) || avctx->idct_algo == FF_IDCT_ARM) { diff --git a/libavcodec/dct.h b/libavcodec/dct.h index 717f21bef3..05297ba9db 100644 --- a/libavcodec/dct.h +++ b/libavcodec/dct.h @@ -62,5 +62,7 @@ void ff_j_rev_dct(int16_t *data); void ff_j_rev_dct4(int16_t *data); void ff_j_rev_dct2(int16_t *data); void ff_j_rev_dct1(int16_t *data); +void ff_jref_idct_put(uint8_t *dest, int line_size, int16_t *block); +void ff_jref_idct_add(uint8_t *dest, int line_size, int16_t *block); #endif /* AVCODEC_DCT_H */ diff --git a/libavcodec/idctdsp.c b/libavcodec/idctdsp.c index 8311fab92f..cf12f1606a 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, 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 *av_restrict pixels, + int line_size) { int i; @@ -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, + int 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,8 +270,8 @@ 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; } else if (avctx->idct_algo == FF_IDCT_FAAN) { @@ -296,9 +288,12 @@ 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; + + ff_put_pixels_clamped = c->put_pixels_clamped; + ff_add_pixels_clamped = c->add_pixels_clamped; if (CONFIG_MPEG4_DECODER && avctx->idct_algo == FF_IDCT_XVID) ff_xvid_idct_init(c, avctx); diff --git a/libavcodec/idctdsp.h b/libavcodec/idctdsp.h index 9df13c5c5a..8d60656932 100644 --- a/libavcodec/idctdsp.h +++ b/libavcodec/idctdsp.h @@ -48,11 +48,6 @@ void ff_init_scantable_permutation(uint8_t *idct_permutation, int ff_init_scantable_permutation_x86(uint8_t *idct_permutation, enum idct_permutation_type perm_type); -void ff_put_pixels_clamped(const int16_t *block, uint8_t *av_restrict pixels, - int line_size); -void ff_add_pixels_clamped(const int16_t *block, uint8_t *av_restrict pixels, - int line_size); - typedef struct IDCTDSPContext { /* pixel ops : interface with DCT */ void (*put_pixels_clamped)(const int16_t *block /* align 16 */, @@ -100,6 +95,9 @@ typedef struct IDCTDSPContext { enum idct_permutation_type perm_type; } IDCTDSPContext; +extern void (*ff_put_pixels_clamped)(const int16_t *block, uint8_t *pixels, int line_size); +extern void (*ff_add_pixels_clamped)(const int16_t *block, uint8_t *pixels, int line_size); + void ff_idctdsp_init(IDCTDSPContext *c, AVCodecContext *avctx); void ff_idctdsp_init_alpha(IDCTDSPContext *c, AVCodecContext *avctx, diff --git a/libavcodec/jrevdct.c b/libavcodec/jrevdct.c index d4e6571acc..55a7392e98 100644 --- a/libavcodec/jrevdct.c +++ b/libavcodec/jrevdct.c @@ -63,7 +63,9 @@ */ #include "libavutil/common.h" + #include "dct.h" +#include "idctdsp.h" #define EIGHT_BIT_SAMPLES @@ -1153,3 +1155,15 @@ void ff_j_rev_dct1(DCTBLOCK data){ #undef FIX #undef CONST_BITS + +void ff_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); +} + +void ff_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); +} diff --git a/libavcodec/x86/simple_idct.c b/libavcodec/x86/simple_idct.c index 6b4bd1852e..1d46212a13 100644 --- a/libavcodec/x86/simple_idct.c +++ b/libavcodec/x86/simple_idct.c @@ -22,6 +22,9 @@ #include "libavutil/mem.h" #include "libavutil/x86/asm.h" + +#include "libavcodec/idctdsp.h" + #include "idctdsp.h" #include "simple_idct.h" @@ -1159,12 +1162,12 @@ void ff_simple_idct_mmx(int16_t *block) void ff_simple_idct_put_mmx(uint8_t *dest, int line_size, int16_t *block) { idct(block); - ff_put_pixels_clamped_mmx(block, dest, line_size); + ff_put_pixels_clamped(block, dest, line_size); } void ff_simple_idct_add_mmx(uint8_t *dest, int line_size, int16_t *block) { idct(block); - ff_add_pixels_clamped_mmx(block, dest, line_size); + ff_add_pixels_clamped(block, dest, line_size); } #endif /* HAVE_INLINE_ASM */ |