summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2015-05-23 00:36:49 +0100
committerCarl Hetherington <cth@carlh.net>2015-05-23 00:36:49 +0100
commit3c6a9cb63daa0b02adf9d2f6425f1c247603216c (patch)
tree9ef18c49d28a54988ce374f952498a6eca7c573e
parent77da4163a25a358cbbbe4237b1728d5e79189482 (diff)
6ebdd1b08ec3156c637db59d6a42efc8fa63ab8f from master; fix failure to import some video MXFs (#566).
-rw-r--r--ChangeLog6
-rw-r--r--TO_PORT1
-rw-r--r--src/lib/ffmpeg.cc19
3 files changed, 22 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index e2d734168..3067283d2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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>
diff --git a/TO_PORT b/TO_PORT
index 91ecbc587..a4e9ef00a 100644
--- a/TO_PORT
+++ b/TO_PORT
@@ -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"));
}