codec: introduce Parameters

As of ffmpeg 3.1, a new `AVCodecParameters` type and related API introduced.
This commit contains minimal changes to support new API.
This commit is contained in:
Tae-il Lim
2016-11-30 11:21:04 +09:00
committed by meh
parent 00ff69021d
commit 606847cc50
6 changed files with 92 additions and 4 deletions

View File

@ -47,10 +47,12 @@ struct Transcoder {
fn transcoder<P: AsRef<Path>>(ictx: &mut format::context::Input, octx: &mut format::context::Output, path: &P, filter_spec: &str) -> Result<Transcoder, ffmpeg::Error> {
let input = ictx.streams().best(media::Type::Audio).expect("could not find best audio stream");
let decoder = try!(input.codec().decoder().audio());
let mut decoder = try!(input.codec().decoder().audio());
let codec = try!(ffmpeg::encoder::find(octx.format().codec(path, media::Type::Audio)).expect("failed to find encoder").audio());
let global = octx.format().flags().contains(ffmpeg::format::flag::GLOBAL_HEADER);
try!(decoder.set_parameters(input.codec_parameters()));
let mut output = try!(octx.add_stream(codec));
let mut encoder = try!(output.codec().encoder().audio());
@ -73,6 +75,8 @@ fn transcoder<P: AsRef<Path>>(ictx: &mut format::context::Input, octx: &mut form
output.set_time_base((1, decoder.rate() as i32));
let encoder = try!(encoder.open_as(codec));
try!(output.set_codec_parameters_from(&encoder));
let filter = try!(filter(filter_spec, &decoder, &encoder));
Ok(Transcoder {