projects
/
nihav-tool.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
use a bit more modern Rust idioms
[nihav-tool.git]
/
src
/
main.rs
diff --git
a/src/main.rs
b/src/main.rs
index e191e7a4087dc11e246bb4ecec0ec60a5f7e9592..c26e671f628ab0259dc9a8a33c7b0728ffdaa453 100644
(file)
--- a/
src/main.rs
+++ b/
src/main.rs
@@
-61,7
+61,7
@@
struct AudioOutput {
}
impl AudioOutput {
}
impl AudioOutput {
- fn new(name: &
String
) -> Self { Self { wwr: WavWriter::new(name), wrote_header: false } }
+ fn new(name: &
str
) -> Self { Self { wwr: WavWriter::new(name), wrote_header: false } }
fn output_frame(&mut self, _pkt: &NAPacket, frm: NAFrameRef) {
if !self.wrote_header {
self.wwr.write_header(frm.get_info().as_ref().get_properties().get_audio_info().unwrap()).unwrap();
fn output_frame(&mut self, _pkt: &NAPacket, frm: NAFrameRef) {
if !self.wrote_header {
self.wwr.write_header(frm.get_info().as_ref().get_properties().get_audio_info().unwrap()).unwrap();
@@
-91,7
+91,7
@@
fn main() {
let mut decode_audio = true;
let mut nmode = NumberMode::FrmPTS;
let mut decode_audio = true;
let mut nmode = NumberMode::FrmPTS;
- while (cur_arg < args.len()) &&
(args[cur_arg].chars().next().unwrap() ==
'-') {
+ while (cur_arg < args.len()) &&
args[cur_arg].starts_with(
'-') {
match args[cur_arg].as_str() {
"--" => { break; },
"-noout" => { noout = true; },
match args[cur_arg].as_str() {
"--" => { break; },
"-noout" => { noout = true; },
@@
-132,7
+132,7
@@
println!("trying demuxer {} on {}", dmx_name, name);
br.seek(SeekFrom::Start(0)).unwrap();
let mut dmx = create_demuxer(dmx_fact, &mut br).unwrap();
br.seek(SeekFrom::Start(0)).unwrap();
let mut dmx = create_demuxer(dmx_fact, &mut br).unwrap();
- let mut decs: Vec<Option<
Box<NADecoder>
>> = Vec::new();
+ let mut decs: Vec<Option<
(Box<NADecoderSupport>, Box<dyn NADecoder>)
>> = Vec::new();
let mut sids: Vec<u32> = Vec::new();
let mut writers: Vec<Outputter> = Vec::new();
for i in 0..dmx.get_num_streams() {
let mut sids: Vec<u32> = Vec::new();
let mut writers: Vec<Outputter> = Vec::new();
for i in 0..dmx.get_num_streams() {
@@
-150,10
+150,11
@@
println!("stream {} - {} {}", i, s, info.get_name());
return;
}
let mut dec = (decfunc.unwrap())();
return;
}
let mut dec = (decfunc.unwrap())();
- dec.init(info).unwrap();
- decs.push(Some(dec));
+ let mut dsupp = Box::new(NADecoderSupport::new());
+ dec.init(&mut dsupp, info).unwrap();
+ decs.push(Some((dsupp, dec)));
if !noout {
if !noout {
- writers.push(Outputter::Video(FrameOutput{prefix: "", streamno: i, frameno: 1, nmode
: nmode
}));
+ writers.push(Outputter::Video(FrameOutput{prefix: "", streamno: i, frameno: 1, nmode}));
has_out = true;
}
} else {
has_out = true;
}
} else {
@@
-166,8
+167,9
@@
println!("stream {} - {} {}", i, s, info.get_name());
return;
}
let mut dec = (decfunc.unwrap())();
return;
}
let mut dec = (decfunc.unwrap())();
- dec.init(info).unwrap();
- decs.push(Some(dec));
+ let mut dsupp = Box::new(NADecoderSupport::new());
+ dec.init(&mut dsupp, info).unwrap();
+ decs.push(Some((dsupp, dec)));
if !noout {
let name = format!("out{:02}.wav", i);
writers.push(Outputter::Audio(AudioOutput::new(&name)));
if !noout {
let name = format!("out{:02}.wav", i);
writers.push(Outputter::Audio(AudioOutput::new(&name)));
@@
-194,8
+196,8
@@
panic!("decoder {} not found", info.get_name());
let streamno = pkt.get_stream().get_id();
let sr = sids.iter().position(|x| *x == streamno);
let idx = sr.unwrap();
let streamno = pkt.get_stream().get_id();
let sr = sids.iter().position(|x| *x == streamno);
let idx = sr.unwrap();
- if let Some(
ref mut dec
) = decs[idx] {
- let frm = dec.decode(&pkt).unwrap();
+ if let Some(
(ref mut dsupp, ref mut dec)
) = decs[idx] {
+ let frm = dec.decode(
dsupp,
&pkt).unwrap();
if !noout {
match writers[idx] {
Outputter::Video(ref mut wr) => { wr.output_frame(&pkt, frm); },
if !noout {
match writers[idx] {
Outputter::Video(ref mut wr) => { wr.output_frame(&pkt, frm); },