[FFmpeg-devel] [PATCH 13/23] snow: use hpeldsp instead of dsputil for half-pel functions.

Ronald S. Bultje rsbultje at gmail.com
Tue Mar 12 15:28:23 CET 2013


From: "Ronald S. Bultje" <rsbultje at gmail.com>

---
 configure            | 4 ++--
 libavcodec/snow.c    | 9 +++++----
 libavcodec/snow.h    | 2 ++
 libavcodec/snowenc.c | 2 ++
 4 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/configure b/configure
index 9be7d14..3d69c90 100755
--- a/configure
+++ b/configure
@@ -1800,8 +1800,8 @@ rv30_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpegvi
 rv40_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpegvideo videodsp"
 shorten_decoder_select="golomb"
 sipr_decoder_select="lsp"
-snow_decoder_select="dsputil dwt h264qpel rangecoder"
-snow_encoder_select="aandcttables dsputil dwt h264qpel error_resilience mpegvideoenc rangecoder"
+snow_decoder_select="dsputil dwt h264qpel hpeldsp rangecoder"
+snow_encoder_select="aandcttables dsputil dwt h264qpel hpeldsp error_resilience mpegvideoenc rangecoder"
 sonic_decoder_select="golomb"
 sonic_encoder_select="golomb"
 sonic_ls_encoder_select="golomb"
diff --git a/libavcodec/snow.c b/libavcodec/snow.c
index 126acf3..503b1ef 100644
--- a/libavcodec/snow.c
+++ b/libavcodec/snow.c
@@ -401,6 +401,7 @@ av_cold int ff_snow_common_init(AVCodecContext *avctx){
     s->max_ref_frames=1; //just make sure it's not an invalid value in case of no initial keyframe
 
     ff_dsputil_init(&s->dsp, avctx);
+    ff_hpeldsp_init(&s->hdsp, avctx->flags);
     ff_videodsp_init(&s->vdsp, 8);
     ff_dwt_init(&s->dwt);
     ff_h264qpel_init(&s->h264qpel, 8);
@@ -431,11 +432,11 @@ av_cold int ff_snow_common_init(AVCodecContext *avctx){
     mcf(12,12)
 
 #define mcfh(dx,dy)\
-    s->dsp.put_pixels_tab       [0][dy/4+dx/8]=\
-    s->dsp.put_no_rnd_pixels_tab[0][dy/4+dx/8]=\
+    s->hdsp.put_pixels_tab       [0][dy/4+dx/8]=\
+    s->hdsp.put_no_rnd_pixels_tab[0][dy/4+dx/8]=\
         mc_block_hpel ## dx ## dy ## 16;\
-    s->dsp.put_pixels_tab       [1][dy/4+dx/8]=\
-    s->dsp.put_no_rnd_pixels_tab[1][dy/4+dx/8]=\
+    s->hdsp.put_pixels_tab       [1][dy/4+dx/8]=\
+    s->hdsp.put_no_rnd_pixels_tab[1][dy/4+dx/8]=\
         mc_block_hpel ## dx ## dy ## 8;
 
     mcfh(0, 0)
diff --git a/libavcodec/snow.h b/libavcodec/snow.h
index a3b0512..922a48e 100644
--- a/libavcodec/snow.h
+++ b/libavcodec/snow.h
@@ -23,6 +23,7 @@
 #define AVCODEC_SNOW_H
 
 #include "dsputil.h"
+#include "hpeldsp.h"
 #include "snow_dwt.h"
 
 #include "rangecoder.h"
@@ -109,6 +110,7 @@ typedef struct SnowContext{
     AVCodecContext *avctx;
     RangeCoder c;
     DSPContext dsp;
+    HpelDSPContext hdsp;
     VideoDSPContext vdsp;
     H264QpelContext h264qpel;
     SnowDWTContext dwt;
diff --git a/libavcodec/snowenc.c b/libavcodec/snowenc.c
index 624278b..7266ee1 100644
--- a/libavcodec/snowenc.c
+++ b/libavcodec/snowenc.c
@@ -1748,7 +1748,9 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt,
         s->lambda2= s->m.lambda2= (s->m.lambda*s->m.lambda + FF_LAMBDA_SCALE/2) >> FF_LAMBDA_SHIFT;
 
         s->m.dsp= s->dsp; //move
+        s->m.hdsp = s->hdsp;
         ff_init_me(&s->m);
+        s->hdsp = s->m.hdsp;
         s->dsp= s->m.dsp;
     }
 
-- 
1.7.11.3



More information about the ffmpeg-devel mailing list