aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRonald S. Bultje <rsbultje@gmail.com>2013-03-10 06:55:58 -0700
committerMartin Storsjö <martin@martin.st>2013-04-19 23:17:33 +0300
commitcb7ecb75635d124984fbdb5a8d08cc44f93662c4 (patch)
tree3332910ca9695173f713fc9420d12669255d6ebc
parent3bd062bf7f818bcb410713a4717b65679056ed80 (diff)
downloadffmpeg-cb7ecb75635d124984fbdb5a8d08cc44f93662c4.tar.gz
vp56: Use hpeldsp instead of dsputil for half-pel functions
This makes vp5 and vp6 independent of dsputil. Signed-off-by: Martin Storsjö <martin@martin.st>
-rwxr-xr-xconfigure4
-rw-r--r--libavcodec/vp56.c16
-rw-r--r--libavcodec/vp56.h3
3 files changed, 12 insertions, 11 deletions
diff --git a/configure b/configure
index 7a892d4d51..9cc9c23f9d 100755
--- a/configure
+++ b/configure
@@ -1662,8 +1662,8 @@ vc1image_decoder_select="vc1_decoder"
vorbis_decoder_select="mdct"
vorbis_encoder_select="mdct"
vp3_decoder_select="hpeldsp vp3dsp videodsp"
-vp5_decoder_select="dsputil h264chroma videodsp vp3dsp"
-vp6_decoder_select="dsputil h264chroma huffman videodsp vp3dsp"
+vp5_decoder_select="h264chroma hpeldsp videodsp vp3dsp"
+vp6_decoder_select="h264chroma hpeldsp huffman videodsp vp3dsp"
vp6a_decoder_select="vp6_decoder"
vp6f_decoder_select="vp6_decoder"
vp8_decoder_select="h264pred videodsp"
diff --git a/libavcodec/vp56.c b/libavcodec/vp56.c
index 1a83f00f47..b0ca92622e 100644
--- a/libavcodec/vp56.c
+++ b/libavcodec/vp56.c
@@ -349,9 +349,9 @@ static void vp56_mc(VP56Context *s, int b, int plane, uint8_t *src,
} else if (deblock_filtering) {
/* only need a 12x12 block, but there is no such dsp function, */
/* so copy a 16x12 block */
- s->dsp.put_pixels_tab[0][0](s->edge_emu_buffer,
- src + s->block_offset[b] + (dy-2)*stride + (dx-2),
- stride, 12);
+ s->hdsp.put_pixels_tab[0][0](s->edge_emu_buffer,
+ src + s->block_offset[b] + (dy-2)*stride + (dx-2),
+ stride, 12);
src_block = s->edge_emu_buffer;
src_offset = 2 + 2*stride;
} else {
@@ -376,7 +376,7 @@ static void vp56_mc(VP56Context *s, int b, int plane, uint8_t *src,
src_block+src_offset+overlap_offset,
stride, 8);
} else {
- s->dsp.put_pixels_tab[1][0](dst, src_block+src_offset, stride, 8);
+ s->hdsp.put_pixels_tab[1][0](dst, src_block+src_offset, stride, 8);
}
}
@@ -419,9 +419,9 @@ static void vp56_decode_mb(VP56Context *s, int row, int col, int is_alpha)
for (b=0; b<b_max; b++) {
plane = ff_vp56_b2p[b+ab];
off = s->block_offset[b];
- s->dsp.put_pixels_tab[1][0](frame_current->data[plane] + off,
- frame_ref->data[plane] + off,
- s->stride[plane], 8);
+ s->hdsp.put_pixels_tab[1][0](frame_current->data[plane] + off,
+ frame_ref->data[plane] + off,
+ s->stride[plane], 8);
s->vp3dsp.idct_add(frame_current->data[plane] + off,
s->stride[plane], s->block_coeff[b]);
}
@@ -656,8 +656,8 @@ av_cold int ff_vp56_init(AVCodecContext *avctx, int flip, int has_alpha)
s->avctx = avctx;
avctx->pix_fmt = has_alpha ? AV_PIX_FMT_YUVA420P : AV_PIX_FMT_YUV420P;
- ff_dsputil_init(&s->dsp, avctx);
ff_h264chroma_init(&s->h264chroma, 8);
+ ff_hpeldsp_init(&s->hdsp, avctx->flags);
ff_videodsp_init(&s->vdsp, 8);
ff_vp3dsp_init(&s->vp3dsp, avctx->flags);
ff_vp56dsp_init(&s->vp56dsp, avctx->codec->id);
diff --git a/libavcodec/vp56.h b/libavcodec/vp56.h
index 7fe6cf3eb4..553a625a17 100644
--- a/libavcodec/vp56.h
+++ b/libavcodec/vp56.h
@@ -29,6 +29,7 @@
#include "vp56data.h"
#include "dsputil.h"
#include "get_bits.h"
+#include "hpeldsp.h"
#include "bytestream.h"
#include "h264chroma.h"
#include "videodsp.h"
@@ -95,8 +96,8 @@ typedef struct VP56Model {
struct vp56_context {
AVCodecContext *avctx;
- DSPContext dsp;
H264ChromaContext h264chroma;
+ HpelDSPContext hdsp;
VideoDSPContext vdsp;
VP3DSPContext vp3dsp;
VP56DSPContext vp56dsp;