Bump version
[dcpomatic.git] / test / frame_rate_test.cc
index 2ea7e60a5063fc4ccbcdf127fa95236e262a0996..fdfdcf4529739f126ffab9da192aafeec44f8503 100644 (file)
@@ -20,6 +20,8 @@
 #include <boost/test/unit_test.hpp>
 #include "lib/film.h"
 #include "lib/config.h"
+#include "lib/ffmpeg_content.h"
+#include "lib/playlist.h"
 #include "test.h"
 
 using boost::shared_ptr;
@@ -48,7 +50,7 @@ BOOST_AUTO_TEST_CASE (best_dcp_frame_rate_test_single)
        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.repeat, 1);
        BOOST_CHECK_EQUAL (frc.change_speed, false);
        
        content->_video_frame_rate = 50;
@@ -56,7 +58,7 @@ BOOST_AUTO_TEST_CASE (best_dcp_frame_rate_test_single)
        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.repeat, 1);
        BOOST_CHECK_EQUAL (frc.change_speed, false);
 
        content->_video_frame_rate = 48;
@@ -64,7 +66,7 @@ BOOST_AUTO_TEST_CASE (best_dcp_frame_rate_test_single)
        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.repeat, 1);
        BOOST_CHECK_EQUAL (frc.change_speed, false);
 
        content->_video_frame_rate = 30;
@@ -72,7 +74,7 @@ BOOST_AUTO_TEST_CASE (best_dcp_frame_rate_test_single)
        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.repeat, 1);
        BOOST_CHECK_EQUAL (frc.change_speed, false);
 
        content->_video_frame_rate = 29.97;
@@ -80,7 +82,7 @@ BOOST_AUTO_TEST_CASE (best_dcp_frame_rate_test_single)
        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.repeat, 1);
        BOOST_CHECK_EQUAL (frc.change_speed, true);
        
        content->_video_frame_rate = 25;
@@ -88,7 +90,7 @@ BOOST_AUTO_TEST_CASE (best_dcp_frame_rate_test_single)
        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.repeat, 1);
        BOOST_CHECK_EQUAL (frc.change_speed, false);
 
        content->_video_frame_rate = 24;
@@ -96,7 +98,7 @@ BOOST_AUTO_TEST_CASE (best_dcp_frame_rate_test_single)
        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.repeat, 1);
        BOOST_CHECK_EQUAL (frc.change_speed, false);
 
        content->_video_frame_rate = 14.5;
@@ -104,7 +106,7 @@ BOOST_AUTO_TEST_CASE (best_dcp_frame_rate_test_single)
        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.repeat, 2);
        BOOST_CHECK_EQUAL (frc.change_speed, true);
 
        content->_video_frame_rate = 12.6;
@@ -112,7 +114,7 @@ BOOST_AUTO_TEST_CASE (best_dcp_frame_rate_test_single)
        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.repeat, 2);
        BOOST_CHECK_EQUAL (frc.change_speed, true);
 
        content->_video_frame_rate = 12.4;
@@ -120,7 +122,7 @@ BOOST_AUTO_TEST_CASE (best_dcp_frame_rate_test_single)
        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.repeat, 2);
        BOOST_CHECK_EQUAL (frc.change_speed, true);
 
        content->_video_frame_rate = 12;
@@ -128,7 +130,7 @@ BOOST_AUTO_TEST_CASE (best_dcp_frame_rate_test_single)
        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.repeat, 2);
        BOOST_CHECK_EQUAL (frc.change_speed, false);
 
        /* Now add some more rates and see if it will use them
@@ -145,7 +147,7 @@ BOOST_AUTO_TEST_CASE (best_dcp_frame_rate_test_single)
        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.repeat, 1);
        BOOST_CHECK_EQUAL (frc.change_speed, false);
        
        content->_video_frame_rate = 50;
@@ -153,7 +155,7 @@ BOOST_AUTO_TEST_CASE (best_dcp_frame_rate_test_single)
        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.repeat, 1);
        BOOST_CHECK_EQUAL (frc.change_speed, false);
 
        content->_video_frame_rate = 48;
@@ -161,14 +163,14 @@ BOOST_AUTO_TEST_CASE (best_dcp_frame_rate_test_single)
        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.repeat, 1);
        BOOST_CHECK_EQUAL (frc.change_speed, false);
 
        /* Check some out-there conversions (not the best) */
        
        frc = FrameRateConversion (14.99, 24);
        BOOST_CHECK_EQUAL (frc.skip, false);
