From 8e3a0fcb3434f0d6bb4135f640663036d4da1474 Mon Sep 17 00:00:00 2001 From: Kostya Shishkov Date: Wed, 4 Feb 2026 17:56:26 +0100 Subject: [PATCH] nihav_hlblocks/demux: add more utility methods to DemuxerObject --- nihav-hlblocks/src/demux.rs | 44 +++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/nihav-hlblocks/src/demux.rs b/nihav-hlblocks/src/demux.rs index 9f7b5b6..e3a94de 100644 --- a/nihav-hlblocks/src/demux.rs +++ b/nihav-hlblocks/src/demux.rs @@ -318,6 +318,50 @@ impl<'a> DemuxerObject<'a> { _ => unreachable!(), } } + /// Returns mutable reference to the stream manager associated with the demuxer. + pub fn get_stream_manager_mut(&mut self) -> &mut StreamManager { + match *self { + DemuxerObject::Normal(ref mut dmx) => dmx.get_object_mut().get_stream_manager_mut(), + DemuxerObject::Raw(ref mut dmxs) => dmxs.dmx.get_object_mut().get_stream_manager_mut(), + DemuxerObject::RawStream(ref mut ctx) => &mut ctx.get_object_mut().sm, + #[cfg(feature="imgseq_dec")] + DemuxerObject::ImageSequence(ref mut ctx) => &mut ctx.sm, + _ => unreachable!(), + } + } + /// Returns 'ignored' marker for requested stream. + pub fn is_ignored_stream(&self, idx: usize) -> bool { + match *self { + DemuxerObject::Normal(ref dmx) => dmx.get_object().is_ignored_stream(idx), + DemuxerObject::Raw(ref dmxs) => dmxs.dmx.get_object().is_ignored_stream(idx), + DemuxerObject::RawStream(ref ctx) => ctx.get_object().sm.is_ignored(idx), + #[cfg(feature="imgseq_dec")] + DemuxerObject::ImageSequence(ref ctx) => ctx.sm.is_ignored(idx), + _ => unreachable!(), + } + } + /// Sets 'ignored' marker for requested stream. + pub fn set_ignored_stream(&mut self, idx: usize) { + match *self { + DemuxerObject::Normal(ref mut dmx) => dmx.get_object_mut().set_ignored_stream(idx), + DemuxerObject::Raw(ref mut dmxs) => dmxs.dmx.get_object_mut().set_ignored_stream(idx), + DemuxerObject::RawStream(ref mut ctx) => ctx.get_object_mut().sm.set_ignored(idx), + #[cfg(feature="imgseq_dec")] + DemuxerObject::ImageSequence(ref mut ctx) => ctx.sm.set_ignored(idx), + _ => unreachable!(), + } + } + /// Clears 'ignored' marker for requested stream. + pub fn set_unignored_stream(&mut self, idx: usize) { + match *self { + DemuxerObject::Normal(ref mut dmx) => dmx.get_object_mut().set_unignored_stream(idx), + DemuxerObject::Raw(ref mut dmxs) => dmxs.dmx.get_object_mut().set_unignored_stream(idx), + DemuxerObject::RawStream(ref mut ctx) => ctx.get_object_mut().sm.set_unignored(idx), + #[cfg(feature="imgseq_dec")] + DemuxerObject::ImageSequence(ref mut ctx) => ctx.sm.set_unignored(idx), + _ => unreachable!(), + } + } /// Demuxes a packet. pub fn get_frame(&mut self) -> DemuxerResult { match *self { -- 2.39.5