trait ReadUE {
fn read_ue(&mut self) -> DecoderResult<u32>;
- fn read_te(&mut self, range: u32) -> DecoderResult<u32>;
fn read_ue_lim(&mut self, max_val: u32) -> DecoderResult<u32> {
let val = self.read_ue()?;
validate!(val <= max_val);
fn read_ue(&mut self) -> DecoderResult<u32> {
Ok(self.read_code(UintCodeType::GammaP)? - 1)
}
- fn read_te(&mut self, range: u32) -> DecoderResult<u32> {
- if range == 1 {
- if self.read_bool()? {
- Ok(0)
- } else {
- Ok(1)
- }
- } else {
- let val = self.read_ue()?;
- validate!(val <= range);
- Ok(val)
- }
- }
}
fn get_long_term_id(is_idr: bool, slice_hdr: &SliceHeader) -> Option<usize> {