|
|
@@ -1188,16 +1188,16 @@ static void inter_predict(VP8Context *s, uint8_t *dst[3], VP8Macroblock *mb, |
|
|
|
|
|
|
|
|
static void idct_mb(VP8Context *s, uint8_t *dst[3], VP8Macroblock *mb) |
|
|
static void idct_mb(VP8Context *s, uint8_t *dst[3], VP8Macroblock *mb) |
|
|
{ |
|
|
{ |
|
|
int x, y, ch, nnz; |
|
|
|
|
|
|
|
|
int x, y, ch; |
|
|
|
|
|
|
|
|
if (mb->mode != MODE_I4x4) { |
|
|
if (mb->mode != MODE_I4x4) { |
|
|
uint8_t *y_dst = dst[0]; |
|
|
uint8_t *y_dst = dst[0]; |
|
|
for (y = 0; y < 4; y++) { |
|
|
for (y = 0; y < 4; y++) { |
|
|
uint32_t nnz = AV_RN32A(s->non_zero_count_cache[y]); |
|
|
|
|
|
if (nnz) { |
|
|
|
|
|
if (nnz&~0x01010101) { |
|
|
|
|
|
|
|
|
uint32_t nnz4 = AV_RN32A(s->non_zero_count_cache[y]); |
|
|
|
|
|
if (nnz4) { |
|
|
|
|
|
if (nnz4&~0x01010101) { |
|
|
for (x = 0; x < 4; x++) { |
|
|
for (x = 0; x < 4; x++) { |
|
|
nnz = s->non_zero_count_cache[y][x]; |
|
|
|
|
|
|
|
|
int nnz = s->non_zero_count_cache[y][x]; |
|
|
if (nnz) { |
|
|
if (nnz) { |
|
|
if (nnz == 1) |
|
|
if (nnz == 1) |
|
|
s->vp8dsp.vp8_idct_dc_add(y_dst+4*x, s->block[y][x], s->linesize); |
|
|
s->vp8dsp.vp8_idct_dc_add(y_dst+4*x, s->block[y][x], s->linesize); |
|
|
@@ -1218,7 +1218,7 @@ static void idct_mb(VP8Context *s, uint8_t *dst[3], VP8Macroblock *mb) |
|
|
uint8_t *ch_dst = dst[1+ch]; |
|
|
uint8_t *ch_dst = dst[1+ch]; |
|
|
for (y = 0; y < 2; y++) { |
|
|
for (y = 0; y < 2; y++) { |
|
|
for (x = 0; x < 2; x++) { |
|
|
for (x = 0; x < 2; x++) { |
|
|
nnz = s->non_zero_count_cache[4+ch][(y<<1)+x]; |
|
|
|
|
|
|
|
|
int nnz = s->non_zero_count_cache[4+ch][(y<<1)+x]; |
|
|
if (nnz) { |
|
|
if (nnz) { |
|
|
if (nnz == 1) |
|
|
if (nnz == 1) |
|
|
s->vp8dsp.vp8_idct_dc_add(ch_dst+4*x, s->block[4+ch][(y<<1)+x], s->uvlinesize); |
|
|
s->vp8dsp.vp8_idct_dc_add(ch_dst+4*x, s->block[4+ch][(y<<1)+x], s->uvlinesize); |
|
|
|