From daa1ea049a9445b7bed03963cb789497065dd1eb Mon Sep 17 00:00:00 2001 From: David Conrad Date: Sun, 19 Oct 2008 04:40:24 +0000 Subject: [PATCH] VP3 loop filter is mmx2 not mmx Originally committed as revision 15642 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/i386/dsputil_mmx.c | 11 ++++++----- libavcodec/i386/vp3dsp_mmx.c | 4 ++-- libavcodec/i386/vp3dsp_mmx.h | 4 ++-- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/libavcodec/i386/dsputil_mmx.c b/libavcodec/i386/dsputil_mmx.c index b23664d960..08892d257f 100644 --- a/libavcodec/i386/dsputil_mmx.c +++ b/libavcodec/i386/dsputil_mmx.c @@ -2593,11 +2593,6 @@ void dsputil_init_mmx(DSPContext* c, AVCodecContext *avctx) c->h263_v_loop_filter= h263_v_loop_filter_mmx; c->h263_h_loop_filter= h263_h_loop_filter_mmx; } - if ((ENABLE_VP3_DECODER || ENABLE_THEORA_DECODER) && - !(avctx->flags & CODEC_FLAG_BITEXACT)) { - c->vp3_v_loop_filter= ff_vp3_v_loop_filter_mmx; - c->vp3_h_loop_filter= ff_vp3_h_loop_filter_mmx; - } c->put_h264_chroma_pixels_tab[0]= put_h264_chroma_mc8_mmx_rnd; c->put_h264_chroma_pixels_tab[1]= put_h264_chroma_mc4_mmx; c->put_no_rnd_h264_chroma_pixels_tab[0]= put_h264_chroma_mc8_mmx_nornd; @@ -2638,6 +2633,12 @@ void dsputil_init_mmx(DSPContext* c, AVCodecContext *avctx) c->avg_pixels_tab[1][3] = avg_pixels8_xy2_mmx2; } + if ((ENABLE_VP3_DECODER || ENABLE_THEORA_DECODER) && + !(avctx->flags & CODEC_FLAG_BITEXACT)) { + c->vp3_v_loop_filter= ff_vp3_v_loop_filter_mmx2; + c->vp3_h_loop_filter= ff_vp3_h_loop_filter_mmx2; + } + #define SET_QPEL_FUNCS(PFX, IDX, SIZE, CPU) \ c->PFX ## _pixels_tab[IDX][ 0] = PFX ## SIZE ## _mc00_ ## CPU; \ c->PFX ## _pixels_tab[IDX][ 1] = PFX ## SIZE ## _mc10_ ## CPU; \ diff --git a/libavcodec/i386/vp3dsp_mmx.c b/libavcodec/i386/vp3dsp_mmx.c index 32af301c00..010bfc65d6 100644 --- a/libavcodec/i386/vp3dsp_mmx.c +++ b/libavcodec/i386/vp3dsp_mmx.c @@ -84,7 +84,7 @@ extern const uint16_t ff_vp3_idct_data[]; "shr $16, %0 \n\t" \ "movw %w0, -1"#dst3" \n\t" -void ff_vp3_v_loop_filter_mmx(uint8_t *src, int stride, int *bounding_values) +void ff_vp3_v_loop_filter_mmx2(uint8_t *src, int stride, int *bounding_values) { __asm__ volatile( "movq %0, %%mm6 \n\t" @@ -105,7 +105,7 @@ void ff_vp3_v_loop_filter_mmx(uint8_t *src, int stride, int *bounding_values) ); } -void ff_vp3_h_loop_filter_mmx(uint8_t *src, int stride, int *bounding_values) +void ff_vp3_h_loop_filter_mmx2(uint8_t *src, int stride, int *bounding_values) { x86_reg tmp; diff --git a/libavcodec/i386/vp3dsp_mmx.h b/libavcodec/i386/vp3dsp_mmx.h index 252c5f1548..2e79913deb 100644 --- a/libavcodec/i386/vp3dsp_mmx.h +++ b/libavcodec/i386/vp3dsp_mmx.h @@ -29,7 +29,7 @@ void ff_vp3_idct_mmx(int16_t *data); void ff_vp3_idct_put_mmx(uint8_t *dest, int line_size, DCTELEM *block); void ff_vp3_idct_add_mmx(uint8_t *dest, int line_size, DCTELEM *block); -void ff_vp3_v_loop_filter_mmx(uint8_t *src, int stride, int *bounding_values); -void ff_vp3_h_loop_filter_mmx(uint8_t *src, int stride, int *bounding_values); +void ff_vp3_v_loop_filter_mmx2(uint8_t *src, int stride, int *bounding_values); +void ff_vp3_h_loop_filter_mmx2(uint8_t *src, int stride, int *bounding_values); #endif /* AVCODEC_I386_VP3DSP_MMX_H */