mirror of
https://github.com/iluvcapra/bwavfile.git
synced 2025-12-31 08:50:44 +00:00
Rework the deinter example, create writers before reading through the input file
This commit is contained in:
@@ -71,29 +71,32 @@ fn process_file(infile: &str, delim: &str, numeric_channel_names: bool) -> Resul
|
|||||||
let ouptut_format =
|
let ouptut_format =
|
||||||
WaveFmt::new_pcm_mono(input_format.sample_rate, input_format.bits_per_sample);
|
WaveFmt::new_pcm_mono(input_format.sample_rate, input_format.bits_per_sample);
|
||||||
let mut input_wave_reader = input_file.audio_frame_reader()?;
|
let mut input_wave_reader = input_file.audio_frame_reader()?;
|
||||||
|
let mut output_wave_writers = channel_desc
|
||||||
|
.iter()
|
||||||
|
.enumerate()
|
||||||
|
.map(|(n, channel)| {
|
||||||
|
let suffix = name_suffix(numeric_channel_names, delim, n + 1, channel);
|
||||||
|
let outfile_name = output_dir
|
||||||
|
.join(format!("{}{}.wav", basename, suffix))
|
||||||
|
.into_os_string()
|
||||||
|
.into_string()
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
for (n, channel) in channel_desc.iter().enumerate() {
|
WaveWriter::create(&outfile_name, ouptut_format)
|
||||||
let suffix = name_suffix(numeric_channel_names, delim, n + 1, channel);
|
.expect("Failed to create new file")
|
||||||
let outfile_name = output_dir
|
.audio_frame_writer()
|
||||||
.join(format!("{}{}.wav", basename, suffix))
|
})
|
||||||
.into_os_string()
|
.collect::<Result<Vec<_>, _>>()?;
|
||||||
.into_string()
|
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
println!("Will create file {}", outfile_name);
|
let mut buffer = input_format.create_frame_buffer(1);
|
||||||
|
while input_wave_reader.read_integer_frame(&mut buffer)? > 0 {
|
||||||
let output_file =
|
for (n, writer) in output_wave_writers.iter_mut().enumerate() {
|
||||||
WaveWriter::create(&outfile_name, ouptut_format).expect("Failed to create new file");
|
writer.write_integer_frames(&buffer[n..=n])?;
|
||||||
|
|
||||||
let mut output_wave_writer = output_file.audio_frame_writer()?;
|
|
||||||
let mut buffer = input_format.create_frame_buffer(1);
|
|
||||||
|
|
||||||
while input_wave_reader.read_integer_frame(&mut buffer)? > 0 {
|
|
||||||
output_wave_writer.write_integer_frames(&buffer[n..=n])?;
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
output_wave_writer.end()?;
|
for writer in output_wave_writers.drain(..) {
|
||||||
input_wave_reader.locate(0)?;
|
writer.end()?;
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|||||||
Reference in New Issue
Block a user