summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-12-18 12:09:35 +0000
committerCarl Hetherington <cth@carlh.net>2013-12-18 12:09:35 +0000
commit060a980527bc0b39e12494fec3c0baaab4c9d086 (patch)
tree82de7bbcf605543be583b2ed3daf22d8145f6657 /test
parente0c59417c6a52dbd853114fbc0f88c6d8c1dd276 (diff)
Fix seek with respect to video/audio frame boundary alignment.
Diffstat (limited to 'test')
-rw-r--r--test/ffmpeg_seek_test.cc14
-rw-r--r--test/util_test.cc14
2 files changed, 24 insertions, 4 deletions
diff --git a/test/ffmpeg_seek_test.cc b/test/ffmpeg_seek_test.cc
index f587d6cc6..e66a1918c 100644
--- a/test/ffmpeg_seek_test.cc
+++ b/test/ffmpeg_seek_test.cc
@@ -28,11 +28,13 @@ using std::cout;
using std::string;
using std::stringstream;
using boost::shared_ptr;
+using boost::optional;
#define FFMPEG_SEEK_TEST_DEBUG 1
-boost::optional<DCPTime> first_video;
-boost::optional<DCPTime> first_audio;
+optional<DCPTime> first_video;
+optional<DCPTime> first_audio;
+shared_ptr<Film> film;
static void
process_video (shared_ptr<PlayerImage>, Eyes, ColourConversion, bool, DCPTime t)
@@ -77,14 +79,18 @@ check (shared_ptr<Player> p, DCPTime t)
cout << "First video " << print_time (first_video.get(), 24) << "\n";
cout << "First audio " << print_time (first_audio.get(), 24) << "\n";
#endif
-
+
+ /* Outputs should be on or after seek time */
BOOST_CHECK (first_video.get() >= t);
BOOST_CHECK (first_audio.get() >= t);
+ /* And should be rounded to frame boundaries */
+ BOOST_CHECK ((first_video.get() % (TIME_HZ / film->video_frame_rate())) == 0);
+ BOOST_CHECK ((first_audio.get() % (TIME_HZ / film->audio_frame_rate())) == 0);
}
BOOST_AUTO_TEST_CASE (ffmpeg_seek_test)
{
- shared_ptr<Film> film = new_test_film ("ffmpeg_audio_test");
+ film = new_test_film ("ffmpeg_audio_test");
film->set_name ("ffmpeg_audio_test");
film->set_container (Ratio::from_id ("185"));
shared_ptr<FFmpegContent> c (new FFmpegContent (film, "test/data/staircase.mov"));
diff --git a/test/util_test.cc b/test/util_test.cc
index 4dccb49c6..5733c7d03 100644
--- a/test/util_test.cc
+++ b/test/util_test.cc
@@ -53,3 +53,17 @@ BOOST_AUTO_TEST_CASE (md5_digest_test)
p.push_back ("foobar");
BOOST_CHECK_THROW (md5_digest (p, shared_ptr<Job> ()), std::runtime_error);
}
+
+/* Straightforward test of time_round_up_test */
+BOOST_AUTO_TEST_CASE (time_round_up_test)
+{
+ BOOST_CHECK_EQUAL (time_round_up (0, 2), 0);
+ BOOST_CHECK_EQUAL (time_round_up (1, 2), 2);
+ BOOST_CHECK_EQUAL (time_round_up (2, 2), 2);
+ BOOST_CHECK_EQUAL (time_round_up (3, 2), 4);
+
+ BOOST_CHECK_EQUAL (time_round_up (0, 42), 0);
+ BOOST_CHECK_EQUAL (time_round_up (1, 42), 42);
+ BOOST_CHECK_EQUAL (time_round_up (42, 42), 42);
+ BOOST_CHECK_EQUAL (time_round_up (43, 42), 84);
+}