diff --git a/src/decoder.rs b/src/decoder.rs index c3d31dc..9cdc6fe 100644 --- a/src/decoder.rs +++ b/src/decoder.rs @@ -90,8 +90,8 @@ impl PcmBuffers { } } -pub struct Decoder { - demuxer: FfmpegDemuxer, +pub struct Decoder { + demuxer: T, decoder: DecodeContext, resampler: ResamplingContext, @@ -99,10 +99,8 @@ pub struct Decoder { dummy_frame: Option , } -impl Decoder { - pub fn new (filename: &str) -> Result { - let (demuxer, codec) = FfmpegDemuxer::new (filename)?; - +impl Decoder { + pub fn new (demuxer: T, codec: ffmpeg_next::codec::Context) -> Result { let decoder = codec.decoder ().audio ()?; let resampler = decoder.resampler ( Sample::F32 (sample::Type::Packed), @@ -228,11 +226,11 @@ impl Decoder { } } -trait Demuxer { - +pub trait Demuxer { + fn pump (&mut self) -> Result