1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-08-15 14:13:16 +02:00

avcodec/eamad: Don't use IDCTDSP-API unnecessarily

The eamad decoder uses a custom IDCT and actually does not
use the IDCTDSP API at all. Somehow it was nevertheless
used to simply apply the identity permutation on ff_zigzag_direct.
This commit stops doing so.

Reviewed-by: Peter Ross <pross@xvid.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
Andreas Rheinhardt
2022-10-20 04:59:58 +02:00
parent ba85e0ce41
commit c262245fd3
2 changed files with 2 additions and 8 deletions

2
configure vendored
View File

@@ -2820,7 +2820,7 @@ dxa_decoder_deps="zlib"
dxv_decoder_select="lzf texturedsp" dxv_decoder_select="lzf texturedsp"
eac3_decoder_select="ac3_decoder" eac3_decoder_select="ac3_decoder"
eac3_encoder_select="ac3_encoder" eac3_encoder_select="ac3_encoder"
eamad_decoder_select="aandcttables blockdsp bswapdsp idctdsp" eamad_decoder_select="aandcttables blockdsp bswapdsp"
eatgq_decoder_select="aandcttables idctdsp" eatgq_decoder_select="aandcttables idctdsp"
eatqi_decoder_select="aandcttables blockdsp bswapdsp idctdsp" eatqi_decoder_select="aandcttables blockdsp bswapdsp idctdsp"
exr_decoder_deps="zlib" exr_decoder_deps="zlib"

View File

@@ -39,7 +39,6 @@
#include "get_bits.h" #include "get_bits.h"
#include "aandcttab.h" #include "aandcttab.h"
#include "eaidct.h" #include "eaidct.h"
#include "idctdsp.h"
#include "mpeg12data.h" #include "mpeg12data.h"
#include "mpeg12vlc.h" #include "mpeg12vlc.h"
@@ -52,13 +51,11 @@ typedef struct MadContext {
AVCodecContext *avctx; AVCodecContext *avctx;
BlockDSPContext bdsp; BlockDSPContext bdsp;
BswapDSPContext bbdsp; BswapDSPContext bbdsp;
IDCTDSPContext idsp;
AVFrame *last_frame; AVFrame *last_frame;
GetBitContext gb; GetBitContext gb;
void *bitstream_buf; void *bitstream_buf;
unsigned int bitstream_buf_size; unsigned int bitstream_buf_size;
DECLARE_ALIGNED(32, int16_t, block)[64]; DECLARE_ALIGNED(32, int16_t, block)[64];
ScanTable scantable;
uint16_t quant_matrix[64]; uint16_t quant_matrix[64];
int mb_x; int mb_x;
int mb_y; int mb_y;
@@ -71,9 +68,6 @@ static av_cold int decode_init(AVCodecContext *avctx)
avctx->pix_fmt = AV_PIX_FMT_YUV420P; avctx->pix_fmt = AV_PIX_FMT_YUV420P;
ff_blockdsp_init(&s->bdsp); ff_blockdsp_init(&s->bdsp);
ff_bswapdsp_init(&s->bbdsp); ff_bswapdsp_init(&s->bbdsp);
ff_idctdsp_init(&s->idsp, avctx);
ff_init_scantable_permutation(s->idsp.idct_permutation, FF_IDCT_PERM_NONE);
ff_init_scantable(s->idsp.idct_permutation, &s->scantable, ff_zigzag_direct);
ff_mpeg12_init_vlcs(); ff_mpeg12_init_vlcs();
s->last_frame = av_frame_alloc(); s->last_frame = av_frame_alloc();
@@ -135,7 +129,7 @@ static inline int decode_block_intra(MadContext *s, int16_t * block)
{ {
int level, i, j, run; int level, i, j, run;
RLTable *rl = &ff_rl_mpeg1; RLTable *rl = &ff_rl_mpeg1;
const uint8_t *scantable = s->scantable.permutated; const uint8_t *scantable = ff_zigzag_direct;
int16_t *quant_matrix = s->quant_matrix; int16_t *quant_matrix = s->quant_matrix;
block[0] = (128 + get_sbits(&s->gb, 8)) * quant_matrix[0]; block[0] = (128 + get_sbits(&s->gb, 8)) * quant_matrix[0];