mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-13 21:28:01 +02:00
get those permutations straight
Originally committed as revision 1850 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
892fc83e88
commit
463d086bb5
@ -862,7 +862,7 @@ static void init_dequantizer(Vp3DecodeContext *s)
|
|||||||
* the dequantization phase */
|
* the dequantization phase */
|
||||||
for (i = 1; i < 64; i++) {
|
for (i = 1; i < 64; i++) {
|
||||||
|
|
||||||
j = quant_index[i];
|
j = zigzag_index[i];
|
||||||
|
|
||||||
s->intra_y_dequant[j] = vp31_intra_y_dequant[i] * quality_scale / 100;
|
s->intra_y_dequant[j] = vp31_intra_y_dequant[i] * quality_scale / 100;
|
||||||
if (s->intra_y_dequant[j] < MIN_DEQUANT_VAL)
|
if (s->intra_y_dequant[j] < MIN_DEQUANT_VAL)
|
||||||
@ -2065,6 +2065,7 @@ static void render_fragments(Vp3DecodeContext *s,
|
|||||||
int j;
|
int j;
|
||||||
int16_t *dequantizer;
|
int16_t *dequantizer;
|
||||||
DCTELEM dequant_block[64];
|
DCTELEM dequant_block[64];
|
||||||
|
DCTELEM dequant_block_permuted[64];
|
||||||
unsigned char *output_plane;
|
unsigned char *output_plane;
|
||||||
unsigned char *last_plane;
|
unsigned char *last_plane;
|
||||||
unsigned char *golden_plane;
|
unsigned char *golden_plane;
|
||||||
@ -2155,9 +2156,12 @@ static void render_fragments(Vp3DecodeContext *s,
|
|||||||
i, s->all_fragments[i].coding_method,
|
i, s->all_fragments[i].coding_method,
|
||||||
s->all_fragments[i].coeffs[0], dequantizer[0]);
|
s->all_fragments[i].coeffs[0], dequantizer[0]);
|
||||||
for (j = 0; j < 64; j++)
|
for (j = 0; j < 64; j++)
|
||||||
dequant_block[dequant_index[j]] =
|
dequant_block[dezigzag_index[j]] =
|
||||||
s->all_fragments[i].coeffs[j] *
|
s->all_fragments[i].coeffs[j] *
|
||||||
dequantizer[j];
|
dequantizer[j];
|
||||||
|
for (j = 0; j < 64; j++)
|
||||||
|
dequant_block_permuted[s->dsp.idct_permutation[j]] =
|
||||||
|
dequant_block[j];
|
||||||
|
|
||||||
debug_idct("dequantized block:\n");
|
debug_idct("dequantized block:\n");
|
||||||
for (m = 0; m < 8; m++) {
|
for (m = 0; m < 8; m++) {
|
||||||
@ -2171,14 +2175,14 @@ static void render_fragments(Vp3DecodeContext *s,
|
|||||||
/* invert DCT and place (or add) in final output */
|
/* invert DCT and place (or add) in final output */
|
||||||
|
|
||||||
if (s->all_fragments[i].coding_method == MODE_INTRA) {
|
if (s->all_fragments[i].coding_method == MODE_INTRA) {
|
||||||
dequant_block[0] += 1024;
|
dequant_block_permuted[0] += 1024;
|
||||||
s->dsp.idct_put(
|
s->dsp.idct_put(
|
||||||
output_plane + s->all_fragments[i].first_pixel,
|
output_plane + s->all_fragments[i].first_pixel,
|
||||||
stride, dequant_block);
|
stride, dequant_block_permuted);
|
||||||
} else {
|
} else {
|
||||||
s->dsp.idct_add(
|
s->dsp.idct_add(
|
||||||
output_plane + s->all_fragments[i].first_pixel,
|
output_plane + s->all_fragments[i].first_pixel,
|
||||||
stride, dequant_block);
|
stride, dequant_block_permuted);
|
||||||
}
|
}
|
||||||
|
|
||||||
debug_idct("block after idct_%s():\n",
|
debug_idct("block after idct_%s():\n",
|
||||||
@ -2363,7 +2367,7 @@ static int vp3_decode_init(AVCodecContext *avctx)
|
|||||||
|
|
||||||
/* build quantization table */
|
/* build quantization table */
|
||||||
for (i = 0; i < 64; i++)
|
for (i = 0; i < 64; i++)
|
||||||
quant_index[dequant_index[i]] = i;
|
zigzag_index[dezigzag_index[i]] = i;
|
||||||
|
|
||||||
/* work out the block mapping tables */
|
/* work out the block mapping tables */
|
||||||
s->superblock_fragments = av_malloc(s->superblock_count * 16 * sizeof(int));
|
s->superblock_fragments = av_malloc(s->superblock_count * 16 * sizeof(int));
|
||||||
|
@ -60,7 +60,7 @@ static uint32_t vp31_quality_threshold[64] =
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* table used to convert natural order <-> zigzag order */
|
/* table used to convert natural order <-> zigzag order */
|
||||||
static const int dequant_index[64] =
|
static const int dezigzag_index[64] =
|
||||||
{ 0, 1, 8, 16, 9, 2, 3, 10,
|
{ 0, 1, 8, 16, 9, 2, 3, 10,
|
||||||
17, 24, 32, 25, 18, 11, 4, 5,
|
17, 24, 32, 25, 18, 11, 4, 5,
|
||||||
12, 19, 26, 33, 40, 48, 41, 34,
|
12, 19, 26, 33, 40, 48, 41, 34,
|
||||||
@ -71,8 +71,8 @@ static const int dequant_index[64] =
|
|||||||
53, 60, 61, 54, 47, 55, 62, 63
|
53, 60, 61, 54, 47, 55, 62, 63
|
||||||
};
|
};
|
||||||
|
|
||||||
/* inverse of dequant index */
|
/* inverse of dezigzag index */
|
||||||
static int quant_index[64];
|
static int zigzag_index[64];
|
||||||
|
|
||||||
static const uint16_t dc_bias[16][32][2] = {
|
static const uint16_t dc_bias[16][32][2] = {
|
||||||
{ /* DC bias table 0 */
|
{ /* DC bias table 0 */
|
||||||
|
Loading…
Reference in New Issue
Block a user