#[derive(Debug,Clone,Copy,PartialEq)]
#[allow(dead_code)]
pub enum DecoderError {
+ NoFrame,
TryAgain,
InvalidData,
ShortData,
Bug,
}
-type DecoderResult<T> = Result<T, DecoderError>;
+pub type DecoderResult<T> = Result<T, DecoderError>;
impl From<ByteIOError> for DecoderError {
fn from(_: ByteIOError) -> Self { DecoderError::ShortData }
fn from(_: CodebookError) -> Self { DecoderError::InvalidData }
}
+macro_rules! validate {
+ ($a:expr) => { if !$a { return Err(DecoderError::InvalidData); } };
+}
+
#[allow(dead_code)]
struct HAMShuffler {
lastframe: Option<NAVideoBuffer<u8>>,
get_decoder: fn () -> Box<NADecoder>,
}
-macro_rules! validate {
- ($a:expr) => { if !$a { return Err(DecoderError::InvalidData); } };
-}
+#[cfg(feature="h263")]
+mod blockdsp;
+
+#[cfg(feature="decoder_gdvvid")]
+mod gremlinvideo;
+#[cfg(any(feature="decoder_indeo2", feature="decoder_indeo3"))]
+mod indeo;
+#[cfg(feature="h263")]
+mod h263;
-#[cfg(feature="decoder_indeo2")]
-mod indeo2;
-#[cfg(feature="decoder_indeo3")]
-mod indeo3;
#[cfg(feature="decoder_pcm")]
mod pcm;
const DECODERS: &[DecoderInfo] = &[
+#[cfg(feature="decoder_gdvvid")]
+ DecoderInfo { name: "gdv-video", get_decoder: gremlinvideo::get_decoder },
#[cfg(feature="decoder_indeo2")]
- DecoderInfo { name: "indeo2", get_decoder: indeo2::get_decoder },
+ DecoderInfo { name: "indeo2", get_decoder: indeo::indeo2::get_decoder },
#[cfg(feature="decoder_indeo3")]
- DecoderInfo { name: "indeo3", get_decoder: indeo3::get_decoder },
+ DecoderInfo { name: "indeo3", get_decoder: indeo::indeo3::get_decoder },
+#[cfg(feature="decoder_intel263")]
+ DecoderInfo { name: "intel263", get_decoder: h263::intel263::get_decoder },
#[cfg(feature="decoder_pcm")]
DecoderInfo { name: "pcm", get_decoder: pcm::get_decoder },
#[allow(dead_code)]
fn write_pgmyuv(pfx: &str, strno: usize, num: u64, frmref: NAFrameRef) {
let frm = frmref.borrow();
+ if let NABufferType::None = frm.get_buffer() { return; }
let name = format!("assets/{}out{:02}_{:04}.pgm", pfx, strno, num);
let mut ofile = File::create(name).unwrap();
let buf = frm.get_buffer().get_vbuf().unwrap();
let dta = buf.get_data();
let ls = buf.get_stride(0);
let mut idx = 0;
- let mut idx2 = ls;
+ let mut idx2 = w;
let mut pad: Vec<u8> = Vec::with_capacity((w - w2 * 2) / 2);
pad.resize((w - w2 * 2) / 2, 0xFF);
for _ in 0..h {