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) {
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<u8> = Vec::with_capacity(w * 3);
line.resize(w * 3, 0);
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;
pub fn test_file_decoding(demuxer: &str, name: &str, limit: Option<u64>,
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);
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)();
}
}
-pub fn test_decode_audio(demuxer: &str, name: &str, limit: Option<u64>, audio_pfx: &str) {
- let dmx_f = find_demuxer(demuxer).unwrap();
+pub fn test_decode_audio(demuxer: &str, name: &str, limit: Option<u64>, 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);
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)();