Go to the documentation of this file.
37 const uint8_t *src_scantable)
41 for (
int i = 0, end = -1;
i < 64;
i++) {
42 int j = src_scantable[
i];
44 if (permutation[j] > end)
51 int16_t *
block,
int n,
int qscale)
54 const uint16_t *quant_matrix;
56 nCoeffs=
s->block_last_index[n];
58 block[0] *= n < 4 ?
s->y_dc_scale :
s->c_dc_scale;
60 quant_matrix =
s->intra_matrix;
61 for(
i=1;
i<=nCoeffs;
i++) {
62 int j=
s->intra_scantable.permutated[
i];
67 level = (int)(
level * qscale * quant_matrix[j]) >> 3;
71 level = (int)(
level * qscale * quant_matrix[j]) >> 3;
80 int16_t *
block,
int n,
int qscale)
83 const uint16_t *quant_matrix;
85 nCoeffs=
s->block_last_index[n];
87 quant_matrix =
s->inter_matrix;
88 for(
i=0;
i<=nCoeffs;
i++) {
89 int j=
s->intra_scantable.permutated[
i];
95 ((int) (quant_matrix[j]))) >> 4;
100 ((int) (quant_matrix[j]))) >> 4;
109 int16_t *
block,
int n,
int qscale)
112 const uint16_t *quant_matrix;
117 nCoeffs=
s->block_last_index[n];
119 block[0] *= n < 4 ?
s->y_dc_scale :
s->c_dc_scale;
120 quant_matrix =
s->intra_matrix;
121 for(
i=1;
i<=nCoeffs;
i++) {
122 int j=
s->intra_scantable.permutated[
i];
127 level = (int)(
level * qscale * quant_matrix[j]) >> 4;
130 level = (int)(
level * qscale * quant_matrix[j]) >> 4;
138 int16_t *
block,
int n,
int qscale)
141 const uint16_t *quant_matrix;
147 nCoeffs=
s->block_last_index[n];
149 block[0] *= n < 4 ?
s->y_dc_scale :
s->c_dc_scale;
151 quant_matrix =
s->intra_matrix;
152 for(
i=1;
i<=nCoeffs;
i++) {
153 int j=
s->intra_scantable.permutated[
i];
158 level = (int)(
level * qscale * quant_matrix[j]) >> 4;
161 level = (int)(
level * qscale * quant_matrix[j]) >> 4;
171 int16_t *
block,
int n,
int qscale)
174 const uint16_t *quant_matrix;
180 nCoeffs=
s->block_last_index[n];
182 quant_matrix =
s->inter_matrix;
183 for(
i=0;
i<=nCoeffs;
i++) {
184 int j=
s->intra_scantable.permutated[
i];
190 ((int) (quant_matrix[j]))) >> 5;
194 ((int) (quant_matrix[j]))) >> 5;
204 int16_t *
block,
int n,
int qscale)
214 block[0] *= n < 4 ?
s->y_dc_scale :
s->c_dc_scale;
215 qadd = (qscale - 1) | 1;
222 nCoeffs=
s->intra_scantable.raster_end[
s->block_last_index[n] ];
224 for(
i=1;
i<=nCoeffs;
i++) {
238 int16_t *
block,
int n,
int qscale)
245 qadd = (qscale - 1) | 1;
248 nCoeffs=
s->inter_scantable.raster_end[
s->block_last_index[n] ];
250 for(
i=0;
i<=nCoeffs;
i++) {
264 int bitexact,
int q_scale_type)
275 #if HAVE_INTRINSICS_NEON
static void dct_unquantize_mpeg2_intra_bitexact(const MPVContext *s, int16_t *block, int n, int qscale)
static void dct_unquantize_mpeg2_intra_c(const MPVContext *s, int16_t *block, int n, int qscale)
av_cold void ff_init_scantable(const uint8_t *permutation, ScanTable *st, const uint8_t *src_scantable)
av_cold void ff_mpv_unquantize_init_arm(MPVUnquantDSPContext *s, int bitexact)
void ff_mpv_unquantize_init_x86(MPVUnquantDSPContext *s, int bitexact)
void ff_mpv_unquantize_init_neon(MPVUnquantDSPContext *s, int bitexact)
void ff_mpv_unquantize_init_ppc(MPVUnquantDSPContext *s, int bitexact)
const uint8_t ff_mpeg2_non_linear_qscale[32]
static void dct_unquantize_h263_inter_c(const MPVContext *s, int16_t *block, int n, int qscale)
static void dct_unquantize_mpeg1_inter_c(const MPVContext *s, int16_t *block, int n, int qscale)
static void dct_unquantize_mpeg2_inter_c(const MPVContext *s, int16_t *block, int n, int qscale)
static void dct_unquantize_h263_intra_c(const MPVContext *s, int16_t *block, int n, int qscale)
const uint8_t * scantable
av_cold void ff_mpv_unquantize_init(MPVUnquantDSPContext *s, int bitexact, int q_scale_type)
#define av_assert2(cond)
assert() equivalent, that does lie in speed critical code.
#define i(width, name, range_min, range_max)
av_cold void ff_mpv_unquantize_init_mips(MPVUnquantDSPContext *s, int bitexact, int q_scale_type)
static void dct_unquantize_mpeg1_intra_c(const MPVContext *s, int16_t *block, int n, int qscale)
The exact code depends on how similar the blocks are and how related they are to the block