You've already forked FFmpeg
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:
2
configure
vendored
2
configure
vendored
@@ -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"
|
||||||
|
@@ -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];
|
||||||
|
Reference in New Issue
Block a user