diff options
| author | Carl Hetherington <cth@carlh.net> | 2013-04-22 13:33:20 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2013-04-22 13:33:20 +0100 |
| commit | 074e70083a115eaac2b593b1c42962ff7e0c3951 (patch) | |
| tree | 768e18a710240b55417c2c2368b1d00e8be8f42c /src/lib/transcoder.cc | |
| parent | f8689d3ebcfeac346a374dd6e6ce15bfa593aadc (diff) | |
Try to fix it.
Diffstat (limited to 'src/lib/transcoder.cc')
| -rw-r--r-- | src/lib/transcoder.cc | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/src/lib/transcoder.cc b/src/lib/transcoder.cc index 23fb5b788..e00b2f1e0 100644 --- a/src/lib/transcoder.cc +++ b/src/lib/transcoder.cc @@ -55,21 +55,33 @@ Transcoder::Transcoder (shared_ptr<Film> f, DecodeOptions o, Job* j, shared_ptr< assert (_encoder); shared_ptr<AudioStream> st = f->audio_stream(); - _matcher.reset (new Matcher (f->log(), st->sample_rate(), f->source_frame_rate())); + if (st) { + _matcher.reset (new Matcher (f->log(), st->sample_rate(), f->source_frame_rate())); + } _delay_line.reset (new DelayLine (f->log(), f->audio_delay() / 1000.0f)); _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 ()); - _decoders.audio->set_audio_stream (f->audio_stream ()); + if (f->audio_stream ()) { + _decoders.audio->set_audio_stream (f->audio_stream ()); + } _decoders.video->connect_video (_delay_line); - _delay_line->connect_video (_matcher); - _matcher->connect_video (_encoder); + if (_matcher) { + _delay_line->connect_video (_matcher); + _matcher->connect_video (_encoder); + } else { + _delay_line->Video.connect (bind (&Encoder::process_video, _encoder, _1, _2, _3)); + } _decoders.audio->connect_audio (_delay_line); - _delay_line->connect_audio (_matcher); - _matcher->connect_audio (_gain); + if (_matcher) { + _delay_line->connect_audio (_matcher); + _matcher->connect_audio (_gain); + } else { + _delay_line->Audio.connect (bind (&Encoder::process_audio, _encoder, _1)); + } _gain->connect_audio (_encoder); } @@ -108,7 +120,9 @@ Transcoder::go () } _delay_line->process_end (); - _matcher->process_end (); + if (_matcher) { + _matcher->process_end (); + } _gain->process_end (); _encoder->process_end (); } |
