diff options
author | Ronald S. Bultje <rsbultje@gmail.com> | 2013-03-09 21:26:09 -0800 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-03-13 03:55:33 +0100 |
commit | d1293512cfd5c99b992afb99b153e1c60ec21be6 (patch) | |
tree | 4052da33984dc27fa19440b3fb2fd7ae2886cfba /libavcodec | |
parent | 9628e5a4acb02467d6bcc07989527664bf2334e7 (diff) | |
download | ffmpeg-d1293512cfd5c99b992afb99b153e1c60ec21be6.tar.gz |
vp3: use hpeldsp instead of dsputil for half-pel functions.
This makes vp3 independent of dsputil.
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/vp3.c | 9 | ||||
-rw-r--r-- | libavcodec/x86/dsputil_mmx.c | 3 | ||||
-rw-r--r-- | libavcodec/x86/dsputil_mmx.h | 3 | ||||
-rw-r--r-- | libavcodec/x86/vp3dsp.asm | 7 |
4 files changed, 9 insertions, 13 deletions
diff --git a/libavcodec/vp3.c b/libavcodec/vp3.c index 5f5a3e3b22..f12b1b30bc 100644 --- a/libavcodec/vp3.c +++ b/libavcodec/vp3.c @@ -38,6 +38,7 @@ #include "internal.h" #include "dsputil.h" #include "get_bits.h" +#include "hpeldsp.h" #include "videodsp.h" #include "vp3data.h" #include "vp3dsp.h" @@ -141,7 +142,7 @@ typedef struct Vp3DecodeContext { int keyframe; uint8_t idct_permutation[64]; uint8_t idct_scantable[64]; - DSPContext dsp; + HpelDSPContext hdsp; VideoDSPContext vdsp; VP3DSPContext vp3dsp; DECLARE_ALIGNED(16, int16_t, block)[64]; @@ -1561,7 +1562,7 @@ static void render_slice(Vp3DecodeContext *s, int slice) VP3 source but this would be slower as put_no_rnd_pixels_tab is better optimzed */ if(motion_halfpel_index != 3){ - s->dsp.put_no_rnd_pixels_tab[1][motion_halfpel_index]( + s->hdsp.put_no_rnd_pixels_tab[1][motion_halfpel_index]( output_plane + first_pixel, motion_source, stride, 8); }else{ @@ -1595,7 +1596,7 @@ static void render_slice(Vp3DecodeContext *s, int slice) } else { /* copy directly from the previous frame */ - s->dsp.put_pixels_tab[1][0]( + s->hdsp.put_pixels_tab[1][0]( output_plane + first_pixel, last_plane + first_pixel, stride, 8); @@ -1694,7 +1695,7 @@ static av_cold int vp3_decode_init(AVCodecContext *avctx) if (avctx->codec_id != AV_CODEC_ID_THEORA) avctx->pix_fmt = AV_PIX_FMT_YUV420P; avctx->chroma_sample_location = AVCHROMA_LOC_CENTER; - ff_dsputil_init(&s->dsp, avctx); + ff_hpeldsp_init(&s->hdsp, avctx->flags | CODEC_FLAG_BITEXACT); ff_videodsp_init(&s->vdsp, 8); ff_vp3dsp_init(&s->vp3dsp, avctx->flags); diff --git a/libavcodec/x86/dsputil_mmx.c b/libavcodec/x86/dsputil_mmx.c index aae9acd613..db4dc75f62 100644 --- a/libavcodec/x86/dsputil_mmx.c +++ b/libavcodec/x86/dsputil_mmx.c @@ -52,10 +52,7 @@ DECLARE_ALIGNED(8, const uint64_t, ff_pw_255) = 0x00ff00ff00ff00ffULL; DECLARE_ALIGNED(16, const xmm_reg, ff_pw_512) = { 0x0200020002000200ULL, 0x0200020002000200ULL }; DECLARE_ALIGNED(16, const xmm_reg, ff_pw_1019) = { 0x03FB03FB03FB03FBULL, 0x03FB03FB03FB03FBULL }; -DECLARE_ALIGNED(8, const uint64_t, ff_pb_7) = 0x0707070707070707ULL; -DECLARE_ALIGNED(8, const uint64_t, ff_pb_1F) = 0x1F1F1F1F1F1F1F1FULL; DECLARE_ALIGNED(8, const uint64_t, ff_pb_3F) = 0x3F3F3F3F3F3F3F3FULL; -DECLARE_ALIGNED(8, const uint64_t, ff_pb_81) = 0x8181818181818181ULL; DECLARE_ALIGNED(8, const uint64_t, ff_pb_FC) = 0xFCFCFCFCFCFCFCFCULL; DECLARE_ALIGNED(16, const double, ff_pd_1)[2] = { 1.0, 1.0 }; diff --git a/libavcodec/x86/dsputil_mmx.h b/libavcodec/x86/dsputil_mmx.h index 4b7a1fd943..1e62c53e8b 100644 --- a/libavcodec/x86/dsputil_mmx.h +++ b/libavcodec/x86/dsputil_mmx.h @@ -49,10 +49,7 @@ extern const uint64_t ff_pw_255; extern const xmm_reg ff_pb_1; extern const xmm_reg ff_pb_3; -extern const uint64_t ff_pb_7; -extern const uint64_t ff_pb_1F; extern const uint64_t ff_pb_3F; -extern const uint64_t ff_pb_81; extern const xmm_reg ff_pb_F8; extern const uint64_t ff_pb_FC; diff --git a/libavcodec/x86/vp3dsp.asm b/libavcodec/x86/vp3dsp.asm index 423866cd2f..a47b8f2917 100644 --- a/libavcodec/x86/vp3dsp.asm +++ b/libavcodec/x86/vp3dsp.asm @@ -33,12 +33,13 @@ vp3_idct_data: times 8 dw 64277 times 8 dw 25080 times 8 dw 12785 +pb_7: times 8 db 7 +pb_1F: times 8 db 0x1f +pb_81: times 8 db 0x81 + cextern pb_1 cextern pb_3 -cextern pb_7 -cextern pb_1F cextern pb_80 -cextern pb_81 cextern pw_8 |