use nihav_core::io::byteio::*;
use nihav_codec_support::codecs::HAMShuffler;
-struct HAMShuffler16 {
- lastframe: Option<NAVideoBufferRef<u16>>,
-}
-
-impl HAMShuffler16 {
- fn clear(&mut self) { self.lastframe = None; }
- fn add_frame(&mut self, buf: NAVideoBufferRef<u16>) {
- self.lastframe = Some(buf);
- }
- fn clone_ref(&mut self) -> Option<NAVideoBufferRef<u16>> {
- if let Some(ref mut frm) = self.lastframe {
- let newfrm = frm.copy_buffer();
- *frm = newfrm.clone().into_ref();
- Some(newfrm.into_ref())
- } else {
- None
- }
- }
- fn get_output_frame(&mut self) -> Option<NAVideoBufferRef<u16>> {
- match self.lastframe {
- Some(ref frm) => Some(frm.clone()),
- None => None,
- }
- }
-}
-
-impl Default for HAMShuffler16 {
- fn default() -> Self { Self { lastframe: None } }
-}
-
const RGB555_FORMAT: NAPixelFormaton = NAPixelFormaton {
model: ColorModel::RGB(RGBSubmodel::RGB), components: 3,
comp_info: [
#[derive(Default)]
struct Video1Decoder {
info: NACodecInfoRef,
- hams: HAMShuffler,
- hams16: HAMShuffler16,
+ hams: HAMShuffler<u8>,
+ hams16: HAMShuffler<u16>,
width: usize,
height: usize,
is_16bit: bool,
Err(DecoderError::InvalidData)
}
}
+ #[allow(clippy::identity_op)]
fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
let src = pkt.get_buffer();
validate!(src.len() >= 2);
use nihav_core::codecs::RegisteredDecoders;
use nihav_core::demuxers::RegisteredDemuxers;
use nihav_codec_support::test::dec_video::*;
- use crate::ms_register_all_codecs;
+ use crate::ms_register_all_decoders;
use nihav_commonfmt::generic_register_all_demuxers;
#[test]
fn test_ms_video1_8bit() {
let mut dmx_reg = RegisteredDemuxers::new();
generic_register_all_demuxers(&mut dmx_reg);
let mut dec_reg = RegisteredDecoders::new();
- ms_register_all_codecs(&mut dec_reg);
+ ms_register_all_decoders(&mut dec_reg);
+ // sample: https://samples.mplayerhq.hu/avi/palette_change/toon.avi
test_decoding("avi", "msvideo1", "assets/MS/toon.avi", Some(66), &dmx_reg, &dec_reg,
ExpectedTestResult::MD5([0x0c26ec42, 0xb75bfea7, 0x1e6342ae, 0xb14dcfa3]));
}
let mut dmx_reg = RegisteredDemuxers::new();
generic_register_all_demuxers(&mut dmx_reg);
let mut dec_reg = RegisteredDecoders::new();
- ms_register_all_codecs(&mut dec_reg);
+ ms_register_all_decoders(&mut dec_reg);
+ // sample: https://samples.mplayerhq.hu/V-codecs/CRAM/clock-cram16.avi
test_decoding("avi", "msvideo1", "assets/MS/clock-cram16.avi", None, &dmx_reg, &dec_reg,
ExpectedTestResult::MD5([0x03381fa4, 0x5b294fec, 0xb97a7575, 0xa1a3ffe9]));
}