1
mirror of https://git.videolan.org/git/ffmpeg.git synced 2024-10-02 01:05:03 +02:00

avfilter/vf_spp: use AVDCT

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2014-07-26 15:24:42 +02:00
parent 932ff70956
commit e3fac20824
2 changed files with 9 additions and 10 deletions

View File

@ -232,9 +232,9 @@ static void filter(SPPContext *p, uint8_t *dst, uint8_t *src,
const int y1 = y + offset[i + count - 1][1]; const int y1 = y + offset[i + count - 1][1];
const int index = x1 + y1*linesize; const int index = x1 + y1*linesize;
p->pdsp.get_pixels(block, p->src + index, linesize); p->pdsp.get_pixels(block, p->src + index, linesize);
p->fdsp.fdct(block); p->dct->fdct(block);
p->requantize(block2, block, qp, p->idsp.idct_permutation); p->requantize(block2, block, qp, p->dct->idct_permutation);
p->idsp.idct(block2); p->dct->idct(block2);
add_block(p->temp + index, linesize, block2); add_block(p->temp + index, linesize, block2);
} }
} }
@ -377,11 +377,11 @@ static av_cold int init(AVFilterContext *ctx)
SPPContext *spp = ctx->priv; SPPContext *spp = ctx->priv;
spp->avctx = avcodec_alloc_context3(NULL); spp->avctx = avcodec_alloc_context3(NULL);
if (!spp->avctx) spp->dct = avcodec_dct_alloc();
if (!spp->avctx || !spp->dct)
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
ff_idctdsp_init(&spp->idsp, spp->avctx);
ff_fdctdsp_init(&spp->fdsp, spp->avctx);
ff_pixblockdsp_init(&spp->pdsp, spp->avctx); ff_pixblockdsp_init(&spp->pdsp, spp->avctx);
avcodec_dct_init(spp->dct);
spp->store_slice = store_slice_c; spp->store_slice = store_slice_c;
switch (spp->mode) { switch (spp->mode) {
case MODE_HARD: spp->requantize = hardthresh_c; break; case MODE_HARD: spp->requantize = hardthresh_c; break;
@ -402,6 +402,7 @@ static av_cold void uninit(AVFilterContext *ctx)
avcodec_close(spp->avctx); avcodec_close(spp->avctx);
av_freep(&spp->avctx); av_freep(&spp->avctx);
} }
av_freep(&spp->dct);
av_freep(&spp->non_b_qp_table); av_freep(&spp->non_b_qp_table);
} }

View File

@ -24,8 +24,7 @@
#include "libavcodec/avcodec.h" #include "libavcodec/avcodec.h"
#include "libavcodec/pixblockdsp.h" #include "libavcodec/pixblockdsp.h"
#include "libavcodec/idctdsp.h" #include "libavcodec/avdct.h"
#include "libavcodec/fdctdsp.h"
#include "avfilter.h" #include "avfilter.h"
#define MAX_LEVEL 6 /* quality levels */ #define MAX_LEVEL 6 /* quality levels */
@ -41,9 +40,8 @@ typedef struct {
uint8_t *src; uint8_t *src;
int16_t *temp; int16_t *temp;
AVCodecContext *avctx; AVCodecContext *avctx;
IDCTDSPContext idsp;
FDCTDSPContext fdsp;
PixblockDSPContext pdsp; PixblockDSPContext pdsp;
AVDCT *dct;
int8_t *non_b_qp_table; int8_t *non_b_qp_table;
int non_b_qp_alloc_size; int non_b_qp_alloc_size;
int use_bframe_qp; int use_bframe_qp;