use std::collections::HashMap;
use std::cmp::{max, min};
-use io::bitreader::BitReader;
+use super::bitreader::BitReader;
#[derive(Debug)]
pub enum CodebookError {
let mut symidx: usize = 0;
for i in 0..cb.len() {
let bits = cb.bits(i);
- if bits > 0 { nnz = nnz + 1; }
+ if bits > 0 {
+ nnz = nnz + 1;
+ if cb.code(i) >= (1 << bits) {
+ return Err(CodebookError::InvalidCodebook);
+ }
+ }
maxbits = max(bits, maxbits);
if bits > MAX_LUT_BITS {
let code = cb.code(i);
#[cfg(test)]
mod test {
use super::*;
- use io::bitreader::*;
+ use crate::io::bitreader::*;
#[test]
fn test_cb() {