[FFmpeg-cvslog] prores: use C idct for fate as the SSE code is not matching the SSE* code down at the bits

Michael Niedermayer git at videolan.org
Fri Oct 14 20:12:22 CEST 2011


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Fri Oct 14 19:30:10 2011 +0200| [337496980e8ea75a123921a5a215ae8a962bf128] | committer: Michael Niedermayer

prores: use C idct for fate as the SSE code is not matching the SSE* code down at the bits

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=337496980e8ea75a123921a5a215ae8a962bf128
---

 libavcodec/proresdec.c          |    2 +-
 libavcodec/proresdec_lgpl.c     |    2 +-
 libavcodec/proresdsp.c          |    4 ++--
 libavcodec/proresdsp.h          |    4 ++--
 libavcodec/x86/proresdsp-init.c |    5 ++++-
 tests/fate/prores.mak           |   10 +++++-----
 tests/ref/fate/prores-422       |    4 ++--
 tests/ref/fate/prores-422_hq    |    4 ++--
 tests/ref/fate/prores-422_lt    |    4 ++--
 tests/ref/fate/prores-422_proxy |    4 ++--
 tests/ref/fate/prores-alpha     |    4 ++--
 11 files changed, 25 insertions(+), 22 deletions(-)

diff --git a/libavcodec/proresdec.c b/libavcodec/proresdec.c
index 51807bc..a96af4f 100644
--- a/libavcodec/proresdec.c
+++ b/libavcodec/proresdec.c
@@ -70,7 +70,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
     avctx->bits_per_raw_sample = 10;
 
     dsputil_init(&ctx->dsp, avctx);
-    ff_proresdsp_init(&ctx->prodsp);
+    ff_proresdsp_init(&ctx->prodsp, avctx);
 
     avctx->coded_frame = &ctx->frame;
     ctx->frame.type = FF_I_TYPE;
diff --git a/libavcodec/proresdec_lgpl.c b/libavcodec/proresdec_lgpl.c
index 156f875..d0f00a7 100644
--- a/libavcodec/proresdec_lgpl.c
+++ b/libavcodec/proresdec_lgpl.c
@@ -107,7 +107,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
     avctx->pix_fmt = PIX_FMT_YUV422P10; // set default pixel format
 
     avctx->bits_per_raw_sample = PRORES_BITS_PER_SAMPLE;
-    ff_proresdsp_init(&ctx->dsp);
+    ff_proresdsp_init(&ctx->dsp, avctx);
 
     avctx->coded_frame = &ctx->picture;
     avcodec_get_frame_defaults(&ctx->picture);
diff --git a/libavcodec/proresdsp.c b/libavcodec/proresdsp.c
index 7e753e9..739ee2b 100644
--- a/libavcodec/proresdsp.c
+++ b/libavcodec/proresdsp.c
@@ -51,12 +51,12 @@ static void prores_idct_put_c(uint16_t *out, int linesize, DCTELEM *block, const
     put_pixels(out, linesize >> 1, block);
 }
 
