use super::ans::AnsEncSymbolInfo;
use super::prefix_code::PrefixCode;
pub(crate) struct EntropyCode<'a> {
pub(crate) context_map: &'a [u8],
pub(crate) num_contexts: usize,
pub(crate) prefix_codes: &'a [PrefixCode],
#[allow(unused)]
pub(crate) num_prefix_codes: usize,
pub(crate) orig_context_map: Option<&'a [u8]>,
pub(crate) orig_num_contexts: usize,
pub(crate) use_prefix_code: bool,
pub(crate) ans_freqs: &'a [Vec<u16>],
pub(crate) ans_symbols: &'a [Vec<AnsEncSymbolInfo>],
}
pub(crate) struct OwnedEntropyCode {
pub(crate) context_map: Vec<u8>,
pub(crate) prefix_codes: Vec<PrefixCode>,
pub(crate) orig_context_map: Option<Vec<u8>>,
pub(crate) orig_num_contexts: usize,
pub(crate) use_prefix_code: bool,
pub(crate) ans_freqs: Vec<Vec<u16>>,
pub(crate) ans_symbols: Vec<Vec<AnsEncSymbolInfo>>,
}
impl OwnedEntropyCode {
pub(crate) fn as_ref(&self) -> EntropyCode<'_> {
EntropyCode {
context_map: &self.context_map,
num_contexts: self.context_map.len(),
prefix_codes: &self.prefix_codes,
num_prefix_codes: self.prefix_codes.len(),
orig_context_map: self.orig_context_map.as_deref(),
orig_num_contexts: self.orig_num_contexts,
use_prefix_code: self.use_prefix_code,
ans_freqs: &self.ans_freqs,
ans_symbols: &self.ans_symbols,
}
}
}