]> git.nihav.org Git - nihav-encoder.git/commitdiff
use self-borrow box that from nihav_core
authorKostya Shishkov <kostya.shishkov@gmail.com>
Sat, 31 Jan 2026 12:38:34 +0000 (13:38 +0100)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Sat, 31 Jan 2026 12:38:34 +0000 (13:38 +0100)
src/demux.rs
src/transcoder.rs

index 322e15d725e590aac89b8d378668041297d79137..ae5058adec689b583c22451a7412ba09c4c689a3 100644 (file)
@@ -4,10 +4,10 @@ use nihav_core::demuxers::*;
 use nihav_core::muxers::*;
 use nihav_registry::detect;
 use nihav_core::io::byteio::ByteIO;
+use nihav_core::sbbox::*;
 use nihav_allstuff::*;
 use crate::null::*;
 use crate::imgseq::*;
-use crate::{SBBox, SelfBorrow};
 
 pub struct FullRegister {
     pub dmx_reg:    RegisteredDemuxers,
@@ -89,7 +89,7 @@ impl<'a> DemuxerObject<'a> {
                                 create_demuxer(dmx_fact, (*br_).as_mut()).ok()
                             }
                         });
-                    if let Some(dmx) = ret {
+                    if let Ok(dmx) = ret {
                         return DemuxerObject::Normal(dmx);
                     } else {
                         println!("demuxer creation failed!");
@@ -111,7 +111,7 @@ impl<'a> DemuxerObject<'a> {
                                 create_raw_demuxer(rdmx_fact, (*br_).as_mut()).ok()
                             }
                         });
-                    if let Some(dmx) = ret {
+                    if let Ok(dmx) = ret {
                         let mut pkts = Vec::new();
                         for stream in dmx.get_object().get_streams() {
                             if let Some(pcreate) = reg.pkt_reg.find_packetiser(stream.get_info().get_name()) {
@@ -140,7 +140,7 @@ impl<'a> DemuxerObject<'a> {
                                 create_raw_demuxer(*rdmx, (*br_).as_mut()).ok()
                             }
                         });
-                    if let Some(dmx) = ret {
+                    if let Ok(dmx) = ret {
                         let mut pkts = Vec::new();
                         for stream in dmx.get_object().get_streams() {
                             if let Some(pcreate) = reg.pkt_reg.find_packetiser(stream.get_info().get_name()) {
index 3139a0aeb2e3a6301917003c0cc9f96553988b01..e6d09acbcdfa7d196442de9010b4f730f4431455 100644 (file)
@@ -1,6 +1,5 @@
 use std::fs::File;
 use std::io::BufReader;
-use std::pin::Pin;
 use std::collections::VecDeque;
 use nihav_core::frame::*;
 use nihav_core::options::*;
@@ -34,61 +33,6 @@ pub enum RegisterResult {
     Failed,
 }
 
-pub struct SelfBorrow<T, U> {
-    bval: T,
-    dst:  Option<U>,
-}
-
-impl<T: Unpin, U: Unpin> SelfBorrow<T, U> {
-    pub fn new<F>(src: T, create: F) -> Pin<Box<Self>>
-            where F: Fn(*mut T) -> U {
-        let mut obj = Box::pin(Self{
-            bval: src,
-            dst: None,
-        });
-        let ptr = &mut obj.bval as *mut T;
-        obj.dst = Some(create(ptr));
-        obj
-    }
-    pub fn try_new<F>(src: T, create: F) -> Option<Pin<Box<Self>>>
-            where F: Fn(*mut T) -> Option<U> {
-        let mut obj = Box::pin(Self{
-            bval: src,
-            dst: None,
-        });
-        let ptr = &mut obj.bval as *mut T;
-        let dst = create(ptr);
-        if dst.is_some() {
-            obj.dst = dst;
-            Some(obj)
-        } else {
-            None
-        }
-    }
-    pub fn get_object(&self) -> &U {
-        if let Some(ref dst) = self.dst {
-            dst
-        } else {
-            unreachable!()
-        }
-    }
-    pub fn get_object_mut(&mut self) -> &mut U {
-        if let Some(ref mut dst) = self.dst {
-            dst
-        } else {
-            unreachable!()
-        }
-    }
-}
-
-impl<T, U> Drop for SelfBorrow<T, U> {
-    fn drop(&mut self) {
-        self.dst = None;
-    }
-}
-
-pub type SBBox<T, U> = Pin<Box<SelfBorrow<T, U>>>;
-
 pub const SND_NO_FORMAT: NASoniton = NASoniton { bits: 0, be: false, packed: false, planar: false, float: false, signed: false };
 
 pub fn parse_bitrate(strval: &str) -> Result<u32, ()> {