-void ff_proresdsp_init(ProresDSPContext *dsp)
+void ff_proresdsp_init(ProresDSPContext *dsp, AVCodecContext *avctx)
 {
     dsp->idct_put = prores_idct_put_c;
     dsp->idct_permutation_type = FF_NO_IDCT_PERM;
 
-    if (HAVE_MMX) ff_proresdsp_x86_init(dsp);
+    if (HAVE_MMX) ff_proresdsp_x86_init(dsp, avctx);
 
     ff_init_scantable_permutation(dsp->idct_permutation,
                                   dsp->idct_permutation_type);
diff --git a/libavcodec/proresdsp.h b/libavcodec/proresdsp.h
index 8b864fa..7e81b08 100644
--- a/libavcodec/proresdsp.h
+++ b/libavcodec/proresdsp.h
@@ -33,8 +33,8 @@ typedef struct {
     void (* idct_put) (uint16_t *out, int linesize, DCTELEM *block, const int16_t *qmat);
 } ProresDSPContext;
 
-void ff_proresdsp_init(ProresDSPContext *dsp);
+void ff_proresdsp_init(ProresDSPContext *dsp, AVCodecContext *avctx);
 
-void ff_proresdsp_x86_init(ProresDSPContext *dsp);
+void ff_proresdsp_x86_init(ProresDSPContext *dsp, AVCodecContext *avctx);
 
 #endif /* AVCODEC_PRORESDSP_H */
diff --git a/libavcodec/x86/proresdsp-init.c b/libavcodec/x86/proresdsp-init.c
index ef5389c..83e6034 100644
--- a/libavcodec/x86/proresdsp-init.c
+++ b/libavcodec/x86/proresdsp-init.c
@@ -29,11 +29,14 @@ void ff_prores_idct_put_10_sse4(uint16_t *dst, int linesize,
 void ff_prores_idct_put_10_avx (uint16_t *dst, int linesize,
                                 DCTELEM *block);
 
-void ff_proresdsp_x86_init(ProresDSPContext *dsp)
+void ff_proresdsp_x86_init(ProresDSPContext *dsp, AVCodecContext *avctx)
 {
 #if ARCH_X86_64 && HAVE_YASM
     int flags = av_get_cpu_flags();
 
+    if(avctx->flags & CODEC_FLAG_BITEXACT)
+        return;
+
     if (flags & AV_CPU_FLAG_SSE2) {
         dsp->idct_permutation_type = FF_TRANSPOSE_IDCT_PERM;
         dsp->idct_put = ff_prores_idct_put_10_sse2;
diff --git a/tests/fate/prores.mak b/tests/fate/prores.mak
index 7be756d..020c66b 100644
--- a/tests/fate/prores.mak
+++ b/tests/fate/prores.mak
@@ -7,9 +7,9 @@ FATE_PRORES = fate-prores-422                                           \
 FATE_TESTS += $(FATE_PRORES)
 fate-prores: $(FATE_PRORES)
 
-fate-prores-422:       CMD = framecrc -vsync 0 -i $(SAMPLES)/prores/Sequence_1-Apple_ProRes_422.mov
-fate-prores-422_hq:    CMD = framecrc -vsync 0 -i $(SAMPLES)/prores/Sequence_1-Apple_ProRes_422_HQ.mov
-fate-prores-422_lt:    CMD = framecrc -vsync 0 -i $(SAMPLES)/prores/Sequence_1-Apple_ProRes_422_LT.mov
-fate-prores-422_proxy: CMD = framecrc -vsync 0 -i $(SAMPLES)/prores/Sequence_1-Apple_ProRes_422_Proxy.mov
-fate-prores-alpha:     CMD = framecrc -vsync 0 -i $(SAMPLES)/prores/Sequence_1-Apple_ProRes_with_Alpha.mov
+fate-prores-422:       CMD = framecrc -flags +bitexact -vsync 0 -i $(SAMPLES)/prores/Sequence_1-Apple_ProRes_422.mov
+fate-prores-422_hq:    CMD = framecrc -flags +bitexact -vsync 0 -i $(SAMPLES)/prores/Sequence_1-Apple_ProRes_422_HQ.mov
+fate-prores-422_lt:    CMD = framecrc -flags +bitexact -vsync 0 -i $(SAMPLES)/prores/Sequence_1-Apple_ProRes_422_LT.mov
+fate-prores-422_proxy: CMD = framecrc -flags +bitexact -vsync 0 -i $(SAMPLES)/prores/Sequence_1-Apple_ProRes_422_Proxy.mov
+fate-prores-alpha:     CMD = framecrc -flags +bitexact -vsync 0 -i $(SAMPLES)/prores/Sequence_1-Apple_ProRes_with_Alpha.mov
 
diff --git a/tests/ref/fate/prores-422 b/tests/ref/fate/prores-422
index 7a04efb..8d6f3ab 100644
--- a/tests/ref/fate/prores-422
+++ b/tests/ref/fate/prores-422
@@ -1,2 +1,2 @@
-0, 0, 8294400, 0x57127dd9
-0, 3003, 8294400, 0x57127dd9
+0, 0, 8294400, 0xe8e9d448
+0, 3003, 8294400, 0xe8e9d448
diff --git a/tests/ref/fate/prores-422_hq b/tests/ref/fate/prores-422_hq
index 9631ce3..8ce6937 100644
--- a/tests/ref/fate/prores-422_hq
+++ b/tests/ref/fate/prores-422_hq
@@ -1,2 +1,2 @@
-0, 0, 8294400, 0x978851f4
-0, 3003, 8294400, 0x978851f4
+0, 0, 8294400, 0x817063b0
+0, 3003, 8294400, 0x817063b0
diff --git a/tests/ref/fate/prores-422_lt b/tests/ref/fate/prores-422_lt
index ae40675..e9d0437 100644
--- a/tests/ref/fate/prores-422_lt
+++ b/tests/ref/fate/prores-422_lt
@@ -1,2 +1,2 @@
-0, 0, 8294400, 0x4ca110c7
-0, 3003, 8294400, 0x4ca110c7
+0, 0, 8294400, 0xcd4ccde1
+0, 3003, 8294400, 0xcd4ccde1
diff --git a/tests/ref/fate/prores-422_proxy b/tests/ref/fate/prores-422_proxy
index d7a3c8d..e03c3fa 100644
--- a/tests/ref/fate/prores-422_proxy
+++ b/tests/ref/fate/prores-422_proxy
@@ -1,2 +1,2 @@
-0, 0, 8294400, 0x007ba770
-0, 3003, 8294400, 0x007ba770
+0, 0, 8294400, 0x3099e361
+0, 3003, 8294400, 0x3099e361
diff --git a/tests/ref/fate/prores-alpha b/tests/ref/fate/prores-alpha
index 558e513..48568ba 100644
--- a/tests/ref/fate/prores-alpha
+++ b/tests/ref/fate/prores-alpha
@@ -1,2 +1,2 @@
-0, 0, 12441600, 0xf11685dd
-0, 3003, 12441600, 0xf11685dd
+0, 0, 12441600, 0x254d8f95
+0, 3003, 12441600, 0x254d8f95



More information about the ffmpeg-cvslog mailing list