From: Kostya Shishkov Date: Sat, 31 Jan 2026 12:38:34 +0000 (+0100) Subject: use self-borrow box that from nihav_core X-Git-Url: https://git.nihav.org/?a=commitdiff_plain;h=b58ac1b3694d18f494f2af255ef5f060fb308773;p=nihav-encoder.git use self-borrow box that from nihav_core --- diff --git a/src/demux.rs b/src/demux.rs index 322e15d..ae5058a 100644 --- a/src/demux.rs +++ b/src/demux.rs @@ -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()) { diff --git a/src/transcoder.rs b/src/transcoder.rs index 3139a0a..e6d09ac 100644 --- a/src/transcoder.rs +++ b/src/transcoder.rs @@ -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 { - bval: T, - dst: Option, -} - -impl SelfBorrow { - pub fn new(src: T, create: F) -> Pin> - 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(src: T, create: F) -> Option>> - where F: Fn(*mut T) -> Option { - 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 Drop for SelfBorrow { - fn drop(&mut self) { - self.dst = None; - } -} - -pub type SBBox = Pin>>; - 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 {