- FFmpegDecoder decoder (film, content, true, false);
- shared_ptr<Decoded> a = decoder.peek ();
- cout << a->content_time << "\n";
- decoder.seek (0, true);
- shared_ptr<Decoded> b = decoder.peek ();
- cout << b->content_time << "\n";
-
- /* a will be after no seek, and b after a seek to zero, which should
- have the same effect.
- */
- BOOST_CHECK_EQUAL (a->content_time, b->content_time);
+ /* 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());
+ list<ContentVideo> a = decoder.get_video (first_frame, true);
+ BOOST_CHECK (a.size() == 1);
+ BOOST_CHECK_EQUAL (a.front().frame, first_frame);