mirror of https://git.ffmpeg.org/ffmpeg.git
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>
This commit is contained in:
parent
3bd062bf7f
commit
cb7ecb7563
|
@ -1662,8 +1662,8 @@ vc1image_decoder_select="vc1_decoder"
|
||||||
vorbis_decoder_select="mdct"
|
vorbis_decoder_select="mdct"
|
||||||
vorbis_encoder_select="mdct"
|
vorbis_encoder_select="mdct"
|
||||||
vp3_decoder_select="hpeldsp vp3dsp videodsp"
|
vp3_decoder_select="hpeldsp vp3dsp videodsp"
|
||||||
vp5_decoder_select="dsputil h264chroma videodsp vp3dsp"
|
vp5_decoder_select="h264chroma hpeldsp videodsp vp3dsp"
|
||||||
vp6_decoder_select="dsputil h264chroma huffman videodsp vp3dsp"
|
vp6_decoder_select="h264chroma hpeldsp huffman videodsp vp3dsp"
|
||||||
vp6a_decoder_select="vp6_decoder"
|
vp6a_decoder_select="vp6_decoder"
|
||||||
vp6f_decoder_select="vp6_decoder"
|
vp6f_decoder_select="vp6_decoder"
|
||||||
vp8_decoder_select="h264pred videodsp"
|
vp8_decoder_select="h264pred videodsp"
|
||||||
|
|
|
@ -349,9 +349,9 @@ static void vp56_mc(VP56Context *s, int b, int plane, uint8_t *src,
|
||||||
} else if (deblock_filtering) {
|
} else if (deblock_filtering) {
|
||||||
/* only need a 12x12 block, but there is no such dsp function, */
|
/* only need a 12x12 block, but there is no such dsp function, */
|
||||||
/* so copy a 16x12 block */
|
/* so copy a 16x12 block */
|
||||||
s->dsp.put_pixels_tab[0][0](s->edge_emu_buffer,
|
s->hdsp.put_pixels_tab[0][0](s->edge_emu_buffer,
|
||||||
src + s->block_offset[b] + (dy-2)*stride + (dx-2),
|
src + s->block_offset[b] + (dy-2)*stride + (dx-2),
|
||||||
stride, 12);
|
stride, 12);
|
||||||
src_block = s->edge_emu_buffer;
|
src_block = s->edge_emu_buffer;
|
||||||
src_offset = 2 + 2*stride;
|
src_offset = 2 + 2*stride;
|
||||||
} else {
|
} else {
|
||||||
|
@ -376,7 +376,7 @@ static void vp56_mc(VP56Context *s, int b, int plane, uint8_t *src,
|
||||||
src_block+src_offset+overlap_offset,
|
src_block+src_offset+overlap_offset,
|
||||||
stride, 8);
|
stride, 8);
|
||||||
} else {
|
} 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++) {
|
for (b=0; b<b_max; b++) {
|
||||||
plane = ff_vp56_b2p[b+ab];
|
plane = ff_vp56_b2p[b+ab];
|
||||||
off = s->block_offset[b];
|
off = s->block_offset[b];
|
||||||
s->dsp.put_pixels_tab[1][0](frame_current->data[plane] + off,
|
s->hdsp.put_pixels_tab[1][0](frame_current->data[plane] + off,
|
||||||
frame_ref->data[plane] + off,
|
frame_ref->data[plane] + off,
|
||||||
s->stride[plane], 8);
|
s->stride[plane], 8);
|
||||||
s->vp3dsp.idct_add(frame_current->data[plane] + off,
|
s->vp3dsp.idct_add(frame_current->data[plane] + off,
|
||||||
s->stride[plane], s->block_coeff[b]);
|
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;
|
s->avctx = avctx;
|
||||||
avctx->pix_fmt = has_alpha ? AV_PIX_FMT_YUVA420P : AV_PIX_FMT_YUV420P;
|
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_h264chroma_init(&s->h264chroma, 8);
|
||||||
|
ff_hpeldsp_init(&s->hdsp, avctx->flags);
|
||||||
ff_videodsp_init(&s->vdsp, 8);
|
ff_videodsp_init(&s->vdsp, 8);
|
||||||
ff_vp3dsp_init(&s->vp3dsp, avctx->flags);
|
ff_vp3dsp_init(&s->vp3dsp, avctx->flags);
|
||||||
ff_vp56dsp_init(&s->vp56dsp, avctx->codec->id);
|
ff_vp56dsp_init(&s->vp56dsp, avctx->codec->id);
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
#include "vp56data.h"
|
#include "vp56data.h"
|
||||||
#include "dsputil.h"
|
#include "dsputil.h"
|
||||||
#include "get_bits.h"
|
#include "get_bits.h"
|
||||||
|
#include "hpeldsp.h"
|
||||||
#include "bytestream.h"
|
#include "bytestream.h"
|
||||||
#include "h264chroma.h"
|
#include "h264chroma.h"
|
||||||
#include "videodsp.h"
|
#include "videodsp.h"
|
||||||
|
@ -95,8 +96,8 @@ typedef struct VP56Model {
|
||||||
|
|
||||||
struct vp56_context {
|
struct vp56_context {
|
||||||
AVCodecContext *avctx;
|
AVCodecContext *avctx;
|
||||||
DSPContext dsp;
|
|
||||||
H264ChromaContext h264chroma;
|
H264ChromaContext h264chroma;
|
||||||
|
HpelDSPContext hdsp;
|
||||||
VideoDSPContext vdsp;
|
VideoDSPContext vdsp;
|
||||||
VP3DSPContext vp3dsp;
|
VP3DSPContext vp3dsp;
|
||||||
VP56DSPContext vp56dsp;
|
VP56DSPContext vp56dsp;
|
||||||
|
|
Loading…
Reference in New Issue