-#[cfg(feature="demuxer_gdv")]
-mod gdv;
-#[cfg(feature="demuxer_avi")]
-mod avi;
-
use std::rc::Rc;
use frame::*;
use io::byteio::*;
IOError,
NotImplemented,
MemoryError,
+ TryAgain,
}
type DemuxerResult<T> = Result<T, DemuxerError>;
}
fn fill_packet(&mut self, pkt: &mut NAPacket) -> DemuxerResult<()> {
let mut refbuf = pkt.get_buffer();
- let mut buf = Rc::make_mut(&mut refbuf);
+ let buf = Rc::make_mut(&mut refbuf);
let res = self.read_buf(buf.as_mut_slice());
if let Err(_) = res { return Err(DemuxerError::IOError); }
Ok(())
false
}
}
+ pub fn is_ignored_id(&self, id: u32) -> bool {
+ for i in 0..self.streams.len() {
+ if self.streams[i].get_id() == id {
+ return self.ignored[i];
+ }
+ }
+ false
+ }
pub fn set_ignored(&mut self, idx: usize) {
if idx < self.ignored.len() {
self.ignored[idx] = true;
fn get_name(&self) -> &'static str;
}
+macro_rules! validate {
+ ($a:expr) => { if !$a { return Err(DemuxerError::InvalidData); } };
+}
+
+#[cfg(feature="demuxer_gdv")]
+mod gdv;
+#[cfg(feature="demuxer_avi")]
+mod avi;
+#[cfg(feature="demuxer_real")]
+mod realmedia;
+
+
const DEMUXERS: &[&'static DemuxerCreator] = &[
#[cfg(feature="demuxer_avi")]
&avi::AVIDemuxerCreator {},
#[cfg(feature="demuxer_gdv")]
&gdv::GDVDemuxerCreator {},
+#[cfg(feature="demuxer_real")]
+ &realmedia::RealMediaDemuxerCreator {},
+//#[cfg(feature="demuxer_real")]
+// &realmedia::RealAudioDemuxerCreator {},
+//#[cfg(feature="demuxer_real")]
+// &realmedia::RealIVRDemuxerCreator {},
];
pub fn find_demuxer(name: &str) -> Option<&DemuxerCreator> {