diff options
| author | Carl Hetherington <cth@carlh.net> | 2013-03-01 21:35:41 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2013-03-01 21:35:41 +0000 |
| commit | 6a516da9a403ce05b2b78b3cf1376f4dfe4be3fe (patch) | |
| tree | 7c5307ceefa5a6fc6a11d39bbfb2deca0e29758d /test | |
| parent | dd7cf1ef6e860243b80f4c47a99393244f63a3d5 (diff) | |
Make film hold its DCP frame rate.
Diffstat (limited to 'test')
| -rw-r--r-- | test/metadata.ref | 5 | ||||
| -rw-r--r-- | test/test.cc | 183 |
2 files changed, 103 insertions, 85 deletions
diff --git a/test/metadata.ref b/test/metadata.ref index ab40dfe8d..10702f8a0 100644 --- a/test/metadata.ref +++ b/test/metadata.ref @@ -1,4 +1,4 @@ -version 3 +version 4 name fred use_dci_name 1 content @@ -32,10 +32,11 @@ studio facility package_type dci_date 20130211 +dcp_frame_rate 0 width 0 height 0 length 0 dcp_intrinsic_duration 0 content_digest external_audio_stream external 0 0 -frames_per_second 0 +source_frame_rate 0 diff --git a/test/test.cc b/test/test.cc index 8cfc6e467..b4a459fe7 100644 --- a/test/test.cc +++ b/test/test.cc @@ -500,8 +500,8 @@ BOOST_AUTO_TEST_CASE (make_dcp_with_range_test) BOOST_CHECK_EQUAL (JobManager::instance()->errors(), false); } -/* Test the constructor of DCPFrameRate */ -BOOST_AUTO_TEST_CASE (dcp_frame_rate_test) +/* Test best_dcp_frame_rate and FrameRateConversion */ +BOOST_AUTO_TEST_CASE (best_dcp_frame_rate_test) { /* Run some tests with a limited range of allowed rates */ @@ -511,71 +511,82 @@ BOOST_AUTO_TEST_CASE (dcp_frame_rate_test) afr.push_back (30); Config::instance()->set_allowed_dcp_frame_rates (afr); - DCPFrameRate dfr = DCPFrameRate (60); - BOOST_CHECK_EQUAL (dfr.frames_per_second, 30); - BOOST_CHECK_EQUAL (dfr.skip, true); - BOOST_CHECK_EQUAL (dfr.repeat, false); - BOOST_CHECK_EQUAL (dfr.change_speed, false); + int best = best_dcp_frame_rate (60); + FrameRateConversion frc = FrameRateConversion (60, best); + BOOST_CHECK_EQUAL (best, 30); + BOOST_CHECK_EQUAL (frc.skip, true); + BOOST_CHECK_EQUAL (frc.repeat, false); + BOOST_CHECK_EQUAL (frc.change_speed, false); - dfr = DCPFrameRate (50); - BOOST_CHECK_EQUAL (dfr.frames_per_second, 25); - BOOST_CHECK_EQUAL (dfr.skip, true); - BOOST_CHECK_EQUAL (dfr.repeat, false); - BOOST_CHECK_EQUAL (dfr.change_speed, false); - - dfr = DCPFrameRate (48); - BOOST_CHECK_EQUAL (dfr.frames_per_second, 24); - BOOST_CHECK_EQUAL (dfr.skip, true); - BOOST_CHECK_EQUAL (dfr.repeat, false); - BOOST_CHECK_EQUAL (dfr.change_speed, false); + best = best_dcp_frame_rate (50); + frc = FrameRateConversion (50, best); + BOOST_CHECK_EQUAL (best, 25); + BOOST_CHECK_EQUAL (frc.skip, true); + BOOST_CHECK_EQUAL (frc.repeat, false); + BOOST_CHECK_EQUAL (frc.change_speed, false); + + best = best_dcp_frame_rate (48); + frc = FrameRateConversion (48, best); + BOOST_CHECK_EQUAL (best, 24); + BOOST_CHECK_EQUAL (frc.skip, true); + BOOST_CHECK_EQUAL (frc.repeat, false); + BOOST_CHECK_EQUAL (frc.change_speed, false); - dfr = DCPFrameRate (30); - BOOST_CHECK_EQUAL (dfr.skip, false); - BOOST_CHECK_EQUAL (dfr.frames_per_second, 30); - BOOST_CHECK_EQUAL (dfr.repeat, false); - BOOST_CHECK_EQUAL (dfr.change_speed, false); - - dfr = DCPFrameRate (29.97); - BOOST_CHECK_EQUAL (dfr.skip, false); - BOOST_CHECK_EQUAL (dfr.frames_per_second, 30); - BOOST_CHECK_EQUAL (dfr.repeat, false); - BOOST_CHECK_EQUAL (dfr.change_speed, true); + best = best_dcp_frame_rate (30); + frc = FrameRateConversion (30, best); + BOOST_CHECK_EQUAL (best, 30); + BOOST_CHECK_EQUAL (frc.skip, false); + BOOST_CHECK_EQUAL (frc.repeat, false); + BOOST_CHECK_EQUAL (frc.change_speed, false); + + best = best_dcp_frame_rate (29.97); + frc = FrameRateConversion (29.97, best); + BOOST_CHECK_EQUAL (best, 30); + BOOST_CHECK_EQUAL (frc.skip, false); + BOOST_CHECK_EQUAL (frc.repeat, false); + BOOST_CHECK_EQUAL (frc.change_speed, true); - dfr = DCPFrameRate (25); - BOOST_CHECK_EQUAL (dfr.skip, false); - BOOST_CHECK_EQUAL (dfr.frames_per_second, 25); - BOOST_CHECK_EQUAL (dfr.repeat, false); - BOOST_CHECK_EQUAL (dfr.change_speed, false); - - dfr = DCPFrameRate (24); - BOOST_CHECK_EQUAL (dfr.skip, false); - BOOST_CHECK_EQUAL (dfr.frames_per_second, 24); - BOOST_CHECK_EQUAL (dfr.repeat, false); - BOOST_CHECK_EQUAL (dfr.change_speed, false); - - dfr = DCPFrameRate (14.5); - BOOST_CHECK_EQUAL (dfr.skip, false); - BOOST_CHECK_EQUAL (dfr.frames_per_second, 30); - BOOST_CHECK_EQUAL (dfr.repeat, true); - BOOST_CHECK_EQUAL (dfr.change_speed, true); - - dfr = DCPFrameRate (12.6); - BOOST_CHECK_EQUAL (dfr.skip, false); - BOOST_CHECK_EQUAL (dfr.frames_per_second, 25); - BOOST_CHECK_EQUAL (dfr.repeat, true); - BOOST_CHECK_EQUAL (dfr.change_speed, true); - - dfr = DCPFrameRate (12.4); - BOOST_CHECK_EQUAL (dfr.skip, false); - BOOST_CHECK_EQUAL (dfr.frames_per_second, 25); - BOOST_CHECK_EQUAL (dfr.repeat, true); - BOOST_CHECK_EQUAL (dfr.change_speed, true); - - dfr = DCPFrameRate (12); - BOOST_CHECK_EQUAL (dfr.skip, false); - BOOST_CHECK_EQUAL (dfr.frames_per_second, 24); - BOOST_CHECK_EQUAL (dfr.repeat, true); - BOOST_CHECK_EQUAL (dfr.change_speed, false); + best = best_dcp_frame_rate (25); + frc = FrameRateConversion (25, best); + BOOST_CHECK_EQUAL (best, 25); + BOOST_CHECK_EQUAL (frc.skip, false); + BOOST_CHECK_EQUAL (frc.repeat, false); + BOOST_CHECK_EQUAL (frc.change_speed, false); + + best = best_dcp_frame_rate (24); + frc = FrameRateConversion (24, best); + BOOST_CHECK_EQUAL (best, 24); + BOOST_CHECK_EQUAL (frc.skip, false); + BOOST_CHECK_EQUAL (frc.repeat, false); + BOOST_CHECK_EQUAL (frc.change_speed, false); + + best = best_dcp_frame_rate (14.5); + frc = FrameRateConversion (14.5, best); + BOOST_CHECK_EQUAL (best, 30); + BOOST_CHECK_EQUAL (frc.skip, false); + BOOST_CHECK_EQUAL (frc.repeat, true); + BOOST_CHECK_EQUAL (frc.change_speed, true); + + best = best_dcp_frame_rate (12.6); + frc = FrameRateConversion (12.6, best); + BOOST_CHECK_EQUAL (best, 25); + BOOST_CHECK_EQUAL (frc.skip, false); + BOOST_CHECK_EQUAL (frc.repeat, true); + BOOST_CHECK_EQUAL (frc.change_speed, true); + + best = best_dcp_frame_rate (12.4); + frc = FrameRateConversion (12.4, best); + BOOST_CHECK_EQUAL (best, 25); + BOOST_CHECK_EQUAL (frc.skip, false); + BOOST_CHECK_EQUAL (frc.repeat, true); + BOOST_CHECK_EQUAL (frc.change_speed, true); + + best = best_dcp_frame_rate (12); + frc = FrameRateConversion (12, best); + BOOST_CHECK_EQUAL (best, 24); + BOOST_CHECK_EQUAL (frc.skip, false); + BOOST_CHECK_EQUAL (frc.repeat, true); + BOOST_CHECK_EQUAL (frc.change_speed, false); /* Now add some more rates and see if it will use them in preference to skip/repeat. @@ -586,29 +597,33 @@ BOOST_AUTO_TEST_CASE (dcp_frame_rate_test) afr.push_back (60); Config::instance()->set_allowed_dcp_frame_rates (afr); - dfr = DCPFrameRate (60); - BOOST_CHECK_EQUAL (dfr.frames_per_second, 60); - BOOST_CHECK_EQUAL (dfr.skip, false); - BOOST_CHECK_EQUAL (dfr.repeat, false); - BOOST_CHECK_EQUAL (dfr.change_speed, false); + best = best_dcp_frame_rate (60); + frc = FrameRateConversion (60, best); + BOOST_CHECK_EQUAL (best, 60); + BOOST_CHECK_EQUAL (frc.skip, false); + BOOST_CHECK_EQUAL (frc.repeat, false); + BOOST_CHECK_EQUAL (frc.change_speed, false); - dfr = DCPFrameRate (50); - BOOST_CHECK_EQUAL (dfr.frames_per_second, 50); - BOOST_CHECK_EQUAL (dfr.skip, false); - BOOST_CHECK_EQUAL (dfr.repeat, false); - BOOST_CHECK_EQUAL (dfr.change_speed, false); - - dfr = DCPFrameRate (48); - BOOST_CHECK_EQUAL (dfr.frames_per_second, 48); - BOOST_CHECK_EQUAL (dfr.skip, false); - BOOST_CHECK_EQUAL (dfr.repeat, false); - BOOST_CHECK_EQUAL (dfr.change_speed, false); + best = best_dcp_frame_rate (50); + frc = FrameRateConversion (50, best); + BOOST_CHECK_EQUAL (best, 50); + BOOST_CHECK_EQUAL (frc.skip, false); + BOOST_CHECK_EQUAL (frc.repeat, false); + BOOST_CHECK_EQUAL (frc.change_speed, false); + + best = best_dcp_frame_rate (48); + frc = FrameRateConversion (48, best); + BOOST_CHECK_EQUAL (best, 48); + BOOST_CHECK_EQUAL (frc.skip, false); + BOOST_CHECK_EQUAL (frc.repeat, false); + BOOST_CHECK_EQUAL (frc.change_speed, false); } BOOST_AUTO_TEST_CASE (audio_sampling_rate_test) { shared_ptr<Film> f = new_test_film ("audio_sampling_rate_test"); - f->set_frames_per_second (24); + f->set_source_frame_rate (24); + f->set_dcp_frame_rate (24); f->set_content_audio_stream (shared_ptr<AudioStream> (new FFmpegAudioStream ("a", 42, 48000, 0))); BOOST_CHECK_EQUAL (f->target_audio_sample_rate(), 48000); @@ -619,11 +634,13 @@ BOOST_AUTO_TEST_CASE (audio_sampling_rate_test) f->set_content_audio_stream (shared_ptr<AudioStream> (new FFmpegAudioStream ("a", 42, 80000, 0))); BOOST_CHECK_EQUAL (f->target_audio_sample_rate(), 96000); - f->set_frames_per_second (23.976); + f->set_source_frame_rate (23.976); + f->set_dcp_frame_rate (best_dcp_frame_rate (23.976)); f->set_content_audio_stream (shared_ptr<AudioStream> (new FFmpegAudioStream ("a", 42, 48000, 0))); BOOST_CHECK_EQUAL (f->target_audio_sample_rate(), 47952); - f->set_frames_per_second (29.97); + f->set_source_frame_rate (29.97); + f->set_dcp_frame_rate (best_dcp_frame_rate (29.97)); f->set_content_audio_stream (shared_ptr<AudioStream> (new FFmpegAudioStream ("a", 42, 48000, 0))); BOOST_CHECK_EQUAL (f->target_audio_sample_rate(), 47952); } |
