examples/transcode-audio: take advantage of setters returning self

This commit is contained in:
meh 2015-09-26 18:01:34 +02:00
parent 510e8604b6
commit a2a75628f4

View File

@ -15,13 +15,10 @@ fn filter(spec: &str, decoder: &codec::decoder::Audio, encoder: &codec::encoder:
try!(filter.add(&filter::find("abuffer").unwrap(), "in", &args)); try!(filter.add(&filter::find("abuffer").unwrap(), "in", &args));
try!(filter.add(&filter::find("abuffersink").unwrap(), "out", "")); try!(filter.add(&filter::find("abuffersink").unwrap(), "out", ""));
{ filter.get("out").unwrap()
let mut sink = filter.get("out").unwrap(); .set_sample_format(encoder.format())
.set_channel_layout(encoder.channel_layout())
sink.set_sample_format(encoder.format()).unwrap(); .set_sample_rate(encoder.rate());
sink.set_channel_layout(encoder.channel_layout()).unwrap();
sink.set_sample_rate(encoder.rate()).unwrap();
}
try!(try!(try!(filter.output("in", 0)).input("out", 0)).parse(spec)); try!(try!(try!(filter.output("in", 0)).input("out", 0)).parse(spec));
try!(filter.validate()); try!(filter.validate());
@ -61,12 +58,12 @@ fn transcoder<P: AsRef<Path>>(ictx: &mut format::context::Input, octx: &mut form
encoder.set_flags(ffmpeg::codec::flag::GLOBAL_HEADER); encoder.set_flags(ffmpeg::codec::flag::GLOBAL_HEADER);
} }
encoder.set_rate(decoder.rate() as i32); encoder.set_rate(decoder.rate() as i32)
encoder.set_channel_layout(channel_layout); .set_channel_layout(channel_layout)
encoder.set_channels(channel_layout.channels()); .set_channels(channel_layout.channels())
encoder.set_format(codec.formats().expect("unknown supported formats").next().unwrap()); .set_format(codec.formats().expect("unknown supported formats").next().unwrap())
encoder.set_bit_rate(decoder.bit_rate()); .set_bit_rate(decoder.bit_rate())
encoder.set_max_bit_rate(decoder.max_bit_rate()); .set_max_bit_rate(decoder.max_bit_rate());
encoder.set_time_base((1, decoder.rate() as i32)); encoder.set_time_base((1, decoder.rate() as i32));
output.set_time_base((1, decoder.rate() as i32)); output.set_time_base((1, decoder.rate() as i32));
@ -122,9 +119,9 @@ fn main() {
while let Ok(..) = transcoder.filter.get("out").unwrap().sink().frame(&mut decoded) { while let Ok(..) = transcoder.filter.get("out").unwrap().sink().frame(&mut decoded) {
if let Ok(true) = transcoder.encoder.encode(&decoded, &mut encoded) { if let Ok(true) = transcoder.encoder.encode(&decoded, &mut encoded) {
encoded.set_stream(0); encoded.set_stream(0)
encoded.rescale_ts(in_time_base, out_time_base); .rescale_ts(in_time_base, out_time_base)
encoded.write_interleaved(&mut octx).unwrap(); .write_interleaved(&mut octx).unwrap();
} }
} }
} }
@ -135,16 +132,16 @@ fn main() {
while let Ok(..) = transcoder.filter.get("out").unwrap().sink().frame(&mut decoded) { while let Ok(..) = transcoder.filter.get("out").unwrap().sink().frame(&mut decoded) {
if let Ok(true) = transcoder.encoder.encode(&decoded, &mut encoded) { if let Ok(true) = transcoder.encoder.encode(&decoded, &mut encoded) {
encoded.set_stream(0); encoded.set_stream(0)
encoded.rescale_ts(in_time_base, out_time_base); .rescale_ts(in_time_base, out_time_base)
encoded.write_interleaved(&mut octx).unwrap(); .write_interleaved(&mut octx).unwrap();
} }
} }
if let Ok(true) = transcoder.encoder.flush(&mut encoded) { if let Ok(true) = transcoder.encoder.flush(&mut encoded) {
encoded.set_stream(0); encoded.set_stream(0)
encoded.rescale_ts(in_time_base, out_time_base); .rescale_ts(in_time_base, out_time_base)
encoded.write_interleaved(&mut octx).unwrap(); .write_interleaved(&mut octx).unwrap();
} }
octx.write_trailer().unwrap(); octx.write_trailer().unwrap();