Prevents having to have random magic values in the decoder and a separate macro in the encoder.
Signed-off-by: Rostislav Pehlivanov <rpehliva...@obe.tv> --- libavcodec/diracdec.c | 8 ++++---- libavcodec/diractab.h | 2 ++ libavcodec/vc2enc.c | 9 +++------ 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/libavcodec/diracdec.c b/libavcodec/diracdec.c index c8ab2df..48ba194 100644 --- a/libavcodec/diracdec.c +++ b/libavcodec/diracdec.c @@ -486,7 +486,7 @@ static inline void codeblock(DiracContext *s, SubBand *b, b->quant = quant; } - if (b->quant > 115) { + if (b->quant > DIRAC_MAX_QUANT_INDEX) { av_log(s->avctx, AV_LOG_ERROR, "Unsupported quant %d\n", b->quant); b->quant = 0; return; @@ -676,12 +676,12 @@ static void decode_subband(DiracContext *s, GetBitContext *gb, int quant, uint8_t *buf2 = b2 ? b2->ibuf + top * b2->stride: NULL; int x, y; - if (quant > 115) { + if (quant > DIRAC_MAX_QUANT_INDEX) { av_log(s->avctx, AV_LOG_ERROR, "Unsupported quant %d\n", quant); return; } - qfactor = ff_dirac_qscale_tab[quant & 0x7f]; - qoffset = ff_dirac_qoffset_intra_tab[quant & 0x7f] + 2; + qfactor = ff_dirac_qscale_tab[quant & DIRAC_MAX_QUANT_INDEX]; + qoffset = ff_dirac_qoffset_intra_tab[quant & DIRAC_MAX_QUANT_INDEX] + 2; /* we have to constantly check for overread since the spec explicitly requires this, with the meaning that all remaining coeffs are set to 0 */ if (get_bits_count(gb) >= bits_end) diff --git a/libavcodec/diractab.h b/libavcodec/diractab.h index cd8b8ac..2423b07 100644 --- a/libavcodec/diractab.h +++ b/libavcodec/diractab.h @@ -38,4 +38,6 @@ extern const int32_t ff_dirac_qoffset_intra_tab[120]; /* Scaling offsets needed for quantization/dequantization, for inter frames */ extern const int ff_dirac_qoffset_inter_tab[122]; +#define DIRAC_MAX_QUANT_INDEX (FF_ARRAY_ELEMS(ff_dirac_qscale_tab)) + #endif /* AVCODEC_DIRACTAB_H */ diff --git a/libavcodec/vc2enc.c b/libavcodec/vc2enc.c index bbbeaa0..eda3901 100644 --- a/libavcodec/vc2enc.c +++ b/libavcodec/vc2enc.c @@ -29,11 +29,8 @@ #include "vc2enc_dwt.h" #include "diractab.h" -/* Quantizations above this usually zero coefficients and lower the quality */ -#define MAX_QUANT_INDEX FF_ARRAY_ELEMS(ff_dirac_qscale_tab) - /* Total range is -COEF_LUT_TAB to +COEFF_LUT_TAB, but total tab size is half - * (COEF_LUT_TAB*MAX_QUANT_INDEX) since the sign is appended during encoding */ + * (COEF_LUT_TAB*DIRAC_MAX_QUANT_INDEX), as the sign is appended during encoding */ #define COEF_LUT_TAB 2048 /* The limited size resolution of each slice forces us to do this */ @@ -109,7 +106,7 @@ typedef struct Plane { typedef struct SliceArgs { PutBitContext pb; - int cache[MAX_QUANT_INDEX]; + int cache[DIRAC_MAX_QUANT_INDEX]; void *ctx; int x; int y; @@ -1074,7 +1071,7 @@ static av_cold int vc2_encode_init(AVCodecContext *avctx) s->picture_number = 0; /* Total allowed quantization range */ - s->q_ceil = MAX_QUANT_INDEX; + s->q_ceil = DIRAC_MAX_QUANT_INDEX; s->ver.major = 2; s->ver.minor = 0; -- 2.8.1.369.geae769a _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel