mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-08 13:22:53 +02:00
avfilter/vf_spp: use AVDCT
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
932ff70956
commit
e3fac20824
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user