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,
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!");
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()) {
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()) {
use std::fs::File;
use std::io::BufReader;
-use std::pin::Pin;
use std::collections::VecDeque;
use nihav_core::frame::*;
use nihav_core::options::*;
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, ()> {