[FFmpeg-devel] [PATCH] avcodec/idctdsp: make add/put_pixels_clamped_c internal functions
James Almer
jamrial at gmail.com
Wed Aug 13 01:19:24 CEST 2014
This reduces code duplication and differences with the fork.
Signed-off-by: James Almer <jamrial at gmail.com>
---
Fix for the ARM hack untested.
libavcodec/arm/idctdsp_init_arm.c | 16 ++++++-------
libavcodec/idctdsp.c | 49 +++++++++++++++++++++++++++++++++++----
libavcodec/idctdsp.h | 46 ++++--------------------------------
libavcodec/xvididct.c | 4 ++--
4 files changed, 60 insertions(+), 55 deletions(-)
diff --git a/libavcodec/arm/idctdsp_init_arm.c b/libavcodec/arm/idctdsp_init_arm.c
index 578697e..0a983bf 100644
--- a/libavcodec/arm/idctdsp_init_arm.c
+++ b/libavcodec/arm/idctdsp_init_arm.c
@@ -30,8 +30,8 @@
#include "idctdsp_arm.h"
/* XXX: local hack */
-static void (*ff_put_pixels_clamped)(const int16_t *block, uint8_t *pixels, int line_size);
-static void (*ff_add_pixels_clamped)(const int16_t *block, uint8_t *pixels, int line_size);
+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 +41,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);
- ff_put_pixels_clamped(block, dest, line_size);
+ 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);
- ff_add_pixels_clamped(block, dest, line_size);
+ 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);
- ff_put_pixels_clamped(block, dest, line_size);
+ 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);
- ff_add_pixels_clamped(block, dest, line_size);
+ add_pixels_clamped(block, dest, line_size);
}
av_cold void ff_idctdsp_init_arm(IDCTDSPContext *c, AVCodecContext *avctx,
@@ -67,8 +67,8 @@ av_cold void ff_idctdsp_init_arm(IDCTDSPContext *c, AVCodecContext *avctx,
{
int cpu_flags = av_get_cpu_flags();
- ff_put_pixels_clamped = c->put_pixels_clamped;
- ff_add_pixels_clamped = c->add_pixels_clamped;
+ 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)) ||
diff --git a/libavcodec/idctdsp.c b/libavcodec/idctdsp.c
index 4ca0734..f139bac 100644
--- a/libavcodec/idctdsp.c
+++ b/libavcodec/idctdsp.c
@@ -80,6 +80,27 @@ 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)
+{
+ int i;
+
+ /* read the pixels */
+ for (i = 0; i < 8; i++) {
+ pixels[0] = av_clip_uint8(block[0]);
+ pixels[1] = av_clip_uint8(block[1]);
+ pixels[2] = av_clip_uint8(block[2]);
+ pixels[3] = av_clip_uint8(block[3]);
+ pixels[4] = av_clip_uint8(block[4]);
+ pixels[5] = av_clip_uint8(block[5]);
+ pixels[6] = av_clip_uint8(block[6]);
+ pixels[7] = av_clip_uint8(block[7]);
+
+ pixels += line_size;
+ block += 8;
+ }
+}
+
static void put_pixels_clamped4_c(const int16_t *block, uint8_t *av_restrict pixels,
int line_size)
{
@@ -133,6 +154,26 @@ 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)
+{
+ int i;
+
+ /* read the pixels */
+ for (i = 0; i < 8; i++) {
+ pixels[0] = av_clip_uint8(pixels[0] + block[0]);
+ pixels[1] = av_clip_uint8(pixels[1] + block[1]);
+ pixels[2] = av_clip_uint8(pixels[2] + block[2]);
+ pixels[3] = av_clip_uint8(pixels[3] + block[3]);
+ pixels[4] = av_clip_uint8(pixels[4] + block[4]);
+ pixels[5] = av_clip_uint8(pixels[5] + block[5]);
+ pixels[6] = av_clip_uint8(pixels[6] + block[6]);
+ pixels[7] = av_clip_uint8(pixels[7] + block[7]);
+ pixels += line_size;
+ block += 8;
+ }
+}
+
static void add_pixels_clamped4_c(const int16_t *block, uint8_t *av_restrict pixels,
int line_size)
{
@@ -166,13 +207,13 @@ 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);
- put_pixels_clamped_c(block, dest, line_size);
+ 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);
- add_pixels_clamped_c(block, dest, line_size);
+ ff_add_pixels_clamped(block, dest, line_size);
}
static void ff_jref_idct4_put(uint8_t *dest, int line_size, int16_t *block)
{
@@ -255,9 +296,9 @@ av_cold void ff_idctdsp_init(IDCTDSPContext *c, AVCodecContext *avctx)
}
}
- c->put_pixels_clamped = put_pixels_clamped_c;
+ c->put_pixels_clamped = ff_put_pixels_clamped;
c->put_signed_pixels_clamped = put_signed_pixels_clamped_c;
- c->add_pixels_clamped = add_pixels_clamped_c;
+ c->add_pixels_clamped = ff_add_pixels_clamped;
if (CONFIG_MPEG4_DECODER && avctx->idct_algo == FF_IDCT_XVID)
ff_xvididct_init(c, avctx);
diff --git a/libavcodec/idctdsp.h b/libavcodec/idctdsp.h
index bd5e875..9df13c5 100644
--- a/libavcodec/idctdsp.h
+++ b/libavcodec/idctdsp.h
@@ -48,6 +48,11 @@ 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 */,
@@ -106,45 +111,4 @@ void ff_idctdsp_init_ppc(IDCTDSPContext *c, AVCodecContext *avctx,
void ff_idctdsp_init_x86(IDCTDSPContext *c, AVCodecContext *avctx,
unsigned high_bit_depth);
-static inline void put_pixels_clamped_c(const int16_t *block, uint8_t *av_restrict pixels,
- int line_size)
-{
- int i;
-
- /* read the pixels */
- for (i = 0; i < 8; i++) {
- pixels[0] = av_clip_uint8(block[0]);
- pixels[1] = av_clip_uint8(block[1]);
- pixels[2] = av_clip_uint8(block[2]);
- pixels[3] = av_clip_uint8(block[3]);
- pixels[4] = av_clip_uint8(block[4]);
- pixels[5] = av_clip_uint8(block[5]);
- pixels[6] = av_clip_uint8(block[6]);
- pixels[7] = av_clip_uint8(block[7]);
-
- pixels += line_size;
- block += 8;
- }
-}
-
-static inline void add_pixels_clamped_c(const int16_t *block, uint8_t *av_restrict pixels,
- int line_size)
-{
- int i;
-
- /* read the pixels */
- for (i = 0; i < 8; i++) {
- pixels[0] = av_clip_uint8(pixels[0] + block[0]);
- pixels[1] = av_clip_uint8(pixels[1] + block[1]);
- pixels[2] = av_clip_uint8(pixels[2] + block[2]);
- pixels[3] = av_clip_uint8(pixels[3] + block[3]);
- pixels[4] = av_clip_uint8(pixels[4] + block[4]);
- pixels[5] = av_clip_uint8(pixels[5] + block[5]);
- pixels[6] = av_clip_uint8(pixels[6] + block[6]);
- pixels[7] = av_clip_uint8(pixels[7] + block[7]);
- pixels += line_size;
- block += 8;
- }
-}
-
#endif /* AVCODEC_IDCTDSP_H */
diff --git a/libavcodec/xvididct.c b/libavcodec/xvididct.c
index ac10d2d..d781f79 100644
--- a/libavcodec/xvididct.c
+++ b/libavcodec/xvididct.c
@@ -25,13 +25,13 @@
static void idct_xvid_put(uint8_t *dest, int line_size, int16_t *block)
{
ff_idct_xvid(block);
- put_pixels_clamped_c(block, dest, line_size);
+ ff_put_pixels_clamped(block, dest, line_size);
}
static void idct_xvid_add(uint8_t *dest, int line_size, int16_t *block)
{
ff_idct_xvid(block);
- add_pixels_clamped_c(block, dest, line_size);
+ ff_add_pixels_clamped(block, dest, line_size);
}
av_cold void ff_xvididct_init(IDCTDSPContext *c, AVCodecContext *avctx)
--
1.8.5.5
More information about the ffmpeg-devel
mailing list