diff options
| author | Carl Hetherington <cth@carlh.net> | 2015-05-23 00:36:49 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2015-05-23 00:36:49 +0100 |
| commit | 3c6a9cb63daa0b02adf9d2f6425f1c247603216c (patch) | |
| tree | 9ef18c49d28a54988ce374f952498a6eca7c573e | |
| parent | 77da4163a25a358cbbbe4237b1728d5e79189482 (diff) | |
6ebdd1b08ec3156c637db59d6a42efc8fa63ab8f from master; fix failure to import some video MXFs (#566).
| -rw-r--r-- | ChangeLog | 6 | ||||
| -rw-r--r-- | TO_PORT | 1 | ||||
| -rw-r--r-- | src/lib/ffmpeg.cc | 19 |
3 files changed, 22 insertions, 4 deletions
@@ -1,6 +1,10 @@ +2015-05-23 Carl Hetherington <cth@carlh.net> + + * Fix failure to import some video MXFs (#566). + 2015-05-17 Carl Hetherington <cth@carlh.net> - * Fix Update DCP name on changing DCP standard (#570). + * Update DCP name on changing DCP standard (#570). 2015-05-14 Carl Hetherington <cth@carlh.net> @@ -1,4 +1,3 @@ -2a595178e42734336983693e8150609554b6a08d 4bcdf16458e460dd4a78d634dfe69f2a44182541 21f33acd3580c6e5c4ec1e7449b419c3178aa8ab Multi-stream audio stuff. diff --git a/src/lib/ffmpeg.cc b/src/lib/ffmpeg.cc index 08349fba4..0cbf7e128 100644 --- a/src/lib/ffmpeg.cc +++ b/src/lib/ffmpeg.cc @@ -103,16 +103,31 @@ FFmpeg::setup_general () /* Find video stream */ + int video_stream_undefined_frame_rate = -1; + for (uint32_t i = 0; i < _format_context->nb_streams; ++i) { AVStream* s = _format_context->streams[i]; /* Files from iTunes sometimes have two video streams, one with the avg_frame_rate.num and .den set to zero. Ignore these streams. */ - if (s->codec->codec_type == AVMEDIA_TYPE_VIDEO && s->avg_frame_rate.num > 0 && s->avg_frame_rate.den > 0) { - _video_stream = i; + if (s->codec->codec_type == AVMEDIA_TYPE_VIDEO) { + if (s->avg_frame_rate.num > 0 && s->avg_frame_rate.den > 0) { + /* This is definitely our video stream */ + _video_stream = i; + } else { + /* This is our video stream if we don't get a better offer */ + video_stream_undefined_frame_rate = i; + } } } + /* Files from iTunes sometimes have two video streams, one with the avg_frame_rate.num and .den set + to zero. Only use such a stream if there is no alternative. + */ + if (_video_stream == -1 && video_stream_undefined_frame_rate != -1) { + _video_stream = video_stream_undefined_frame_rate; + } + if (_video_stream < 0) { throw DecodeError (N_("could not find video stream")); } |
