core/demuxer: add functions for creating demuxers with options
authorKostya Shishkov <kostya.shishkov@gmail.com>
Sat, 17 Dec 2022 10:45:15 +0000 (11:45 +0100)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Sat, 17 Dec 2022 10:45:15 +0000 (11:45 +0100)
nihav-core/src/demuxers/mod.rs

index 23f27fbfa8d6c47eea22b546effba452a42a7ca5..181f88a0d7c9a8beb7e2c20aa2f4e3d723163240 100644 (file)
@@ -471,6 +471,16 @@ pub fn create_demuxer<'a>(dmxcr: &dyn DemuxerCreator, br: &'a mut ByteReader<'a>
     Ok(Demuxer::new(dmx, strmgr, seek_idx))
 }
 
+/// Creates demuxer for a provided bytestream with options applied right after its creation.
+pub fn create_demuxer_with_options<'a>(dmxcr: &dyn DemuxerCreator, br: &'a mut ByteReader<'a>, opts: &[NAOption]) -> DemuxerResult<Demuxer<'a>> {
+    let mut dmx = dmxcr.new_demuxer(br);
+    dmx.set_options(opts);
+    let mut strmgr = StreamManager::new();
+    let mut seek_idx = SeekIndex::new();
+    dmx.open(&mut strmgr, &mut seek_idx)?;
+    Ok(Demuxer::new(dmx, strmgr, seek_idx))
+}
+
 /// List of registered demuxers.
 #[derive(Default)]
 pub struct RegisteredDemuxers {
@@ -637,6 +647,16 @@ pub fn create_raw_demuxer<'a>(dmxcr: &dyn RawDemuxerCreator, br: &'a mut ByteRea
     Ok(RawDemuxer::new(dmx, strmgr, seek_idx))
 }
 
+/// Creates raw data demuxer for a provided bytestream with options applied right after its creation.
+pub fn create_raw_demuxer_with_options<'a>(dmxcr: &dyn RawDemuxerCreator, br: &'a mut ByteReader<'a>, opts: &[NAOption]) -> DemuxerResult<RawDemuxer<'a>> {
+    let mut dmx = dmxcr.new_demuxer(br);
+    dmx.set_options(opts);
+    let mut strmgr = StreamManager::new();
+    let mut seek_idx = SeekIndex::new();
+    dmx.open(&mut strmgr, &mut seek_idx)?;
+    Ok(RawDemuxer::new(dmx, strmgr, seek_idx))
+}
+
 /// List of registered demuxers.
 #[derive(Default)]
 pub struct RegisteredRawDemuxers {