aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDiego Biurrun <diego@biurrun.de>2013-12-18 23:27:35 +0100
committerDiego Biurrun <diego@biurrun.de>2014-03-26 04:31:27 -0700
commitda5be235250a61d6994408b054e3e3acf2e0f90f (patch)
treeb8f1b0327563dc5ba10721d1feb782da966d4f9f
parent8011ac911b3f282b9fb64a0fc15404f8bfc7b7ed (diff)
downloadffmpeg-da5be235250a61d6994408b054e3e3acf2e0f90f.tar.gz
dsputil: Move RV40-specific bits into rv40dsp
-rw-r--r--libavcodec/dsputil.c22
-rw-r--r--libavcodec/dsputil.h6
-rw-r--r--libavcodec/dsputil_template.c52
-rw-r--r--libavcodec/rv40dsp.c90
4 files changed, 85 insertions, 85 deletions
diff --git a/libavcodec/dsputil.c b/libavcodec/dsputil.c
index 4a2011a5ef..843c244e5b 100644
--- a/libavcodec/dsputil.c
+++ b/libavcodec/dsputil.c
@@ -1250,28 +1250,6 @@ static void wmv2_mspel8_h_lowpass(uint8_t *dst, uint8_t *src,
}
}
-#if CONFIG_RV40_DECODER
-void ff_put_rv40_qpel16_mc33_c(uint8_t *dst, uint8_t *src, ptrdiff_t stride)
-{
- put_pixels16_xy2_8_c(dst, src, stride, 16);
-}
-
-void ff_avg_rv40_qpel16_mc33_c(uint8_t *dst, uint8_t *src, ptrdiff_t stride)
-{
- avg_pixels16_xy2_8_c(dst, src, stride, 16);
-}
-
-void ff_put_rv40_qpel8_mc33_c(uint8_t *dst, uint8_t *src, ptrdiff_t stride)
-{
- put_pixels8_xy2_8_c(dst, src, stride, 8);
-}
-
-void ff_avg_rv40_qpel8_mc33_c(uint8_t *dst, uint8_t *src, ptrdiff_t stride)
-{
- avg_pixels8_xy2_8_c(dst, src, stride, 8);
-}
-#endif /* CONFIG_RV40_DECODER */
-
static void wmv2_mspel8_v_lowpass(uint8_t *dst, uint8_t *src,
int dstStride, int srcStride, int w)
{
diff --git a/libavcodec/dsputil.h b/libavcodec/dsputil.h
index 052ac50694..7f467d16ff 100644
--- a/libavcodec/dsputil.h
+++ b/libavcodec/dsputil.h
@@ -44,12 +44,6 @@ void ff_avg_pixels8x8_c(uint8_t *dst, uint8_t *src, ptrdiff_t stride);
void ff_put_pixels16x16_c(uint8_t *dst, uint8_t *src, ptrdiff_t stride);
void ff_avg_pixels16x16_c(uint8_t *dst, uint8_t *src, ptrdiff_t stride);
-/* RV40 functions */
-void ff_put_rv40_qpel16_mc33_c(uint8_t *dst, uint8_t *src, ptrdiff_t stride);
-void ff_avg_rv40_qpel16_mc33_c(uint8_t *dst, uint8_t *src, ptrdiff_t stride);
-void ff_put_rv40_qpel8_mc33_c(uint8_t *dst, uint8_t *src, ptrdiff_t stride);
-void ff_avg_rv40_qpel8_mc33_c(uint8_t *dst, uint8_t *src, ptrdiff_t stride);
-
void ff_gmc_c(uint8_t *dst, uint8_t *src, int stride, int h, int ox, int oy,
int dxx, int dxy, int dyx, int dyy, int shift, int r,
int width, int height);
diff --git a/libavcodec/dsputil_template.c b/libavcodec/dsputil_template.c
index 7d8ae1557d..8085078706 100644
--- a/libavcodec/dsputil_template.c
+++ b/libavcodec/dsputil_template.c
@@ -253,58 +253,6 @@ static inline void OPNAME ## _no_rnd_pixels16_l4_8(uint8_t *dst, \
src_stride2, src_stride3, \
src_stride4, h); \
} \
- \
-static inline void OPNAME ## _pixels8_xy2_8_c(uint8_t *block, \
- const uint8_t *pixels, \
- ptrdiff_t line_size, \
- int h) \
-{ \
- /* FIXME HIGH BIT DEPTH */ \
- int j; \
- \
- for (j = 0; j < 2; j++) { \
- int i; \
- const uint32_t a = AV_RN32(pixels); \
- const uint32_t b = AV_RN32(pixels + 1); \
- uint32_t l0 = (a & 0x03030303UL) + \
- (b & 0x03030303UL) + \
- 0x02020202UL; \
- uint32_t h0 = ((a & 0xFCFCFCFCUL) >> 2) + \
- ((b & 0xFCFCFCFCUL) >> 2); \
- uint32_t l1, h1; \
- \
- pixels += line_size; \
- for (i = 0; i < h; i += 2) { \
- uint32_t a = AV_RN32(pixels); \
- uint32_t b = AV_RN32(pixels + 1); \
- l1 = (a & 0x03030303UL) + \
- (b & 0x03030303UL); \
- h1 = ((a & 0xFCFCFCFCUL) >> 2) + \
- ((b & 0xFCFCFCFCUL) >> 2); \
- OP(*((uint32_t *) block), \
- h0 + h1 + (((l0 + l1) >> 2) & 0x0F0F0F0FUL)); \
- pixels += line_size; \
- block += line_size; \
- a = AV_RN32(pixels); \
- b = AV_RN32(pixels + 1); \
- l0 = (a & 0x03030303UL) + \
- (b & 0x03030303UL) + \
- 0x02020202UL; \
- h0 = ((a & 0xFCFCFCFCUL) >> 2) + \
- ((b & 0xFCFCFCFCUL) >> 2); \
- OP(*((uint32_t *) block), \
- h0 + h1 + (((l0 + l1) >> 2) & 0x0F0F0F0FUL)); \
- pixels += line_size; \
- block += line_size; \
- } \
- pixels += 4 - line_size * (h + 1); \
- block += 4 - line_size * h; \
- } \
-} \
- \
-CALL_2X_PIXELS(OPNAME ## _pixels16_xy2_8_c, \
- OPNAME ## _pixels8_xy2_8_c, \
- 8) \
#define op_avg(a, b) a = rnd_avg32(a, b)
#define op_put(a, b) a = b
diff --git a/libavcodec/rv40dsp.c b/libavcodec/rv40dsp.c
index 122d14dc3a..cca0294261 100644
--- a/libavcodec/rv40dsp.c
+++ b/libavcodec/rv40dsp.c
@@ -24,11 +24,14 @@
* RV40 decoder motion compensation functions
*/
+#include "libavutil/common.h"
+#include "libavutil/intreadwrite.h"
#include "avcodec.h"
#include "h264qpel.h"
#include "mathops.h"
+#include "pixels.h"
+#include "rnd_avg.h"
#include "rv34dsp.h"
-#include "libavutil/common.h"
#define RV40_LOWPASS(OPNAME, OP) \
static av_unused void OPNAME ## rv40_qpel8_h_lowpass(uint8_t *dst, uint8_t *src, int dstStride, int srcStride,\
@@ -203,6 +206,83 @@ RV40_MC(put_, 16)
RV40_MC(avg_, 8)
RV40_MC(avg_, 16)
+#define PIXOP2(OPNAME, OP) \
+static inline void OPNAME ## _pixels8_xy2_8_c(uint8_t *block, \
+ const uint8_t *pixels, \
+ ptrdiff_t line_size, \
+ int h) \
+{ \
+ /* FIXME HIGH BIT DEPTH */ \
+ int j; \
+ \
+ for (j = 0; j < 2; j++) { \
+ int i; \
+ const uint32_t a = AV_RN32(pixels); \
+ const uint32_t b = AV_RN32(pixels + 1); \
+ uint32_t l0 = (a & 0x03030303UL) + \
+ (b & 0x03030303UL) + \
+ 0x02020202UL; \
+ uint32_t h0 = ((a & 0xFCFCFCFCUL) >> 2) + \
+ ((b & 0xFCFCFCFCUL) >> 2); \
+ uint32_t l1, h1; \
+ \
+ pixels += line_size; \
+ for (i = 0; i < h; i += 2) { \
+ uint32_t a = AV_RN32(pixels); \
+ uint32_t b = AV_RN32(pixels + 1); \
+ l1 = (a & 0x03030303UL) + \
+ (b & 0x03030303UL); \
+ h1 = ((a & 0xFCFCFCFCUL) >> 2) + \
+ ((b & 0xFCFCFCFCUL) >> 2); \
+ OP(*((uint32_t *) block), \
+ h0 + h1 + (((l0 + l1) >> 2) & 0x0F0F0F0FUL)); \
+ pixels += line_size; \
+ block += line_size; \
+ a = AV_RN32(pixels); \
+ b = AV_RN32(pixels + 1); \
+ l0 = (a & 0x03030303UL) + \
+ (b & 0x03030303UL) + \
+ 0x02020202UL; \
+ h0 = ((a & 0xFCFCFCFCUL) >> 2) + \
+ ((b & 0xFCFCFCFCUL) >> 2); \
+ OP(*((uint32_t *) block), \
+ h0 + h1 + (((l0 + l1) >> 2) & 0x0F0F0F0FUL)); \
+ pixels += line_size; \
+ block += line_size; \
+ } \
+ pixels += 4 - line_size * (h + 1); \
+ block += 4 - line_size * h; \
+ } \
+} \
+ \
+CALL_2X_PIXELS(OPNAME ## _pixels16_xy2_8_c, \
+ OPNAME ## _pixels8_xy2_8_c, \
+ 8) \
+
+#define op_avg(a, b) a = rnd_avg32(a, b)
+#define op_put(a, b) a = b
+PIXOP2(avg, op_avg)
+PIXOP2(put, op_put)
+#undef op_avg
+#undef op_put
+
+static void put_rv40_qpel16_mc33_c(uint8_t *dst, uint8_t *src, ptrdiff_t stride)
+{
+ put_pixels16_xy2_8_c(dst, src, stride, 16);
+}
+static void avg_rv40_qpel16_mc33_c(uint8_t *dst, uint8_t *src, ptrdiff_t stride)
+{
+ avg_pixels16_xy2_8_c(dst, src, stride, 16);
+}
+static void put_rv40_qpel8_mc33_c(uint8_t *dst, uint8_t *src, ptrdiff_t stride)
+{
+ put_pixels8_xy2_8_c(dst, src, stride, 8);
+}
+static void avg_rv40_qpel8_mc33_c(uint8_t *dst, uint8_t *src, ptrdiff_t stride)
+{
+ avg_pixels8_xy2_8_c(dst, src, stride, 8);
+}
+
static const int rv40_bias[4][4] = {
{ 0, 16, 32, 16 },
{ 32, 28, 32, 28 },
@@ -552,7 +632,7 @@ av_cold void ff_rv40dsp_init(RV34DSPContext *c)
c->put_pixels_tab[0][12] = put_rv40_qpel16_mc03_c;
c->put_pixels_tab[0][13] = put_rv40_qpel16_mc13_c;
c->put_pixels_tab[0][14] = put_rv40_qpel16_mc23_c;
- c->put_pixels_tab[0][15] = ff_put_rv40_qpel16_mc33_c;
+ c->put_pixels_tab[0][15] = put_rv40_qpel16_mc33_c;
c->avg_pixels_tab[0][ 0] = qpel.avg_h264_qpel_pixels_tab[0][0];
c->avg_pixels_tab[0][ 1] = avg_rv40_qpel16_mc10_c;
c->avg_pixels_tab[0][ 2] = qpel.avg_h264_qpel_pixels_tab[0][2];
@@ -568,7 +648,7 @@ av_cold void ff_rv40dsp_init(RV34DSPContext *c)
c->avg_pixels_tab[0][12] = avg_rv40_qpel16_mc03_c;
c->avg_pixels_tab[0][13] = avg_rv40_qpel16_mc13_c;
c->avg_pixels_tab[0][14] = avg_rv40_qpel16_mc23_c;
- c->avg_pixels_tab[0][15] = ff_avg_rv40_qpel16_mc33_c;
+ c->avg_pixels_tab[0][15] = avg_rv40_qpel16_mc33_c;
c->put_pixels_tab[1][ 0] = qpel.put_h264_qpel_pixels_tab[1][0];
c->put_pixels_tab[1][ 1] = put_rv40_qpel8_mc10_c;
c->put_pixels_tab[1][ 2] = qpel.put_h264_qpel_pixels_tab[1][2];
@@ -584,7 +664,7 @@ av_cold void ff_rv40dsp_init(RV34DSPContext *c)
c->put_pixels_tab[1][12] = put_rv40_qpel8_mc03_c;
c->put_pixels_tab[1][13] = put_rv40_qpel8_mc13_c;
c->put_pixels_tab[1][14] = put_rv40_qpel8_mc23_c;
- c->put_pixels_tab[1][15] = ff_put_rv40_qpel8_mc33_c;
+ c->put_pixels_tab[1][15] = put_rv40_qpel8_mc33_c;
c->avg_pixels_tab[1][ 0] = qpel.avg_h264_qpel_pixels_tab[1][0];
c->avg_pixels_tab[1][ 1] = avg_rv40_qpel8_mc10_c;
c->avg_pixels_tab[1][ 2] = qpel.avg_h264_qpel_pixels_tab[1][2];
@@ -600,7 +680,7 @@ av_cold void ff_rv40dsp_init(RV34DSPContext *c)
c->avg_pixels_tab[1][12] = avg_rv40_qpel8_mc03_c;
c->avg_pixels_tab[1][13] = avg_rv40_qpel8_mc13_c;
c->avg_pixels_tab[1][14] = avg_rv40_qpel8_mc23_c;
- c->avg_pixels_tab[1][15] = ff_avg_rv40_qpel8_mc33_c;
+ c->avg_pixels_tab[1][15] = avg_rv40_qpel8_mc33_c;
c->put_chroma_pixels_tab[0] = put_rv40_chroma_mc8_c;
c->put_chroma_pixels_tab[1] = put_rv40_chroma_mc4_c;