[05/28] vp3: Use hpeldsp instead of dsputil for half-pel functions

Message ID 1365586623-82165-2-git-send-email-martin@martin.st
State Committed
Commit 3bd062bf7f818bcb410713a4717b65679056ed80
Headers show

Commit Message

Martin Storsjö April 10, 2013, 9:37 a.m.
From: "Ronald S. Bultje" <rsbultje@gmail.com>

This makes vp3 independent of dsputil.
---
 configure        |    2 +-
 libavcodec/vp3.c |    9 +++++----
 2 files changed, 6 insertions(+), 5 deletions(-)

Comments

Kostya Shishkov April 10, 2013, 9:43 a.m. | #1
On Wed, Apr 10, 2013 at 12:37:03PM +0300, Martin Storsjö wrote:
> From: "Ronald S. Bultje" <rsbultje@gmail.com>
> 
> This makes vp3 independent of dsputil.
> ---
>  configure        |    2 +-
>  libavcodec/vp3.c |    9 +++++----
>  2 files changed, 6 insertions(+), 5 deletions(-)

looks OK

Patch

diff --git a/configure b/configure
index e19521a..b8f0441 100755
--- a/configure
+++ b/configure
@@ -1661,7 +1661,7 @@  vc1_decoder_select="error_resilience h263_decoder h264chroma h264qpel"
 vc1image_decoder_select="vc1_decoder"
 vorbis_decoder_select="mdct"
 vorbis_encoder_select="mdct"
-vp3_decoder_select="dsputil vp3dsp videodsp"
+vp3_decoder_select="hpeldsp vp3dsp videodsp"
 vp5_decoder_select="dsputil h264chroma videodsp vp3dsp"
 vp6_decoder_select="dsputil h264chroma huffman videodsp vp3dsp"
 vp6a_decoder_select="vp6_decoder"
diff --git a/libavcodec/vp3.c b/libavcodec/vp3.c
index 7c26609..0211537 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"
@@ -137,7 +138,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];
@@ -1556,7 +1557,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{
@@ -1596,7 +1597,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);
@@ -1695,7 +1696,7 @@  static av_cold int vp3_decode_init(AVCodecContext *avctx)
     if (avctx->pix_fmt == AV_PIX_FMT_NONE)
         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);