+
+ if (f->audio_stream()) {
+ shared_ptr<AudioStream> st = f->audio_stream();
+ _matcher.reset (new Matcher (f->log(), st->sample_rate(), f->frames_per_second()));
+ _delay_line.reset (new DelayLine (f->log(), st->channels(), f->audio_delay() * st->sample_rate() / 1000));
+ _gain.reset (new Gain (f->log(), f->audio_gain()));
+ }
+
+ /* Set up the decoder to use the film's set streams */
+ _decoders.video->set_subtitle_stream (f->subtitle_stream ());
+ if (_decoders.audio) {
+ _decoders.audio->set_audio_stream (f->audio_stream ());
+ }
+
+ if (_matcher) {
+ _decoders.video->connect_video (_matcher);
+ _matcher->connect_video (_encoder);
+ } else {
+ _decoders.video->connect_video (_encoder);
+ }