summaryrefslogtreecommitdiff
path: root/libavcodec
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2014-01-12 01:23:50 +0100
committerMichael Niedermayer <michaelni@gmx.at>2014-01-14 15:58:57 +0100
commitd9e556ebd04c755b61b7d56c796ec21bf8928adf (patch)
tree8bc1983e947f45a5949ad9cddc401059cd8126b7 /libavcodec
parent12bc33d7cd04d863466d4a2d18a7fbcb59372429 (diff)
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.c3
-rw-r--r--libavcodec/proresdsp.c2
-rw-r--r--libavcodec/simple_idct.c4
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);
+ }
}