X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-core%2Fsrc%2Ftest%2Fdec_video.rs;h=21c3f1aaa4f5f18af36b60996a5a137d908e7c6d;hb=0cc09358bda53a327937e503e1166bf55b84f319;hp=4a181917ebeae8b75c676f06aa133b7bf38ccc89;hpb=5641dccfbf2a70d589cf094a0d4ed5a10f919f00;p=nihav.git diff --git a/nihav-core/src/test/dec_video.rs b/nihav-core/src/test/dec_video.rs index 4a18191..21c3f1a 100644 --- a/nihav-core/src/test/dec_video.rs +++ b/nihav-core/src/test/dec_video.rs @@ -3,7 +3,7 @@ use std::io::prelude::*; use crate::frame::*; use crate::codecs::*; use crate::demuxers::*; -use crate::io::byteio::*; +//use crate::io::byteio::*; use super::wavwriter::WavWriter; fn write_pgmyuv(pfx: &str, strno: usize, num: u64, frmref: NAFrameRef) { @@ -77,6 +77,11 @@ fn write_palppm(pfx: &str, strno: usize, num: u64, frmref: NAFrameRef) { ofile.write_all(hdr.as_bytes()).unwrap(); let dta = buf.get_data(); let ls = buf.get_stride(0); + let offs: [usize; 3] = [ + buf.get_info().get_format().get_chromaton(0).unwrap().get_offset() as usize, + buf.get_info().get_format().get_chromaton(1).unwrap().get_offset() as usize, + buf.get_info().get_format().get_chromaton(2).unwrap().get_offset() as usize + ]; let mut idx = 0; let mut line: Vec = Vec::with_capacity(w * 3); line.resize(w * 3, 0); @@ -84,9 +89,9 @@ fn write_palppm(pfx: &str, strno: usize, num: u64, frmref: NAFrameRef) { let src = &dta[idx..(idx+w)]; for x in 0..w { let pix = src[x] as usize; - line[x * 3 + 0] = dta[paloff + pix * 3 + 2]; - line[x * 3 + 1] = dta[paloff + pix * 3 + 1]; - line[x * 3 + 2] = dta[paloff + pix * 3 + 0]; + line[x * 3 + 0] = dta[paloff + pix * 3 + offs[0]]; + line[x * 3 + 1] = dta[paloff + pix * 3 + offs[1]]; + line[x * 3 + 2] = dta[paloff + pix * 3 + offs[2]]; } ofile.write_all(line.as_slice()).unwrap(); idx += ls; @@ -103,8 +108,9 @@ fn write_palppm(pfx: &str, strno: usize, num: u64, frmref: NAFrameRef) { pub fn test_file_decoding(demuxer: &str, name: &str, limit: Option, decode_video: bool, decode_audio: bool, - video_pfx: Option<&str>) { - let dmx_f = find_demuxer(demuxer).unwrap(); + video_pfx: Option<&str>, + dmx_reg: &RegisteredDemuxers, dec_reg: &RegisteredDecoders) { + let dmx_f = dmx_reg.find_demuxer(demuxer).unwrap(); let mut file = File::open(name).unwrap(); let mut fr = FileReader::new_read(&mut file); let mut br = ByteReader::new(&mut fr); @@ -114,7 +120,7 @@ pub fn test_file_decoding(demuxer: &str, name: &str, limit: Option, for i in 0..dmx.get_num_streams() { let s = dmx.get_stream(i).unwrap(); let info = s.get_info(); - let decfunc = find_decoder(info.get_name()); + let decfunc = dec_reg.find_decoder(info.get_name()); if let Some(df) = decfunc { if (decode_video && info.is_video()) || (decode_audio && info.is_audio()) { let mut dec = (df)(); @@ -154,8 +160,9 @@ pub fn test_file_decoding(demuxer: &str, name: &str, limit: Option, } } -pub fn test_decode_audio(demuxer: &str, name: &str, limit: Option, audio_pfx: &str) { - let dmx_f = find_demuxer(demuxer).unwrap(); +pub fn test_decode_audio(demuxer: &str, name: &str, limit: Option, audio_pfx: &str, + dmx_reg: &RegisteredDemuxers, dec_reg: &RegisteredDecoders) { + let dmx_f = dmx_reg.find_demuxer(demuxer).unwrap(); let mut file = File::open(name).unwrap(); let mut fr = FileReader::new_read(&mut file); let mut br = ByteReader::new(&mut fr); @@ -165,7 +172,7 @@ pub fn test_decode_audio(demuxer: &str, name: &str, limit: Option, audio_pf for i in 0..dmx.get_num_streams() { let s = dmx.get_stream(i).unwrap(); let info = s.get_info(); - let decfunc = find_decoder(info.get_name()); + let decfunc = dec_reg.find_decoder(info.get_name()); if let Some(df) = decfunc { if info.is_audio() { let mut dec = (df)();