From de1f8ead8993512925a3ee6c7491473414419e55 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sat, 15 Nov 2014 22:31:27 +0100 Subject: [PATCH] hevcdsp_template: templatize transquant_bypass --- libavcodec/hevcdsp_template.c | 53 +++++++++-------------------------- 1 file changed, 13 insertions(+), 40 deletions(-) diff --git a/libavcodec/hevcdsp_template.c b/libavcodec/hevcdsp_template.c index 8dcc83d786..ae7e0217cc 100644 --- a/libavcodec/hevcdsp_template.c +++ b/libavcodec/hevcdsp_template.c @@ -40,16 +40,16 @@ static void FUNC(put_pcm)(uint8_t *_dst, ptrdiff_t stride, int size, } } -static void FUNC(transquant_bypass4x4)(uint8_t *_dst, int16_t *coeffs, - ptrdiff_t stride) +static av_always_inline void FUNC(transquant_bypass)(uint8_t *_dst, int16_t *coeffs, + ptrdiff_t stride, int size) { int x, y; pixel *dst = (pixel *)_dst; stride /= sizeof(pixel); - for (y = 0; y < 4; y++) { - for (x = 0; x < 4; x++) { + for (y = 0; y < size; y++) { + for (x = 0; x < size; x++) { dst[x] = av_clip_pixel(dst[x] + *coeffs); coeffs++; } @@ -57,55 +57,28 @@ static void FUNC(transquant_bypass4x4)(uint8_t *_dst, int16_t *coeffs, } } +static void FUNC(transquant_bypass4x4)(uint8_t *_dst, int16_t *coeffs, + ptrdiff_t stride) +{ + FUNC(transquant_bypass)(_dst, coeffs, stride, 4); +} + static void FUNC(transquant_bypass8x8)(uint8_t *_dst, int16_t *coeffs, ptrdiff_t stride) { - int x, y; - pixel *dst = (pixel *)_dst; - - stride /= sizeof(pixel); - - for (y = 0; y < 8; y++) { - for (x = 0; x < 8; x++) { - dst[x] = av_clip_pixel(dst[x] + *coeffs); - coeffs++; - } - dst += stride; - } + FUNC(transquant_bypass)(_dst, coeffs, stride, 8); } static void FUNC(transquant_bypass16x16)(uint8_t *_dst, int16_t *coeffs, ptrdiff_t stride) { - int x, y; - pixel *dst = (pixel *)_dst; - - stride /= sizeof(pixel); - - for (y = 0; y < 16; y++) { - for (x = 0; x < 16; x++) { - dst[x] = av_clip_pixel(dst[x] + *coeffs); - coeffs++; - } - dst += stride; - } + FUNC(transquant_bypass)(_dst, coeffs, stride, 16); } static void FUNC(transquant_bypass32x32)(uint8_t *_dst, int16_t *coeffs, ptrdiff_t stride) { - int x, y; - pixel *dst = (pixel *)_dst; - - stride /= sizeof(pixel); - - for (y = 0; y < 32; y++) { - for (x = 0; x < 32; x++) { - dst[x] = av_clip_pixel(dst[x] + *coeffs); - coeffs++; - } - dst += stride; - } + FUNC(transquant_bypass)(_dst, coeffs, stride, 32); } static void FUNC(transform_skip)(uint8_t *_dst, int16_t *coeffs,