Skip to content
Snippets Groups Projects
Commit 4cfb0d87 authored by Kostya Shishkov's avatar Kostya Shishkov
Browse files

tscc2: do not add/subtract 128 bias during DCT

It turns out that the reference decoder subtracts 128 from DC during block
decode but adds it back during reordering block with zigzag pattern.
Transforming block with incorrect DC caused heavy visual artifacts for
many quantisers.
parent 3c6c1918
No related branches found
No related tags found
No related merge requests found
......@@ -95,7 +95,7 @@ static av_cold int init_vlcs(TSCC2Context *c)
OP(d3, 5 * ((s0) - (s1) + (s2)) - 2 * (s3)); \
#define COL_OP(a, b) a = b
#define ROW_OP(a, b) a = (((b) + 0x20) >> 6) + 0x80
#define ROW_OP(a, b) a = ((b) + 0x20) >> 6
static void tscc2_idct4_put(int *in, int q[3], uint8_t *dst, int stride)
{
......@@ -158,7 +158,7 @@ static int tscc2_decode_mb(TSCC2Context *c, int *q, int vlc_set,
}
dc = (dc + prev_dc) & 0xFF;
prev_dc = dc;
c->block[0] = dc - 0x80;
c->block[0] = dc;
nc = get_vlc2(gb, c->nc_vlc[vlc_set].table, 9, 1);
if (nc == -1)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment