aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKostya Shishkov <kostya.shishkov@gmail.com>2021-05-12 18:29:34 +0200
committerKostya Shishkov <kostya.shishkov@gmail.com>2021-05-12 18:29:34 +0200
commit14833a644657637b06a511e4bf6db0ec9ba0ad12 (patch)
treea62839e4cf9a24f50c5983cbb499d3411ca784f7
parent757ee9164bd2ab7e1690ae2ea4e5a03f7b37f1b5 (diff)
downloadnihav-14833a644657637b06a511e4bf6db0ec9ba0ad12.tar.gz
h264: use 6-bit state_idx in CABAC decoder (this eliminates boundary check)
-rw-r--r--nihav-itu/src/codecs/h264/cabac_coder.rs2
1 files changed, 1 insertions, 1 deletions
diff --git a/nihav-itu/src/codecs/h264/cabac_coder.rs b/nihav-itu/src/codecs/h264/cabac_coder.rs
index 0e14809..baa8caf 100644
--- a/nihav-itu/src/codecs/h264/cabac_coder.rs
+++ b/nihav-itu/src/codecs/h264/cabac_coder.rs
@@ -131,7 +131,7 @@ impl<'a> CABAC<'a> {
}
pub fn decode_bit(&mut self, idx: usize) -> bool {
let mut val_mps = (self.states[idx] & 0x80) != 0;
- let state_idx = (self.states[idx] & 0x7F) as usize;
+ let state_idx = (self.states[idx] & 0x3F) as usize;
let range_idx = ((self.cod_range >> 6) & 3) as usize;
let range_lps = u16::from(RANGE_TBL_LPS[range_idx + state_idx * 4]);
self.cod_range -= range_lps;