aac: clear M/S flags
[nihav.git] / nihav-itu / src / codecs / h264 / sets.rs
index 88566992e3748baeefaf91fb9a3eb15ebf8b4d3f..2d879bdd7b87bc1a682e294a168939a6a3dbdae7 100644 (file)
@@ -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<SeqParameterSet> {
     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<PicParameterSet> {
+pub fn parse_pps(src: &[u8], sps_arr: &[Arc<SeqParameterSet>], full_size: usize) -> DecoderResult<Arc<PicParameterSet>> {
     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))
 }