]> git.nihav.org Git - nihav.git/commitdiff
nihav_itu: switch to ByteIO
authorKostya Shishkov <kostya.shishkov@gmail.com>
Sun, 17 Aug 2025 17:22:01 +0000 (19:22 +0200)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Mon, 18 Aug 2025 17:01:32 +0000 (19:01 +0200)
nihav-itu/src/codecs/h264/decoder_mt.rs
nihav-itu/src/codecs/h264/decoder_st.rs
nihav-itu/src/codecs/h264/test/raw_demux.rs

index 118ba8581d35c9f353962181a219883502c0b43c..e5a8cb5440a5a84deb519cf1e4b7fd3a472c0047 100644 (file)
@@ -729,8 +729,7 @@ impl NADecoderMT for H264MTDecoder {
             let edata = info.get_extradata().unwrap();
 //print!("edata:"); for &el in edata.iter() { print!(" {:02X}", el); } println!();
             if edata.len() > 11 && &edata[0..4] == b"avcC" {
-                let mut mr = MemoryReader::new_read(edata.as_slice());
-                let mut br = ByteReader::new(&mut mr);
+                let mut br = MemoryReader::new_read(edata.as_slice());
 
                                           br.read_skip(4)?;
                 let version             = br.read_byte()?;
@@ -834,8 +833,7 @@ impl NADecoderMT for H264MTDecoder {
 
         let src = pkt.get_buffer();
 
-        let mut mr = MemoryReader::new_read(&src);
-        let mut br = ByteReader::new(&mut mr);
+        let mut br = MemoryReader::new_read(&src);
         let mut nal_buf = Vec::with_capacity(src.len());
 
         if self.nal_len > 0 {
index c82d62eca01f53cd75e3247aa89b4741237308bf..ce36d2ae8e65fbaf7da0bc80b7de1a841487d01e 100644 (file)
@@ -726,8 +726,7 @@ impl NADecoder for H264Decoder {
             let edata = info.get_extradata().unwrap();
 //print!("edata:"); for &el in edata.iter() { print!(" {:02X}", el); } println!();
             if edata.len() > 11 && &edata[0..4] == b"avcC" {
-                let mut mr = MemoryReader::new_read(edata.as_slice());
-                let mut br = ByteReader::new(&mut mr);
+                let mut br = MemoryReader::new_read(edata.as_slice());
                 let mut nal_buf = Vec::new();
 
                                           br.read_skip(4)?;
@@ -814,8 +813,7 @@ impl NADecoder for H264Decoder {
     fn decode(&mut self, supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
         let src = pkt.get_buffer();
 
-        let mut mr = MemoryReader::new_read(&src);
-        let mut br = ByteReader::new(&mut mr);
+        let mut br = MemoryReader::new_read(&src);
         let mut nal_buf = Vec::with_capacity(src.len());
         if self.nal_len > 0 {
             let mut skip_decoding = false;
index 857016d625cd09c0eb0a5d5bef602f55653235c7..ba6ff6e5bc0a307623a30d6487fc5b16b6905feb 100644 (file)
@@ -4,12 +4,12 @@ use nihav_core::demuxers::*;
 use nihav_core::formats::YUV420_FORMAT;
 
 struct RawH264Demuxer<'a> {
-    src:            &'a mut ByteReader<'a>,
+    src:            &'a mut dyn ByteIO,
     cur_frame:      u64,
     frame_buf:      Vec<u8>,
 }
 
-fn read_nal(src: &mut ByteReader, dst: &mut Vec<u8>) -> DemuxerResult<()> {
+fn read_nal(src: &mut dyn ByteIO, dst: &mut Vec<u8>) -> DemuxerResult<()> {
     dst.clear();
     loop {
         let b                           = src.read_byte()?;
@@ -64,7 +64,7 @@ impl<'a> DemuxCore<'a> for RawH264Demuxer<'a> {
 
         let mut nal_buf = Vec::with_capacity(65536);
         loop {
-            read_nal(src, &mut nal_buf)?;
+            read_nal(*src, &mut nal_buf)?;
             if !nal_buf.is_empty() {
                 let nal_type = nal_buf[0] & 0x1F;
                 match nal_type {
@@ -137,7 +137,7 @@ impl<'a> DemuxCore<'a> for RawH264Demuxer<'a> {
         let mut nal_buf = Vec::with_capacity(65536);
         let mut is_eof = false;
         while !is_eof {
-            match read_nal(&mut self.src, &mut nal_buf) {
+            match read_nal(self.src, &mut nal_buf) {
                 Ok(()) => {},
                 Err(DemuxerError::IOError) => { is_eof = true; },
                 Err(err) => return Err(err),
@@ -186,7 +186,7 @@ impl<'a> NAOptionHandler for RawH264Demuxer<'a> {
 }
 
 impl<'a> RawH264Demuxer<'a> {
-    fn new(io: &'a mut ByteReader<'a>) -> Self {
+    fn new(io: &'a mut dyn ByteIO) -> Self {
         RawH264Demuxer {
             src:            io,
             cur_frame:      0,
@@ -198,7 +198,7 @@ impl<'a> RawH264Demuxer<'a> {
 pub struct RawH264DemuxerCreator { }
 
 impl DemuxerCreator for RawH264DemuxerCreator {
-    fn new_demuxer<'a>(&self, br: &'a mut ByteReader<'a>) -> Box<dyn DemuxCore<'a> + 'a> {
+    fn new_demuxer<'a>(&self, br: &'a mut dyn ByteIO) -> Box<dyn DemuxCore<'a> + 'a> {
         Box::new(RawH264Demuxer::new(br))
     }
     fn get_name(&self) -> &'static str { "rawh264" }