On 2020/12/09 11:19, Alan Kelly wrote:
---
Activates avx2 version of yuv2yuvX
Adds checkasm for yuv2yuvX
Modifies ff_yuv2yuvX_* signature to match yuv2yuvX_*
Replaces non-temporal stores with temporal stores
libswscale/x86/Makefile | 1 +
libswscale/x86/swscale.c | 106 +++++++++-----------------------
libswscale/x86/yuv2yuvX.asm | 118 ++++++++++++++++++++++++++++++++++++
tests/checkasm/sw_scale.c | 101 +++++++++++++++++++++++++++++-
4 files changed, 249 insertions(+), 77 deletions(-)
create mode 100644 libswscale/x86/yuv2yuvX.asm
[...]
diff --git a/tests/checkasm/sw_scale.c b/tests/checkasm/sw_scale.c
index 9efa2b4def..7009169361 100644
--- a/tests/checkasm/sw_scale.c
+++ b/tests/checkasm/sw_scale.c
[...]
+static void check_yuv2yuvX(void)
+{
+ struct SwsContext *ctx;
+ int fsi, osi;
+#define LARGEST_FILTER 8
+#define FILTER_SIZES 4
+ static const int filter_sizes[FILTER_SIZES] = {1, 4, 8, 16};
+
+ declare_func_emms(AV_CPU_FLAG_MMX, void, const int16_t *filter,
+ int filterSize, const int16_t **src, uint8_t *dest,
+ int dstW, const uint8_t *dither, int offset);
+
+ int dstW = SRC_PIXELS;
+ const int16_t **src;
+ LOCAL_ALIGNED_32(int16_t, filter_coeff, [LARGEST_FILTER]);
+ LOCAL_ALIGNED_32(uint8_t, dst0, [SRC_PIXELS]);
+ LOCAL_ALIGNED_32(uint8_t, dst1, [SRC_PIXELS]);
+ LOCAL_ALIGNED_32(uint8_t, dither, [SRC_PIXELS]);
+ union VFilterData{
+ const int16_t *src;
+ uint16_t coeff[8];
+ } *vFilterData;
+ uint8_t d_val = rnd();
+ randomize_buffers(filter_coeff, LARGEST_FILTER);
+ ctx = sws_alloc_context();
+ if (sws_init_context(ctx, NULL, NULL) < 0)
+ fail();
+
+ ff_sws_init_swscale_x86(ctx);
This should be ff_getSwsFunc() instead.
+ for(int i = 0; i < SRC_PIXELS; ++i){
+ dither[i] = d_val;
+ }
[...]
--
Josh
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".