}
#[allow(dead_code)]
-struct HAMShuffler {
+pub struct HAMShuffler {
lastframe: Option<NAVideoBuffer<u8>>,
}
impl HAMShuffler {
#[allow(dead_code)]
- fn new() -> Self { HAMShuffler { lastframe: None } }
+ pub fn new() -> Self { HAMShuffler { lastframe: None } }
#[allow(dead_code)]
- fn clear(&mut self) { self.lastframe = None; }
+ pub fn clear(&mut self) { self.lastframe = None; }
#[allow(dead_code)]
- fn add_frame(&mut self, buf: NAVideoBuffer<u8>) {
+ pub fn add_frame(&mut self, buf: NAVideoBuffer<u8>) {
self.lastframe = Some(buf);
}
#[allow(dead_code)]
- fn clone_ref(&mut self) -> Option<NAVideoBuffer<u8>> {
+ pub fn clone_ref(&mut self) -> Option<NAVideoBuffer<u8>> {
if let Some(ref mut frm) = self.lastframe {
let newfrm = frm.copy_buffer();
*frm = newfrm.clone();
}
}
#[allow(dead_code)]
- fn get_output_frame(&mut self) -> Option<NAVideoBuffer<u8>> {
+ pub fn get_output_frame(&mut self) -> Option<NAVideoBuffer<u8>> {
match self.lastframe {
Some(ref frm) => Some(frm.clone()),
None => None,
}
#[allow(dead_code)]
-struct IPShuffler {
+pub struct IPShuffler {
lastframe: Option<NAVideoBuffer<u8>>,
}
impl IPShuffler {
#[allow(dead_code)]
- fn new() -> Self { IPShuffler { lastframe: None } }
+ pub fn new() -> Self { IPShuffler { lastframe: None } }
#[allow(dead_code)]
- fn clear(&mut self) { self.lastframe = None; }
+ pub fn clear(&mut self) { self.lastframe = None; }
#[allow(dead_code)]
- fn add_frame(&mut self, buf: NAVideoBuffer<u8>) {
+ pub fn add_frame(&mut self, buf: NAVideoBuffer<u8>) {
self.lastframe = Some(buf);
}
#[allow(dead_code)]
- fn get_ref(&mut self) -> Option<NAVideoBuffer<u8>> {
+ pub fn get_ref(&mut self) -> Option<NAVideoBuffer<u8>> {
if let Some(ref frm) = self.lastframe {
Some(frm.clone())
} else {
}
#[allow(dead_code)]
-struct IPBShuffler {
+pub struct IPBShuffler {
lastframe: Option<NAVideoBuffer<u8>>,
nextframe: Option<NAVideoBuffer<u8>>,
}
impl IPBShuffler {
#[allow(dead_code)]
- fn new() -> Self { IPBShuffler { lastframe: None, nextframe: None } }
+ pub fn new() -> Self { IPBShuffler { lastframe: None, nextframe: None } }
#[allow(dead_code)]
- fn clear(&mut self) { self.lastframe = None; self.nextframe = None; }
+ pub fn clear(&mut self) { self.lastframe = None; self.nextframe = None; }
#[allow(dead_code)]
- fn add_frame(&mut self, buf: NAVideoBuffer<u8>) {
+ pub fn add_frame(&mut self, buf: NAVideoBuffer<u8>) {
mem::swap(&mut self.lastframe, &mut self.nextframe);
self.lastframe = Some(buf);
}
#[allow(dead_code)]
- fn get_lastref(&mut self) -> Option<NAVideoBuffer<u8>> {
+ pub fn get_lastref(&mut self) -> Option<NAVideoBuffer<u8>> {
if let Some(ref frm) = self.lastframe {
Some(frm.clone())
} else {
}
}
#[allow(dead_code)]
- fn get_nextref(&mut self) -> Option<NAVideoBuffer<u8>> {
+ pub fn get_nextref(&mut self) -> Option<NAVideoBuffer<u8>> {
if let Some(ref frm) = self.nextframe {
Some(frm.clone())
} else {
}
}
#[allow(dead_code)]
- fn get_b_fwdref(&mut self) -> Option<NAVideoBuffer<u8>> {
+ pub fn get_b_fwdref(&mut self) -> Option<NAVideoBuffer<u8>> {
if let Some(ref frm) = self.nextframe {
Some(frm.clone())
} else {
}
}
#[allow(dead_code)]
- fn get_b_bwdref(&mut self) -> Option<NAVideoBuffer<u8>> {
+ pub fn get_b_bwdref(&mut self) -> Option<NAVideoBuffer<u8>> {
if let Some(ref frm) = self.lastframe {
Some(frm.clone())
} else {
#[derive(Clone,Copy)]
pub struct DecoderInfo {
- name: &'static str,
- get_decoder: fn () -> Box<NADecoder>,
+ pub name: &'static str,
+ pub get_decoder: fn () -> Box<NADecoder>,
}
-#[cfg(any(feature="h263", feature="decoder_realvideo3", feature="decoder_realvideo4"))]
-mod blockdsp;
+#[cfg(any(feature="h263"))]
+pub mod blockdsp;
#[cfg(feature="decoder_clearvideo")]
mod clearvideo;
#[cfg(feature="decoder_gdvvid")]
mod gremlinvideo;
-#[cfg(any(feature="decoder_indeo2", feature="decoder_indeo3", feature="decoder_indeo4", feature="decoder_indeo5", feature="decoder_imc"))]
-mod indeo;
#[cfg(feature="h263")]
-mod h263;
-#[cfg(any(feature="decoder_realvideo3", feature="decoder_realvideo4", feature="decoder_realvideo6", feature="decoder_realaudio144", feature="decoder_realaudio288", feature="decoder_cook", feature="decoder_ralf"))]
-mod real;
+pub mod h263;
#[cfg(feature="decoder_aac")]
mod aac;
DecoderInfo { name: "clearvideo", get_decoder: clearvideo::get_decoder },
#[cfg(feature="decoder_clearvideo")]
DecoderInfo { name: "clearvideo_rm", get_decoder: clearvideo::get_decoder_rm },
-#[cfg(feature="decoder_gdvvid")]
- DecoderInfo { name: "gdv-audio", get_decoder: gremlinvideo::get_decoder_audio },
-#[cfg(feature="decoder_gdvvid")]
- DecoderInfo { name: "gdv-video", get_decoder: gremlinvideo::get_decoder_video },
-#[cfg(feature="decoder_indeo2")]
- DecoderInfo { name: "indeo2", get_decoder: indeo::indeo2::get_decoder },
-#[cfg(feature="decoder_indeo3")]
- DecoderInfo { name: "indeo3", get_decoder: indeo::indeo3::get_decoder },
-#[cfg(feature="decoder_indeo4")]
- DecoderInfo { name: "indeo4", get_decoder: indeo::indeo4::get_decoder },
-#[cfg(feature="decoder_indeo5")]
- DecoderInfo { name: "indeo5", get_decoder: indeo::indeo5::get_decoder },
-#[cfg(feature="decoder_intel263")]
- DecoderInfo { name: "intel263", get_decoder: h263::intel263::get_decoder },
-#[cfg(feature="decoder_realvideo1")]
- DecoderInfo { name: "realvideo1", get_decoder: h263::rv10::get_decoder },
-#[cfg(feature="decoder_realvideo2")]
- DecoderInfo { name: "realvideo2", get_decoder: h263::rv20::get_decoder },
-#[cfg(feature="decoder_realvideo3")]
- DecoderInfo { name: "realvideo3", get_decoder: real::rv30::get_decoder },
-#[cfg(feature="decoder_realvideo4")]
- DecoderInfo { name: "realvideo4", get_decoder: real::rv40::get_decoder },
-#[cfg(feature="decoder_realvideo6")]
- DecoderInfo { name: "realvideo6", get_decoder: real::rv60::get_decoder },
#[cfg(feature="decoder_pcm")]
DecoderInfo { name: "pcm", get_decoder: pcm::get_decoder },
-#[cfg(feature="decoder_imc")]
- DecoderInfo { name: "imc", get_decoder: indeo::imc::get_decoder_imc },
-#[cfg(feature="decoder_imc")]
- DecoderInfo { name: "iac", get_decoder: indeo::imc::get_decoder_iac },
-#[cfg(feature="decoder_realaudio144")]
- DecoderInfo { name: "ra14.4", get_decoder: real::ra144::get_decoder },
-#[cfg(feature="decoder_realaudio288")]
- DecoderInfo { name: "ra28.8", get_decoder: real::ra288::get_decoder },
#[cfg(feature="decoder_sipro")]
DecoderInfo { name: "sipro", get_decoder: sipro::get_decoder },
#[cfg(feature="decoder_ts102366")]
DecoderInfo { name: "ac3", get_decoder: ts102366::get_decoder },
-#[cfg(feature="decoder_cook")]
- DecoderInfo { name: "cook", get_decoder: real::cook::get_decoder },
#[cfg(feature="decoder_atrac3")]
DecoderInfo { name: "atrac3", get_decoder: atrac3::get_decoder },
#[cfg(feature="decoder_aac")]
DecoderInfo { name: "aac", get_decoder: aac::get_decoder },
-#[cfg(feature="decoder_ralf")]
- DecoderInfo { name: "ralf", get_decoder: real::ralf::get_decoder },
];
-pub fn find_decoder(name: &str) -> Option<fn () -> Box<NADecoder>> {
- for &dec in DECODERS {
- if dec.name == name {
- return Some(dec.get_decoder);
+pub fn core_register_all_codecs(rd: &mut RegisteredDecoders) {
+ for decoder in DECODERS.into_iter() {
+ rd.add_decoder(decoder.clone());
+ }
+}
+
+pub struct RegisteredDecoders {
+ decs: Vec<DecoderInfo>,
+}
+
+impl RegisteredDecoders {
+ pub fn new() -> Self {
+ Self { decs: Vec::new() }
+ }
+ pub fn add_decoder(&mut self, dec: DecoderInfo) {
+ self.decs.push(dec);
+ }
+ pub fn find_decoder(&self, name: &str) -> Option<fn () -> Box<NADecoder>> {
+ for &dec in self.decs.iter() {
+ if dec.name == name {
+ return Some(dec.get_decoder);
+ }
}
+ None
}
- None
}