@ -2347,21 +2347,40 @@ decode_intra_mb:
if ( CHROMA444 ( h ) & & IS_8x8DCT ( mb_type ) ) {
int i ;
uint8_t * nnz_cache = sl - > non_zero_count_cache ;
for ( i = 0 ; i < 2 ; i + + ) {
if ( sl - > left_type [ LEFT ( i ) ] & & ! IS_8x8DCT ( sl - > left_type [ LEFT ( i ) ] ) ) {
nnz_cache [ 3 + 8 * 1 + 2 * 8 * i ] =
nnz_cache [ 3 + 8 * 2 + 2 * 8 * i ] =
nnz_cache [ 3 + 8 * 6 + 2 * 8 * i ] =
nnz_cache [ 3 + 8 * 7 + 2 * 8 * i ] =
nnz_cache [ 3 + 8 * 11 + 2 * 8 * i ] =
nnz_cache [ 3 + 8 * 12 + 2 * 8 * i ] = IS_INTRA ( mb_type ) ? 64 : 0 ;
if ( h - > sei . unregistered . x264_build < 151U ) {
for ( i = 0 ; i < 2 ; i + + ) {
if ( sl - > left_type [ LEFT ( i ) ] & & ! IS_8x8DCT ( sl - > left_type [ LEFT ( i ) ] ) ) {
nnz_cache [ 3 + 8 * 1 + 2 * 8 * i ] =
nnz_cache [ 3 + 8 * 2 + 2 * 8 * i ] =
nnz_cache [ 3 + 8 * 6 + 2 * 8 * i ] =
nnz_cache [ 3 + 8 * 7 + 2 * 8 * i ] =
nnz_cache [ 3 + 8 * 11 + 2 * 8 * i ] =
nnz_cache [ 3 + 8 * 12 + 2 * 8 * i ] = IS_INTRA ( mb_type ) ? 64 : 0 ;
}
}
if ( sl - > top_type & & ! IS_8x8DCT ( sl - > top_type ) ) {
uint32_t top_empty = ! IS_INTRA ( mb_type ) ? 0 : 0x40404040 ;
AV_WN32A ( & nnz_cache [ 4 + 8 * 0 ] , top_empty ) ;
AV_WN32A ( & nnz_cache [ 4 + 8 * 5 ] , top_empty ) ;
AV_WN32A ( & nnz_cache [ 4 + 8 * 10 ] , top_empty ) ;
}
} else {
for ( i = 0 ; i < 2 ; i + + ) {
if ( sl - > left_type [ LEFT ( i ) ] & & ! IS_8x8DCT ( sl - > left_type [ LEFT ( i ) ] ) ) {
nnz_cache [ 3 + 8 * 1 + 2 * 8 * i ] =
nnz_cache [ 3 + 8 * 2 + 2 * 8 * i ] =
nnz_cache [ 3 + 8 * 6 + 2 * 8 * i ] =
nnz_cache [ 3 + 8 * 7 + 2 * 8 * i ] =
nnz_cache [ 3 + 8 * 11 + 2 * 8 * i ] =
nnz_cache [ 3 + 8 * 12 + 2 * 8 * i ] = ! IS_INTRA_PCM ( sl - > left_type [ LEFT ( i ) ] ) ? 0 : 64 ;
}
}
if ( sl - > top_type & & ! IS_8x8DCT ( sl - > top_type ) ) {
uint32_t top_empty = ! IS_INTRA_PCM ( sl - > top_type ) ? 0 : 0x40404040 ;
AV_WN32A ( & nnz_cache [ 4 + 8 * 0 ] , top_empty ) ;
AV_WN32A ( & nnz_cache [ 4 + 8 * 5 ] , top_empty ) ;
AV_WN32A ( & nnz_cache [ 4 + 8 * 10 ] , top_empty ) ;
}
}
if ( sl - > top_type & & ! IS_8x8DCT ( sl - > top_type ) ) {
uint32_t top_empty = ! IS_INTRA ( mb_type ) ? 0 : 0x40404040 ;
AV_WN32A ( & nnz_cache [ 4 + 8 * 0 ] , top_empty ) ;
AV_WN32A ( & nnz_cache [ 4 + 8 * 5 ] , top_empty ) ;
AV_WN32A ( & nnz_cache [ 4 + 8 * 10 ] , top_empty ) ;
}
}
h - > cur_pic . mb_type [ mb_xy ] = mb_type ;