minor fix to eob check for setting CONTEXT
Previously, the "!=" check is logically incorrect when eob is at 0 and effective coefficient starting position is 1. This commit should have no effect on bitstream. Change-Id: I6ce3a847c7e72bfbe4f7c74f88e3310c6b9b6d30
This commit is contained in:
parent
b2f27d909a
commit
7ab1d3e49f
@ -243,7 +243,7 @@ SKIP_START:
|
|||||||
if (c < seg_eob)
|
if (c < seg_eob)
|
||||||
coef_counts[coef_bands[c]][pt][DCT_EOB_TOKEN]++;
|
coef_counts[coef_bands[c]][pt][DCT_EOB_TOKEN]++;
|
||||||
|
|
||||||
a[0] = l[0] = (c != !type);
|
a[0] = l[0] = (c > !type);
|
||||||
|
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
@ -291,11 +291,8 @@ static int vp9_decode_mb_tokens_16x16(VP9D_COMP* const pbi,
|
|||||||
l[1] = l[0];
|
l[1] = l[0];
|
||||||
eobtotal += c;
|
eobtotal += c;
|
||||||
}
|
}
|
||||||
|
A[8] = 0;
|
||||||
// no Y2 block
|
L[8] = 0;
|
||||||
vpx_memset(&A[8], 0, sizeof(A[8]));
|
|
||||||
vpx_memset(&L[8], 0, sizeof(L[8]));
|
|
||||||
|
|
||||||
return eobtotal;
|
return eobtotal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -491,7 +491,7 @@ static void optimize_b(MACROBLOCK *mb, int i, PLANE_TYPE type,
|
|||||||
final_eob++;
|
final_eob++;
|
||||||
|
|
||||||
d->eob = final_eob;
|
d->eob = final_eob;
|
||||||
*a = *l = (d->eob != !type);
|
*a = *l = (d->eob > !type);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
@ -854,7 +854,7 @@ static void optimize_b_16x16(MACROBLOCK *mb, int i, PLANE_TYPE type,
|
|||||||
final_eob++;
|
final_eob++;
|
||||||
|
|
||||||
d->eob = final_eob;
|
d->eob = final_eob;
|
||||||
*a = *l = (d->eob != !type);
|
*a = *l = (d->eob > !type);
|
||||||
}
|
}
|
||||||
|
|
||||||
void vp9_optimize_mby_16x16(MACROBLOCK *x) {
|
void vp9_optimize_mby_16x16(MACROBLOCK *x) {
|
||||||
|
@ -539,8 +539,8 @@ static int cost_coeffs_2x2(MACROBLOCK *mb,
|
|||||||
if (c < 4)
|
if (c < 4)
|
||||||
cost += mb->token_costs[TX_8X8][type][vp9_coef_bands[c]]
|
cost += mb->token_costs[TX_8X8][type][vp9_coef_bands[c]]
|
||||||
[pt] [DCT_EOB_TOKEN];
|
[pt] [DCT_EOB_TOKEN];
|
||||||
|
// is eob first coefficient;
|
||||||
pt = (c != !type); // is eob first coefficient;
|
pt = (c > !type);
|
||||||
*a = *l = pt;
|
*a = *l = pt;
|
||||||
return cost;
|
return cost;
|
||||||
}
|
}
|
||||||
@ -640,7 +640,8 @@ static int cost_coeffs(MACROBLOCK *mb, BLOCKD *b, PLANE_TYPE type,
|
|||||||
[pt][DCT_EOB_TOKEN];
|
[pt][DCT_EOB_TOKEN];
|
||||||
}
|
}
|
||||||
|
|
||||||
pt = (c != !type); // is eob first coefficient;
|
// is eob first coefficient;
|
||||||
|
pt = (c > !type);
|
||||||
*a = *l = pt;
|
*a = *l = pt;
|
||||||
return cost;
|
return cost;
|
||||||
}
|
}
|
||||||
|
@ -212,7 +212,7 @@ static void tokenize_b(VP9_COMP *cpi,
|
|||||||
} while (c < eob && ++c < seg_eob);
|
} while (c < eob && ++c < seg_eob);
|
||||||
|
|
||||||
*tp = t;
|
*tp = t;
|
||||||
*a = *l = (c != !type); /* 0 <-> all coeff data is zero */
|
*a = *l = (c > !type); /* 0 <-> all coeff data is zero */
|
||||||
}
|
}
|
||||||
|
|
||||||
int vp9_mby_is_skippable_4x4(MACROBLOCKD *xd, int has_y2_block) {
|
int vp9_mby_is_skippable_4x4(MACROBLOCKD *xd, int has_y2_block) {
|
||||||
@ -377,8 +377,8 @@ void vp9_tokenize_mb(VP9_COMP *cpi,
|
|||||||
A[vp9_block2above_8x8[b] + 1] = A[vp9_block2above_8x8[b]];
|
A[vp9_block2above_8x8[b] + 1] = A[vp9_block2above_8x8[b]];
|
||||||
L[vp9_block2left_8x8[b] + 1] = L[vp9_block2left_8x8[b]];
|
L[vp9_block2left_8x8[b] + 1] = L[vp9_block2left_8x8[b]];
|
||||||
}
|
}
|
||||||
vpx_memset(&A[8], 0, sizeof(A[8]));
|
A[8] = 0;
|
||||||
vpx_memset(&L[8], 0, sizeof(L[8]));
|
L[8] = 0;
|
||||||
} else if (tx_size == TX_8X8) {
|
} else if (tx_size == TX_8X8) {
|
||||||
for (b = 0; b < 16; b += 4) {
|
for (b = 0; b < 16; b += 4) {
|
||||||
tokenize_b(cpi, xd, xd->block + b, t, plane_type,
|
tokenize_b(cpi, xd, xd->block + b, t, plane_type,
|
||||||
|
Loading…
Reference in New Issue
Block a user