+pub struct Demuxer {
+ streams: Vec<Rc<NAStream>>,
+}
+
+impl Demuxer {
+ pub fn new() -> Self { Demuxer { streams: Vec::new() } }
+ pub fn add_stream(&mut self, stream: NAStream) -> Option<usize> {
+ let stream_num = self.streams.len();
+ let mut str = stream.clone();
+ str.set_num(stream_num);
+ self.streams.push(Rc::new(str));
+ Some(stream_num)
+ }
+ pub fn get_stream(&self, idx: usize) -> Option<Rc<NAStream>> {
+ if idx < self.streams.len() {
+ Some(self.streams[idx].clone())
+ } else {
+ None
+ }
+ }
+ pub fn get_stream_by_id(&self, id: u32) -> Option<Rc<NAStream>> {
+ for i in 0..self.streams.len() {
+ if self.streams[i].get_id() == id {
+ return Some(self.streams[i].clone());
+ }
+ }
+ None
+ }