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 d30dd871d8aceadbe6dd08a3eb03d3756b8251d5..c26e671f628ab0259dc9a8a33c7b0728ffdaa453 100644
(file)
--- a/
src/main.rs
+++ b/
src/main.rs
@@
-33,8
+33,7
@@
struct FrameOutput {
}
impl FrameOutput {
}
impl FrameOutput {
- fn output_frame(&mut self, pkt: &NAPacket, frmref: NAFrameRef) {
- let frm = frmref.borrow();
+ fn output_frame(&mut self, pkt: &NAPacket, frm: NAFrameRef) {
if frm.get_frame_type() != FrameType::Skip {
let pts = match self.nmode {
NumberMode::Counter => { self.frameno },
if frm.get_frame_type() != FrameType::Skip {
let pts = match self.nmode {
NumberMode::Counter => { self.frameno },
@@
-62,13
+61,13
@@
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 {
fn output_frame(&mut self, _pkt: &NAPacket, frm: NAFrameRef) {
if !self.wrote_header {
- self.wwr.write_header(frm.
borrow().
get_info().as_ref().get_properties().get_audio_info().unwrap()).unwrap();
+ self.wwr.write_header(frm.get_info().as_ref().get_properties().get_audio_info().unwrap()).unwrap();
self.wrote_header = true;
}
self.wrote_header = true;
}
- self.wwr.write_frame(frm.
borrow().
get_buffer()).unwrap();
+ self.wwr.write_frame(frm.get_buffer()).unwrap();
}
}
}
}
@@
-92,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; },
@@
-133,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() {
@@
-151,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 {
@@
-167,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)));
@@
-195,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); },