mirror of
https://github.com/ultravideo/uvg266.git
synced 2024-11-24 02:24:07 +00:00
Scan CG's in forward order to simplify finding last significant
This commit is contained in:
parent
efd097f5a5
commit
c4434e8d04
|
@ -227,10 +227,9 @@ void kvz_encode_coeff_nxn_avx2(encoder_state_t * const state,
|
|||
// 0 if false (not actually undefined, it's a bitmask representing the
|
||||
// significant coefficients' position in the group which in itself could
|
||||
// be useful information)
|
||||
uint32_t scan_cg_last = 0;
|
||||
uint32_t scan_cg_last_not_found = -1;
|
||||
int32_t scan_cg_last = -1;
|
||||
|
||||
for (int32_t i = num_blocks - 1; i >= 0; i--) {
|
||||
for (int32_t i = 0; i < num_blocks; i++) {
|
||||
const uint32_t cg_id = scan_cg[i];
|
||||
const uint32_t n_xbits = log2_block_size - 2; // How many lowest bits of scan_cg represent X coord
|
||||
const uint32_t cg_x = cg_id & ((1 << n_xbits) - 1);
|
||||
|
@ -264,13 +263,11 @@ void kvz_encode_coeff_nxn_avx2(encoder_state_t * const state,
|
|||
uint32_t nz_coeffs_2b = ~((uint32_t)_mm256_movemask_epi8(coeffs_zero));
|
||||
sig_coeffgroup_flag[addr] = nz_coeffs_2b;
|
||||
|
||||
if (nz_coeffs_2b & scan_cg_last_not_found) {
|
||||
if (nz_coeffs_2b)
|
||||
scan_cg_last = i;
|
||||
scan_cg_last_not_found = 0;
|
||||
}
|
||||
}
|
||||
// Rest of the code assumes at least one non-zero coeff.
|
||||
assert(scan_cg_last_not_found == 0);
|
||||
assert(scan_cg_last >= 0);
|
||||
|
||||
ALIGNED(64) int16_t coeff_reord[LCU_WIDTH * LCU_WIDTH];
|
||||
for (int32_t i = scan_cg_last; i >= 0; i--) {
|
||||
|
|
Loading…
Reference in a new issue