diff options
| author | Carl Hetherington <cth@carlh.net> | 2016-05-10 13:50:47 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2016-05-18 11:50:29 +0100 |
| commit | 9423e02c37daba7f9e406929a1cfc1bb10fb4b62 (patch) | |
| tree | 96a4fc5435652a913a5732907474fc11968deb04 /src/lib/ffmpeg_content.cc | |
| parent | 90becb40eb48467b6d31d6939bcfcf39c3c9652c (diff) | |
Partial work on using a no-video FFmpeg file.
Diffstat (limited to 'src/lib/ffmpeg_content.cc')
| -rw-r--r-- | src/lib/ffmpeg_content.cc | 43 |
1 files changed, 24 insertions, 19 deletions
diff --git a/src/lib/ffmpeg_content.cc b/src/lib/ffmpeg_content.cc index a0bf88c25..bb9795f25 100644 --- a/src/lib/ffmpeg_content.cc +++ b/src/lib/ffmpeg_content.cc @@ -64,11 +64,7 @@ int const FFmpegContentProperty::FILTERS = 102; FFmpegContent::FFmpegContent (shared_ptr<const Film> film, boost::filesystem::path p) : Content (film, p) { - video.reset (new VideoContent (this, film)); - audio.reset (new AudioContent (this, film)); - subtitle.reset (new SubtitleContent (this, film)); - set_default_colour_conversion (); } FFmpegContent::FFmpegContent (shared_ptr<const Film> film, cxml::ConstNodePtr node, int version, list<string>& notes) @@ -210,35 +206,44 @@ FFmpegContent::examine (shared_ptr<Job> job) Content::examine (job); shared_ptr<FFmpegExaminer> examiner (new FFmpegExaminer (shared_from_this (), job)); - video->take_from_examiner (examiner); - set_default_colour_conversion (); + + if (examiner->has_video ()) { + video.reset (new VideoContent (this, film ())); + video->take_from_examiner (examiner); + set_default_colour_conversion (); + } { boost::mutex::scoped_lock lm (_mutex); - _subtitle_streams = examiner->subtitle_streams (); - if (!_subtitle_streams.empty ()) { - _subtitle_stream = _subtitle_streams.front (); + if (examiner->has_video ()) { + _first_video = examiner->first_video (); + _color_range = examiner->color_range (); + _color_primaries = examiner->color_primaries (); + _color_trc = examiner->color_trc (); + _colorspace = examiner->colorspace (); + _bits_per_pixel = examiner->bits_per_pixel (); } - BOOST_FOREACH (shared_ptr<FFmpegAudioStream> i, examiner->audio_streams ()) { - audio->add_stream (i); - } + if (!examiner->audio_streams().empty ()) { + audio.reset (new AudioContent (this, film ())); + + BOOST_FOREACH (shared_ptr<FFmpegAudioStream> i, examiner->audio_streams ()) { + audio->add_stream (i); + } - if (!audio->streams().empty ()) { AudioStreamPtr as = audio->streams().front(); AudioMapping m = as->mapping (); film()->make_audio_mapping_default (m); as->set_mapping (m); } - _first_video = examiner->first_video (); + _subtitle_streams = examiner->subtitle_streams (); + if (!_subtitle_streams.empty ()) { + subtitle.reset (new SubtitleContent (this, film ())); + _subtitle_stream = _subtitle_streams.front (); + } - _color_range = examiner->color_range (); - _color_primaries = examiner->color_primaries (); - _color_trc = examiner->color_trc (); - _colorspace = examiner->colorspace (); - _bits_per_pixel = examiner->bits_per_pixel (); } signal_changed (FFmpegContentProperty::SUBTITLE_STREAMS); |
