6ebdd1b08ec3156c637db59d6a42efc8fa63ab8f from master; fix failure to import some...
authorCarl Hetherington <cth@carlh.net>
Fri, 22 May 2015 23:36:49 +0000 (00:36 +0100)
committerCarl Hetherington <cth@carlh.net>
Fri, 22 May 2015 23:36:49 +0000 (00:36 +0100)
ChangeLog
TO_PORT
src/lib/ffmpeg.cc

index e2d734168b2a9ea7a5a7c1e80e4d115cfcf9f0de..3067283d2fb64a384d46be9e609772094c539e0f 100644 (file)
--- 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 91ecbc587a30bc7b3fee2a84d475d02366f700ba..a4e9ef00a90941573f39c0afd2ea2144a71830ab 100644 (file)
--- a/TO_PORT
+++ b/TO_PORT
@@ -1,4 +1,3 @@
-2a595178e42734336983693e8150609554b6a08d
 4bcdf16458e460dd4a78d634dfe69f2a44182541
 21f33acd3580c6e5c4ec1e7449b419c3178aa8ab
 Multi-stream audio stuff.
index 08349fba40c0008f01c96461221249c8af07d7d3..0cbf7e128b4443e43025768163e3e7ef99f6e447 100644 (file)
@@ -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"));
        }