-       BOOST_CHECK_EQUAL (frc.repeat, true);
+       BOOST_CHECK_EQUAL (frc.repeat, 2);
        BOOST_CHECK_EQUAL (frc.change_speed, true);
 
        /* Check some conversions with limited DCP targets */
@@ -182,7 +184,7 @@ BOOST_AUTO_TEST_CASE (best_dcp_frame_rate_test_single)
        frc = FrameRateConversion (25, best);
        BOOST_CHECK_EQUAL (best, 24);
        BOOST_CHECK_EQUAL (frc.skip, false);
-       BOOST_CHECK_EQUAL (frc.repeat, false);
+       BOOST_CHECK_EQUAL (frc.repeat, 1);
        BOOST_CHECK_EQUAL (frc.change_speed, true);
 }
 
@@ -228,7 +230,7 @@ BOOST_AUTO_TEST_CASE (audio_sampling_rate_test)
        Config::instance()->set_allowed_dcp_frame_rates (afr);
 
        content->_video_frame_rate = 24;
-       film->set_dcp_video_frame_rate (24);
+       film->set_video_frame_rate (24);
        content->set_audio_stream (shared_ptr<FFmpegAudioStream> (new FFmpegAudioStream ("a", 42, 48000, 0)));
        BOOST_CHECK_EQUAL (content->output_audio_frame_rate(), 48000);
 
@@ -239,30 +241,30 @@ BOOST_AUTO_TEST_CASE (audio_sampling_rate_test)
        BOOST_CHECK_EQUAL (content->output_audio_frame_rate(), 96000);
 
        content->_video_frame_rate = 23.976;
-       film->set_dcp_video_frame_rate (24);
+       film->set_video_frame_rate (24);
        content->set_audio_stream (shared_ptr<FFmpegAudioStream> (new FFmpegAudioStream ("a", 42, 48000, 0)));
        BOOST_CHECK_EQUAL (content->output_audio_frame_rate(), 47952);
 
        content->_video_frame_rate = 29.97;
-       film->set_dcp_video_frame_rate (30);
-       BOOST_CHECK_EQUAL (film->dcp_video_frame_rate (), 30);
+       film->set_video_frame_rate (30);
+       BOOST_CHECK_EQUAL (film->video_frame_rate (), 30);
        content->set_audio_stream (shared_ptr<FFmpegAudioStream> (new FFmpegAudioStream ("a", 42, 48000, 0)));
        BOOST_CHECK_EQUAL (content->output_audio_frame_rate(), 47952);
 
        content->_video_frame_rate = 25;
-       film->set_dcp_video_frame_rate (24);
+       film->set_video_frame_rate (24);
        content->set_audio_stream (shared_ptr<FFmpegAudioStream> (new FFmpegAudioStream ("a", 42, 48000, 0)));
        BOOST_CHECK_EQUAL (content->output_audio_frame_rate(), 50000);
 
        content->_video_frame_rate = 25;
-       film->set_dcp_video_frame_rate (24);
+       film->set_video_frame_rate (24);
        content->set_audio_stream (shared_ptr<FFmpegAudioStream> (new FFmpegAudioStream ("a", 42, 44100, 0)));
        BOOST_CHECK_EQUAL (content->output_audio_frame_rate(), 50000);
 
        /* Check some out-there conversions (not the best) */
        
        content->_video_frame_rate = 14.99;
-       film->set_dcp_video_frame_rate (25);
+       film->set_video_frame_rate (25);
        content->set_audio_stream (shared_ptr<FFmpegAudioStream> (new FFmpegAudioStream ("a", 42, 16000, 0)));
        /* The FrameRateConversion within output_audio_frame_rate should choose to double-up
           the 14.99 fps video to 30 and then run it slow at 25.