Another missing Magick hack.
[dcpomatic.git] / test / seek_zero_test.cc
index 150e12d9016e389a6477d731f7d6155608eb24dc..682fa93555742461f93f556cd714231685c51c23 100644 (file)
 #include "lib/ratio.h"
 #include "lib/dcp_content_type.h"
 #include "lib/ffmpeg_decoder.h"
+#include "lib/ffmpeg_audio_stream.h"
 #include "lib/content_video.h"
 #include "test.h"
 
 using std::cout;
+using std::list;
 using boost::shared_ptr;
 using boost::dynamic_pointer_cast;
 using boost::optional;
@@ -47,9 +49,18 @@ BOOST_AUTO_TEST_CASE (seek_zero_test)
        film->examine_and_add_content (content);
        wait_for_jobs ();
 
+       /* Work out the first video frame index that we will be given, taking into account
+        * the difference between first video and first audio.
+        */
+       ContentTime video_delay = content->first_video().get() - content->audio_stream()->first_audio.get();
+       if (video_delay < ContentTime ()) {
+               video_delay = ContentTime ();
+       }
+
+       VideoFrame const first_frame = video_delay.round_up (content->video_frame_rate ()).frames (content->video_frame_rate ());
+
        FFmpegDecoder decoder (content, film->log());
-       optional<ContentVideo> a = decoder.get_video (0, true);
-       optional<ContentVideo> b = decoder.get_video (0, true);
-       BOOST_CHECK_EQUAL (a->frame, 0);
-       BOOST_CHECK_EQUAL (b->frame, 0);
+       list<ContentVideo> a = decoder.get_video (first_frame, true);
+       BOOST_CHECK (a.size() == 1);
+       BOOST_CHECK_EQUAL (a.front().frame, first_frame);
 }