[FFmpeg-devel] [PATCH v4 2/8] avcodec/hevcdsp_template: reuse put/put_luma/put_chroma from h2656_inter_template
toqsxw at outlook.com
toqsxw at outlook.com
Tue Jan 23 20:17:05 EET 2024
From: Wu Jianhua <toqsxw at outlook.com>
Signed-off-by: Wu Jianhua <toqsxw at outlook.com>
---
libavcodec/hevcdsp_template.c | 594 +++-------------------------------
1 file changed, 46 insertions(+), 548 deletions(-)
diff --git a/libavcodec/hevcdsp_template.c b/libavcodec/hevcdsp_template.c
index 0de14e9dcf..9b48bdf08e 100644
--- a/libavcodec/hevcdsp_template.c
+++ b/libavcodec/hevcdsp_template.c
@@ -26,6 +26,7 @@
#include "bit_depth_template.c"
#include "hevcdsp.h"
#include "h26x/h2656_sao_template.c"
+#include "h26x/h2656_inter_template.c"
static void FUNC(put_pcm)(uint8_t *_dst, ptrdiff_t stride, int width, int height,
GetBitContext *gb, int pcm_bit_depth)
@@ -299,37 +300,51 @@ IDCT_DC(32)
////////////////////////////////////////////////////////////////////////////////
//
////////////////////////////////////////////////////////////////////////////////
-static void FUNC(put_hevc_pel_pixels)(int16_t *dst,
- const uint8_t *_src, ptrdiff_t _srcstride,
- int height, intptr_t mx, intptr_t my, int width)
-{
- int x, y;
- const pixel *src = (const pixel *)_src;
- ptrdiff_t srcstride = _srcstride / sizeof(pixel);
-
- for (y = 0; y < height; y++) {
- for (x = 0; x < width; x++)
- dst[x] = src[x] << (14 - BIT_DEPTH);
- src += srcstride;
- dst += MAX_PB_SIZE;
- }
-}
-
-static void FUNC(put_hevc_pel_uni_pixels)(uint8_t *_dst, ptrdiff_t _dststride, const uint8_t *_src, ptrdiff_t _srcstride,
- int height, intptr_t mx, intptr_t my, int width)
-{
- int y;
- const pixel *src = (const pixel *)_src;
- ptrdiff_t srcstride = _srcstride / sizeof(pixel);
- pixel *dst = (pixel *)_dst;
- ptrdiff_t dststride = _dststride / sizeof(pixel);
-
- for (y = 0; y < height; y++) {
- memcpy(dst, src, width * sizeof(pixel));
- src += srcstride;
- dst += dststride;
- }
-}
+#define ff_hevc_pel_filters ff_hevc_qpel_filters
+#define DECL_HV_FILTER(f) \
+ const uint8_t *hf = ff_hevc_ ## f ## _filters[mx - 1]; \
+ const uint8_t *vf = ff_hevc_ ## f ## _filters[my - 1];
+
+#define FW_PUT(p, f, t) \
+static void FUNC(put_hevc_## f)(int16_t *dst, const uint8_t *src, ptrdiff_t srcstride, int height, \
+ intptr_t mx, intptr_t my, int width) \
+{ \
+ DECL_HV_FILTER(p) \
+ FUNC(put_ ## t)(dst, src, srcstride, height, hf, vf, width); \
+}
+
+#define FW_PUT_UNI(p, f, t) \
+static void FUNC(put_hevc_ ## f)(uint8_t *dst, ptrdiff_t dststride, const uint8_t *src, \
+ ptrdiff_t srcstride, int height, intptr_t mx, intptr_t my, int width) \
+{ \
+ DECL_HV_FILTER(p) \
+ FUNC(put_ ## t)(dst, dststride, src, srcstride, height, hf, vf, width); \
+}
+
+#define FW_PUT_UNI_W(p, f, t) \
+static void FUNC(put_hevc_ ## f)(uint8_t *dst, ptrdiff_t dststride, const uint8_t *src, \
+ ptrdiff_t srcstride,int height, int denom, int wx, int ox, \
+ intptr_t mx, intptr_t my, int width) \
+{ \
+ DECL_HV_FILTER(p) \
+ FUNC(put_ ## t)(dst, dststride, src, srcstride, height, denom, wx, ox, hf, vf, width); \
+}
+
+#define FW_PUT_FUNCS(f, t, dir) \
+ FW_PUT(f, f ## _ ## dir, t ## _ ## dir) \
+ FW_PUT_UNI(f, f ## _uni_ ## dir, uni_ ## t ## _ ## dir) \
+ FW_PUT_UNI_W(f, f ## _uni_w_ ## dir, uni_## t ## _w_ ## dir)
+
+FW_PUT(pel, pel_pixels, pixels)
+FW_PUT_UNI(pel, pel_uni_pixels, uni_pixels)
+FW_PUT_UNI_W(pel, pel_uni_w_pixels, uni_w_pixels)
+
+FW_PUT_FUNCS(qpel, luma, h )
+FW_PUT_FUNCS(qpel, luma, v )
+FW_PUT_FUNCS(qpel, luma, hv )
+FW_PUT_FUNCS(epel, chroma, h )
+FW_PUT_FUNCS(epel, chroma, v )
+FW_PUT_FUNCS(epel, chroma, hv )
static void FUNC(put_hevc_pel_bi_pixels)(uint8_t *_dst, ptrdiff_t _dststride, const uint8_t *_src, ptrdiff_t _srcstride,
const int16_t *src2,
@@ -357,30 +372,6 @@ static void FUNC(put_hevc_pel_bi_pixels)(uint8_t *_dst, ptrdiff_t _dststride, co
}
}
-static void FUNC(put_hevc_pel_uni_w_pixels)(uint8_t *_dst, ptrdiff_t _dststride, const uint8_t *_src, ptrdiff_t _srcstride,
- int height, int denom, int wx, int ox, intptr_t mx, intptr_t my, int width)
-{
- int x, y;
- const pixel *src = (const pixel *)_src;
- ptrdiff_t srcstride = _srcstride / sizeof(pixel);
- pixel *dst = (pixel *)_dst;
- ptrdiff_t dststride = _dststride / sizeof(pixel);
- int shift = denom + 14 - BIT_DEPTH;
-#if BIT_DEPTH < 14
- int offset = 1 << (shift - 1);
-#else
- int offset = 0;
-#endif
-
- ox = ox * (1 << (BIT_DEPTH - 8));
- for (y = 0; y < height; y++) {
- for (x = 0; x < width; x++)
- dst[x] = av_clip_pixel((((src[x] << (14 - BIT_DEPTH)) * wx + offset) >> shift) + ox);
- src += srcstride;
- dst += dststride;
- }
-}
-
static void FUNC(put_hevc_pel_bi_w_pixels)(uint8_t *_dst, ptrdiff_t _dststride, const uint8_t *_src, ptrdiff_t _srcstride,
const int16_t *src2,
int height, int denom, int wx0, int wx1,
@@ -420,96 +411,6 @@ static void FUNC(put_hevc_pel_bi_w_pixels)(uint8_t *_dst, ptrdiff_t _dststride,
filter[6] * src[x + 3 * stride] + \
filter[7] * src[x + 4 * stride])
-static void FUNC(put_hevc_qpel_h)(int16_t *dst,
- const uint8_t *_src, ptrdiff_t _srcstride,
- int height, intptr_t mx, intptr_t my, int width)
-{
- int x, y;
- const pixel *src = (const pixel*)_src;
- ptrdiff_t srcstride = _srcstride / sizeof(pixel);
- const int8_t *filter = ff_hevc_qpel_filters[mx - 1];
- for (y = 0; y < height; y++) {
- for (x = 0; x < width; x++)
- dst[x] = QPEL_FILTER(src, 1) >> (BIT_DEPTH - 8);
- src += srcstride;
- dst += MAX_PB_SIZE;
- }
-}
-
-static void FUNC(put_hevc_qpel_v)(int16_t *dst,
- const uint8_t *_src, ptrdiff_t _srcstride,
- int height, intptr_t mx, intptr_t my, int width)
-{
- int x, y;
- const pixel *src = (const pixel*)_src;
- ptrdiff_t srcstride = _srcstride / sizeof(pixel);
- const int8_t *filter = ff_hevc_qpel_filters[my - 1];
- for (y = 0; y < height; y++) {
- for (x = 0; x < width; x++)
- dst[x] = QPEL_FILTER(src, srcstride) >> (BIT_DEPTH - 8);
- src += srcstride;
- dst += MAX_PB_SIZE;
- }
-}
-
-static void FUNC(put_hevc_qpel_hv)(int16_t *dst,
- const uint8_t *_src,
- ptrdiff_t _srcstride,
- int height, intptr_t mx,
- intptr_t my, int width)
-{
- int x, y;
- const int8_t *filter;
- const pixel *src = (const pixel*)_src;
- ptrdiff_t srcstride = _srcstride / sizeof(pixel);
- int16_t tmp_array[(MAX_PB_SIZE + QPEL_EXTRA) * MAX_PB_SIZE];
- int16_t *tmp = tmp_array;
-
- src -= QPEL_EXTRA_BEFORE * srcstride;
- filter = ff_hevc_qpel_filters[mx - 1];
- for (y = 0; y < height + QPEL_EXTRA; y++) {
- for (x = 0; x < width; x++)
- tmp[x] = QPEL_FILTER(src, 1) >> (BIT_DEPTH - 8);
- src += srcstride;
- tmp += MAX_PB_SIZE;
- }
-
- tmp = tmp_array + QPEL_EXTRA_BEFORE * MAX_PB_SIZE;
- filter = ff_hevc_qpel_filters[my - 1];
- for (y = 0; y < height; y++) {
- for (x = 0; x < width; x++)
- dst[x] = QPEL_FILTER(tmp, MAX_PB_SIZE) >> 6;
- tmp += MAX_PB_SIZE;
- dst += MAX_PB_SIZE;
- }
-}
-
-static void FUNC(put_hevc_qpel_uni_h)(uint8_t *_dst, ptrdiff_t _dststride,
- const uint8_t *_src, ptrdiff_t _srcstride,
- int height, intptr_t mx, intptr_t my, int width)
-{
- int x, y;
- const pixel *src = (const pixel*)_src;
- ptrdiff_t srcstride = _srcstride / sizeof(pixel);
- pixel *dst = (pixel *)_dst;
- ptrdiff_t dststride = _dststride / sizeof(pixel);
- const int8_t *filter = ff_hevc_qpel_filters[mx - 1];
- int shift = 14 - BIT_DEPTH;
-
-#if BIT_DEPTH < 14
- int offset = 1 << (shift - 1);
-#else
- int offset = 0;
-#endif
-
- for (y = 0; y < height; y++) {
- for (x = 0; x < width; x++)
- dst[x] = av_clip_pixel(((QPEL_FILTER(src, 1) >> (BIT_DEPTH - 8)) + offset) >> shift);
- src += srcstride;
- dst += dststride;
- }
-}
-
static void FUNC(put_hevc_qpel_bi_h)(uint8_t *_dst, ptrdiff_t _dststride, const uint8_t *_src, ptrdiff_t _srcstride,
const int16_t *src2,
int height, intptr_t mx, intptr_t my, int width)
@@ -538,33 +439,6 @@ static void FUNC(put_hevc_qpel_bi_h)(uint8_t *_dst, ptrdiff_t _dststride, const
}
}
-static void FUNC(put_hevc_qpel_uni_v)(uint8_t *_dst, ptrdiff_t _dststride,
- const uint8_t *_src, ptrdiff_t _srcstride,
- int height, intptr_t mx, intptr_t my, int width)
-{
- int x, y;
- const pixel *src = (const pixel*)_src;
- ptrdiff_t srcstride = _srcstride / sizeof(pixel);
- pixel *dst = (pixel *)_dst;
- ptrdiff_t dststride = _dststride / sizeof(pixel);
- const int8_t *filter = ff_hevc_qpel_filters[my - 1];
- int shift = 14 - BIT_DEPTH;
-
-#if BIT_DEPTH < 14
- int offset = 1 << (shift - 1);
-#else
- int offset = 0;
-#endif
-
- for (y = 0; y < height; y++) {
- for (x = 0; x < width; x++)
- dst[x] = av_clip_pixel(((QPEL_FILTER(src, srcstride) >> (BIT_DEPTH - 8)) + offset) >> shift);
- src += srcstride;
- dst += dststride;
- }
-}
-
-
static void FUNC(put_hevc_qpel_bi_v)(uint8_t *_dst, ptrdiff_t _dststride,
const uint8_t *_src, ptrdiff_t _srcstride, const int16_t *src2,
int height, intptr_t mx, intptr_t my, int width)
@@ -593,46 +467,6 @@ static void FUNC(put_hevc_qpel_bi_v)(uint8_t *_dst, ptrdiff_t _dststride,
}
}
-static void FUNC(put_hevc_qpel_uni_hv)(uint8_t *_dst, ptrdiff_t _dststride,
- const uint8_t *_src, ptrdiff_t _srcstride,
- int height, intptr_t mx, intptr_t my, int width)
-{
- int x, y;
- const int8_t *filter;
- const pixel *src = (const pixel*)_src;
- ptrdiff_t srcstride = _srcstride / sizeof(pixel);
- pixel *dst = (pixel *)_dst;
- ptrdiff_t dststride = _dststride / sizeof(pixel);
- int16_t tmp_array[(MAX_PB_SIZE + QPEL_EXTRA) * MAX_PB_SIZE];
- int16_t *tmp = tmp_array;
- int shift = 14 - BIT_DEPTH;
-
-#if BIT_DEPTH < 14
- int offset = 1 << (shift - 1);
-#else
- int offset = 0;
-#endif
-
- src -= QPEL_EXTRA_BEFORE * srcstride;
- filter = ff_hevc_qpel_filters[mx - 1];
- for (y = 0; y < height + QPEL_EXTRA; y++) {
- for (x = 0; x < width; x++)
- tmp[x] = QPEL_FILTER(src, 1) >> (BIT_DEPTH - 8);
- src += srcstride;
- tmp += MAX_PB_SIZE;
- }
-
- tmp = tmp_array + QPEL_EXTRA_BEFORE * MAX_PB_SIZE;
- filter = ff_hevc_qpel_filters[my - 1];
-
- for (y = 0; y < height; y++) {
- for (x = 0; x < width; x++)
- dst[x] = av_clip_pixel(((QPEL_FILTER(tmp, MAX_PB_SIZE) >> 6) + offset) >> shift);
- tmp += MAX_PB_SIZE;
- dst += dststride;
- }
-}
-
static void FUNC(put_hevc_qpel_bi_hv)(uint8_t *_dst, ptrdiff_t _dststride,
const uint8_t *_src, ptrdiff_t _srcstride, const int16_t *src2,
int height, intptr_t mx, intptr_t my, int width)
@@ -673,33 +507,6 @@ static void FUNC(put_hevc_qpel_bi_hv)(uint8_t *_dst, ptrdiff_t _dststride,
}
}
-static void FUNC(put_hevc_qpel_uni_w_h)(uint8_t *_dst, ptrdiff_t _dststride,
- const uint8_t *_src, ptrdiff_t _srcstride,
- int height, int denom, int wx, int ox,
- intptr_t mx, intptr_t my, int width)
-{
- int x, y;
- const pixel *src = (const pixel*)_src;
- ptrdiff_t srcstride = _srcstride / sizeof(pixel);
- pixel *dst = (pixel *)_dst;
- ptrdiff_t dststride = _dststride / sizeof(pixel);
- const int8_t *filter = ff_hevc_qpel_filters[mx - 1];
- int shift = denom + 14 - BIT_DEPTH;
-#if BIT_DEPTH < 14
- int offset = 1 << (shift - 1);
-#else
- int offset = 0;
-#endif
-
- ox = ox * (1 << (BIT_DEPTH - 8));
- for (y = 0; y < height; y++) {
- for (x = 0; x < width; x++)
- dst[x] = av_clip_pixel((((QPEL_FILTER(src, 1) >> (BIT_DEPTH - 8)) * wx + offset) >> shift) + ox);
- src += srcstride;
- dst += dststride;
- }
-}
-
static void FUNC(put_hevc_qpel_bi_w_h)(uint8_t *_dst, ptrdiff_t _dststride,
const uint8_t *_src, ptrdiff_t _srcstride, const int16_t *src2,
int height, int denom, int wx0, int wx1,
@@ -728,33 +535,6 @@ static void FUNC(put_hevc_qpel_bi_w_h)(uint8_t *_dst, ptrdiff_t _dststride,
}
}
-static void FUNC(put_hevc_qpel_uni_w_v)(uint8_t *_dst, ptrdiff_t _dststride,
- const uint8_t *_src, ptrdiff_t _srcstride,
- int height, int denom, int wx, int ox,
- intptr_t mx, intptr_t my, int width)
-{
- int x, y;
- const pixel *src = (const pixel*)_src;
- ptrdiff_t srcstride = _srcstride / sizeof(pixel);
- pixel *dst = (pixel *)_dst;
- ptrdiff_t dststride = _dststride / sizeof(pixel);
- const int8_t *filter = ff_hevc_qpel_filters[my - 1];
- int shift = denom + 14 - BIT_DEPTH;
-#if BIT_DEPTH < 14
- int offset = 1 << (shift - 1);
-#else
- int offset = 0;
-#endif
-
- ox = ox * (1 << (BIT_DEPTH - 8));
- for (y = 0; y < height; y++) {
- for (x = 0; x < width; x++)
- dst[x] = av_clip_pixel((((QPEL_FILTER(src, srcstride) >> (BIT_DEPTH - 8)) * wx + offset) >> shift) + ox);
- src += srcstride;
- dst += dststride;
- }
-}
-
static void FUNC(put_hevc_qpel_bi_w_v)(uint8_t *_dst, ptrdiff_t _dststride,
const uint8_t *_src, ptrdiff_t _srcstride, const int16_t *src2,
int height, int denom, int wx0, int wx1,
@@ -783,47 +563,6 @@ static void FUNC(put_hevc_qpel_bi_w_v)(uint8_t *_dst, ptrdiff_t _dststride,
}
}
-static void FUNC(put_hevc_qpel_uni_w_hv)(uint8_t *_dst, ptrdiff_t _dststride,
- const uint8_t *_src, ptrdiff_t _srcstride,
- int height, int denom, int wx, int ox,
- intptr_t mx, intptr_t my, int width)
-{
- int x, y;
- const int8_t *filter;
- const pixel *src = (const pixel*)_src;
- ptrdiff_t srcstride = _srcstride / sizeof(pixel);
- pixel *dst = (pixel *)_dst;
- ptrdiff_t dststride = _dststride / sizeof(pixel);
- int16_t tmp_array[(MAX_PB_SIZE + QPEL_EXTRA) * MAX_PB_SIZE];
- int16_t *tmp = tmp_array;
- int shift = denom + 14 - BIT_DEPTH;
-#if BIT_DEPTH < 14
- int offset = 1 << (shift - 1);
-#else
- int offset = 0;
-#endif
-
- src -= QPEL_EXTRA_BEFORE * srcstride;
- filter = ff_hevc_qpel_filters[mx - 1];
- for (y = 0; y < height + QPEL_EXTRA; y++) {
- for (x = 0; x < width; x++)
- tmp[x] = QPEL_FILTER(src, 1) >> (BIT_DEPTH - 8);
- src += srcstride;
- tmp += MAX_PB_SIZE;
- }
-
- tmp = tmp_array + QPEL_EXTRA_BEFORE * MAX_PB_SIZE;
- filter = ff_hevc_qpel_filters[my - 1];
-
- ox = ox * (1 << (BIT_DEPTH - 8));
- for (y = 0; y < height; y++) {
- for (x = 0; x < width; x++)
- dst[x] = av_clip_pixel((((QPEL_FILTER(tmp, MAX_PB_SIZE) >> 6) * wx + offset) >> shift) + ox);
- tmp += MAX_PB_SIZE;
- dst += dststride;
- }
-}
-
static void FUNC(put_hevc_qpel_bi_w_hv)(uint8_t *_dst, ptrdiff_t _dststride,
const uint8_t *_src, ptrdiff_t _srcstride, const int16_t *src2,
int height, int denom, int wx0, int wx1,
@@ -873,94 +612,6 @@ static void FUNC(put_hevc_qpel_bi_w_hv)(uint8_t *_dst, ptrdiff_t _dststride,
filter[2] * src[x + stride] + \
filter[3] * src[x + 2 * stride])
-static void FUNC(put_hevc_epel_h)(int16_t *dst,
- const uint8_t *_src, ptrdiff_t _srcstride,
- int height, intptr_t mx, intptr_t my, int width)
-{
- int x, y;
- const pixel *src = (const pixel *)_src;
- ptrdiff_t srcstride = _srcstride / sizeof(pixel);
- const int8_t *filter = ff_hevc_epel_filters[mx - 1];
- for (y = 0; y < height; y++) {
- for (x = 0; x < width; x++)
- dst[x] = EPEL_FILTER(src, 1) >> (BIT_DEPTH - 8);
- src += srcstride;
- dst += MAX_PB_SIZE;
- }
-}
-
-static void FUNC(put_hevc_epel_v)(int16_t *dst,
- const uint8_t *_src, ptrdiff_t _srcstride,
- int height, intptr_t mx, intptr_t my, int width)
-{
- int x, y;
- const pixel *src = (const pixel *)_src;
- ptrdiff_t srcstride = _srcstride / sizeof(pixel);
- const int8_t *filter = ff_hevc_epel_filters[my - 1];
-
- for (y = 0; y < height; y++) {
- for (x = 0; x < width; x++)
- dst[x] = EPEL_FILTER(src, srcstride) >> (BIT_DEPTH - 8);
- src += srcstride;
- dst += MAX_PB_SIZE;
- }
-}
-
-static void FUNC(put_hevc_epel_hv)(int16_t *dst,
- const uint8_t *_src, ptrdiff_t _srcstride,
- int height, intptr_t mx, intptr_t my, int width)
-{
- int x, y;
- const pixel *src = (const pixel *)_src;
- ptrdiff_t srcstride = _srcstride / sizeof(pixel);
- const int8_t *filter = ff_hevc_epel_filters[mx - 1];
- int16_t tmp_array[(MAX_PB_SIZE + EPEL_EXTRA) * MAX_PB_SIZE];
- int16_t *tmp = tmp_array;
-
- src -= EPEL_EXTRA_BEFORE * srcstride;
-
- for (y = 0; y < height + EPEL_EXTRA; y++) {
- for (x = 0; x < width; x++)
- tmp[x] = EPEL_FILTER(src, 1) >> (BIT_DEPTH - 8);
- src += srcstride;
- tmp += MAX_PB_SIZE;
- }
-
- tmp = tmp_array + EPEL_EXTRA_BEFORE * MAX_PB_SIZE;
- filter = ff_hevc_epel_filters[my - 1];
-
- for (y = 0; y < height; y++) {
- for (x = 0; x < width; x++)
- dst[x] = EPEL_FILTER(tmp, MAX_PB_SIZE) >> 6;
- tmp += MAX_PB_SIZE;
- dst += MAX_PB_SIZE;
- }
-}
-
-static void FUNC(put_hevc_epel_uni_h)(uint8_t *_dst, ptrdiff_t _dststride, const uint8_t *_src, ptrdiff_t _srcstride,
- int height, intptr_t mx, intptr_t my, int width)
-{
- int x, y;
- const pixel *src = (const pixel *)_src;
- ptrdiff_t srcstride = _srcstride / sizeof(pixel);
- pixel *dst = (pixel *)_dst;
- ptrdiff_t dststride = _dststride / sizeof(pixel);
- const int8_t *filter = ff_hevc_epel_filters[mx - 1];
- int shift = 14 - BIT_DEPTH;
-#if BIT_DEPTH < 14
- int offset = 1 << (shift - 1);
-#else
- int offset = 0;
-#endif
-
- for (y = 0; y < height; y++) {
- for (x = 0; x < width; x++)
- dst[x] = av_clip_pixel(((EPEL_FILTER(src, 1) >> (BIT_DEPTH - 8)) + offset) >> shift);
- src += srcstride;
- dst += dststride;
- }
-}
-
static void FUNC(put_hevc_epel_bi_h)(uint8_t *_dst, ptrdiff_t _dststride,
const uint8_t *_src, ptrdiff_t _srcstride, const int16_t *src2,
int height, intptr_t mx, intptr_t my, int width)
@@ -988,30 +639,6 @@ static void FUNC(put_hevc_epel_bi_h)(uint8_t *_dst, ptrdiff_t _dststride,
}
}
-static void FUNC(put_hevc_epel_uni_v)(uint8_t *_dst, ptrdiff_t _dststride, const uint8_t *_src, ptrdiff_t _srcstride,
- int height, intptr_t mx, intptr_t my, int width)
-{
- int x, y;
- const pixel *src = (const pixel *)_src;
- ptrdiff_t srcstride = _srcstride / sizeof(pixel);
- pixel *dst = (pixel *)_dst;
- ptrdiff_t dststride = _dststride / sizeof(pixel);
- const int8_t *filter = ff_hevc_epel_filters[my - 1];
- int shift = 14 - BIT_DEPTH;
-#if BIT_DEPTH < 14
- int offset = 1 << (shift - 1);
-#else
- int offset = 0;
-#endif
-
- for (y = 0; y < height; y++) {
- for (x = 0; x < width; x++)
- dst[x] = av_clip_pixel(((EPEL_FILTER(src, srcstride) >> (BIT_DEPTH - 8)) + offset) >> shift);
- src += srcstride;
- dst += dststride;
- }
-}
-
static void FUNC(put_hevc_epel_bi_v)(uint8_t *_dst, ptrdiff_t _dststride,
const uint8_t *_src, ptrdiff_t _srcstride, const int16_t *src2,
int height, intptr_t mx, intptr_t my, int width)
@@ -1038,44 +665,6 @@ static void FUNC(put_hevc_epel_bi_v)(uint8_t *_dst, ptrdiff_t _dststride,
}
}
-static void FUNC(put_hevc_epel_uni_hv)(uint8_t *_dst, ptrdiff_t _dststride, const uint8_t *_src, ptrdiff_t _srcstride,
- int height, intptr_t mx, intptr_t my, int width)
-{
- int x, y;
- const pixel *src = (const pixel *)_src;
- ptrdiff_t srcstride = _srcstride / sizeof(pixel);
- pixel *dst = (pixel *)_dst;
- ptrdiff_t dststride = _dststride / sizeof(pixel);
- const int8_t *filter = ff_hevc_epel_filters[mx - 1];
- int16_t tmp_array[(MAX_PB_SIZE + EPEL_EXTRA) * MAX_PB_SIZE];
- int16_t *tmp = tmp_array;
- int shift = 14 - BIT_DEPTH;
-#if BIT_DEPTH < 14
- int offset = 1 << (shift - 1);
-#else
- int offset = 0;
-#endif
-
- src -= EPEL_EXTRA_BEFORE * srcstride;
-
- for (y = 0; y < height + EPEL_EXTRA; y++) {
- for (x = 0; x < width; x++)
- tmp[x] = EPEL_FILTER(src, 1) >> (BIT_DEPTH - 8);
- src += srcstride;
- tmp += MAX_PB_SIZE;
- }
-
- tmp = tmp_array + EPEL_EXTRA_BEFORE * MAX_PB_SIZE;
- filter = ff_hevc_epel_filters[my - 1];
-
- for (y = 0; y < height; y++) {
- for (x = 0; x < width; x++)
- dst[x] = av_clip_pixel(((EPEL_FILTER(tmp, MAX_PB_SIZE) >> 6) + offset) >> shift);
- tmp += MAX_PB_SIZE;
- dst += dststride;
- }
-}
-
static void FUNC(put_hevc_epel_bi_hv)(uint8_t *_dst, ptrdiff_t _dststride,
const uint8_t *_src, ptrdiff_t _srcstride, const int16_t *src2,
int height, intptr_t mx, intptr_t my, int width)
@@ -1116,32 +705,6 @@ static void FUNC(put_hevc_epel_bi_hv)(uint8_t *_dst, ptrdiff_t _dststride,
}
}
-static void FUNC(put_hevc_epel_uni_w_h)(uint8_t *_dst, ptrdiff_t _dststride, const uint8_t *_src, ptrdiff_t _srcstride,
- int height, int denom, int wx, int ox, intptr_t mx, intptr_t my, int width)
-{
- int x, y;
- const pixel *src = (const pixel *)_src;
- ptrdiff_t srcstride = _srcstride / sizeof(pixel);
- pixel *dst = (pixel *)_dst;
- ptrdiff_t dststride = _dststride / sizeof(pixel);
- const int8_t *filter = ff_hevc_epel_filters[mx - 1];
- int shift = denom + 14 - BIT_DEPTH;
-#if BIT_DEPTH < 14
- int offset = 1 << (shift - 1);
-#else
- int offset = 0;
-#endif
-
- ox = ox * (1 << (BIT_DEPTH - 8));
- for (y = 0; y < height; y++) {
- for (x = 0; x < width; x++) {
- dst[x] = av_clip_pixel((((EPEL_FILTER(src, 1) >> (BIT_DEPTH - 8)) * wx + offset) >> shift) + ox);
- }
- dst += dststride;
- src += srcstride;
- }
-}
-
static void FUNC(put_hevc_epel_bi_w_h)(uint8_t *_dst, ptrdiff_t _dststride,
const uint8_t *_src, ptrdiff_t _srcstride, const int16_t *src2,
int height, int denom, int wx0, int wx1,
@@ -1168,32 +731,6 @@ static void FUNC(put_hevc_epel_bi_w_h)(uint8_t *_dst, ptrdiff_t _dststride,
}
}
-static void FUNC(put_hevc_epel_uni_w_v)(uint8_t *_dst, ptrdiff_t _dststride, const uint8_t *_src, ptrdiff_t _srcstride,
- int height, int denom, int wx, int ox, intptr_t mx, intptr_t my, int width)
-{
- int x, y;
- const pixel *src = (const pixel *)_src;
- ptrdiff_t srcstride = _srcstride / sizeof(pixel);
- pixel *dst = (pixel *)_dst;
- ptrdiff_t dststride = _dststride / sizeof(pixel);
- const int8_t *filter = ff_hevc_epel_filters[my - 1];
- int shift = denom + 14 - BIT_DEPTH;
-#if BIT_DEPTH < 14
- int offset = 1 << (shift - 1);
-#else
- int offset = 0;
-#endif
-
- ox = ox * (1 << (BIT_DEPTH - 8));
- for (y = 0; y < height; y++) {
- for (x = 0; x < width; x++) {
- dst[x] = av_clip_pixel((((EPEL_FILTER(src, srcstride) >> (BIT_DEPTH - 8)) * wx + offset) >> shift) + ox);
- }
- dst += dststride;
- src += srcstride;
- }
-}
-
static void FUNC(put_hevc_epel_bi_w_v)(uint8_t *_dst, ptrdiff_t _dststride,
const uint8_t *_src, ptrdiff_t _srcstride, const int16_t *src2,
int height, int denom, int wx0, int wx1,
@@ -1220,45 +757,6 @@ static void FUNC(put_hevc_epel_bi_w_v)(uint8_t *_dst, ptrdiff_t _dststride,
}
}
-static void FUNC(put_hevc_epel_uni_w_hv)(uint8_t *_dst, ptrdiff_t _dststride, const uint8_t *_src, ptrdiff_t _srcstride,
- int height, int denom, int wx, int ox, intptr_t mx, intptr_t my, int width)
-{
- int x, y;
- const pixel *src = (const pixel *)_src;
- ptrdiff_t srcstride = _srcstride / sizeof(pixel);
- pixel *dst = (pixel *)_dst;
- ptrdiff_t dststride = _dststride / sizeof(pixel);
- const int8_t *filter = ff_hevc_epel_filters[mx - 1];
- int16_t tmp_array[(MAX_PB_SIZE + EPEL_EXTRA) * MAX_PB_SIZE];
- int16_t *tmp = tmp_array;
- int shift = denom + 14 - BIT_DEPTH;
-#if BIT_DEPTH < 14
- int offset = 1 << (shift - 1);
-#else
- int offset = 0;
-#endif
-
- src -= EPEL_EXTRA_BEFORE * srcstride;
-
- for (y = 0; y < height + EPEL_EXTRA; y++) {
- for (x = 0; x < width; x++)
- tmp[x] = EPEL_FILTER(src, 1) >> (BIT_DEPTH - 8);
- src += srcstride;
- tmp += MAX_PB_SIZE;
- }
-
- tmp = tmp_array + EPEL_EXTRA_BEFORE * MAX_PB_SIZE;
- filter = ff_hevc_epel_filters[my - 1];
-
- ox = ox * (1 << (BIT_DEPTH - 8));
- for (y = 0; y < height; y++) {
- for (x = 0; x < width; x++)
- dst[x] = av_clip_pixel((((EPEL_FILTER(tmp, MAX_PB_SIZE) >> 6) * wx + offset) >> shift) + ox);
- tmp += MAX_PB_SIZE;
- dst += dststride;
- }
-}
-
static void FUNC(put_hevc_epel_bi_w_hv)(uint8_t *_dst, ptrdiff_t _dststride,
const uint8_t *_src, ptrdiff_t _srcstride, const int16_t *src2,
int height, int denom, int wx0, int wx1,
--
2.34.1
More information about the ffmpeg-devel
mailing list