diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2014-01-12 01:23:50 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2014-01-14 15:58:57 +0100 |
commit | d9e556ebd04c755b61b7d56c796ec21bf8928adf (patch) | |
tree | 8bc1983e947f45a5949ad9cddc401059cd8126b7 /libavcodec | |
parent | 12bc33d7cd04d863466d4a2d18a7fbcb59372429 (diff) | |
download | ffmpeg-d9e556ebd04c755b61b7d56c796ec21bf8928adf.tar.gz |
avcodec/proresdsp & idct: move biasing from after the IDCT into the IDCT
This replaces 64 additions by 8 additions
MSE Changes from 0.04873672 to 0.05012422
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/dct-test.c | 3 | ||||
-rw-r--r-- | libavcodec/proresdsp.c | 2 | ||||
-rw-r--r-- | libavcodec/simple_idct.c | 4 |
3 files changed, 7 insertions, 2 deletions
diff --git a/libavcodec/dct-test.c b/libavcodec/dct-test.c index bc1af8e19a..35f63a161d 100644 --- a/libavcodec/dct-test.c +++ b/libavcodec/dct-test.c @@ -107,6 +107,9 @@ static void ff_prores_idct_wrap(int16_t *dst){ qmat[i]=4; } ff_prores_idct(dst, qmat); + for(i=0; i<64; i++) { + dst[i] -= 512; + } } #if ARCH_X86_64 && HAVE_MMX && HAVE_YASM void ff_prores_idct_put_10_sse2(uint16_t *dst, int linesize, diff --git a/libavcodec/proresdsp.c b/libavcodec/proresdsp.c index 4ff219e58b..c3d1f5c745 100644 --- a/libavcodec/proresdsp.c +++ b/libavcodec/proresdsp.c @@ -31,7 +31,7 @@ #define CLIP_MIN (1 << (PRORES_BITS_PER_SAMPLE - 8)) ///< minimum value for clipping resulting pixels #define CLIP_MAX (1 << PRORES_BITS_PER_SAMPLE) - CLIP_MIN - 1 ///< maximum value for clipping resulting pixels -#define CLIP_AND_BIAS(x) (av_clip((x) + BIAS, CLIP_MIN, CLIP_MAX)) +#define CLIP_AND_BIAS(x) (av_clip((x), CLIP_MIN, CLIP_MAX)) #if CONFIG_PRORES_DECODER | CONFIG_PRORES_LGPL_DECODER /** diff --git a/libavcodec/simple_idct.c b/libavcodec/simple_idct.c index 73f62b4021..eeb627999c 100644 --- a/libavcodec/simple_idct.c +++ b/libavcodec/simple_idct.c @@ -232,6 +232,8 @@ void ff_prores_idct(int16_t *block, const int16_t *qmat) for (i = 0; i < 8; i++) idctRowCondDC_10(block + i*8, 2); - for (i = 0; i < 8; i++) + for (i = 0; i < 8; i++) { + block[i] += 8192; idctSparseCol_10(block + i); + } } |