X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-itu%2Fsrc%2Fcodecs%2Fh264%2Fsets.rs;h=2d879bdd7b87bc1a682e294a168939a6a3dbdae7;hb=625751036014b099fd9c126397bc973cb0543130;hp=88566992e3748baeefaf91fb9a3eb15ebf8b4d3f;hpb=696e4e20bf7167121352f247893370cb83213d5c;p=nihav.git diff --git a/nihav-itu/src/codecs/h264/sets.rs b/nihav-itu/src/codecs/h264/sets.rs index 8856699..2d879bd 100644 --- a/nihav-itu/src/codecs/h264/sets.rs +++ b/nihav-itu/src/codecs/h264/sets.rs @@ -1,3 +1,5 @@ +use std::sync::Arc; + use nihav_core::codecs::{DecoderResult, DecoderError}; use nihav_core::io::bitreader::*; @@ -44,12 +46,10 @@ pub struct SeqParameterSet { } pub fn is_high_profile(profile: u8) -> bool { - match profile { - 100 | 110 | 122 | 244 | 44 | 83 | 86 | 118 | 128 | 138 | 139 | 134 | 125 => true, - _ => false, - } + matches!(profile, 100 | 110 | 122 | 244 | 44 | 83 | 86 | 118 | 128 | 138 | 139 | 134 | 125) } +#[allow(clippy::cognitive_complexity)] pub fn parse_sps(src: &[u8]) -> DecoderResult { let mut br = BitReader::new(src, BitReaderMode::BE); let mut sps: SeqParameterSet = unsafe { std::mem::zeroed() }; @@ -305,7 +305,7 @@ pub struct PicParameterSet { pub second_chroma_qp_index_offset: i8, } -pub fn parse_pps(src: &[u8], sps_arr: &[SeqParameterSet], full_size: usize) -> DecoderResult { +pub fn parse_pps(src: &[u8], sps_arr: &[Arc], full_size: usize) -> DecoderResult> { let mut br = BitReader::new(src, BitReaderMode::BE); let mut pps: PicParameterSet = unsafe { std::mem::zeroed() }; @@ -419,5 +419,5 @@ println!("slice mode!"); pps.second_chroma_qp_index_offset = pps.chroma_qp_index_offset; } - Ok(pps) + Ok(Arc::new(pps)) }