Bump version
[dcpomatic.git] / test / frame_rate_test.cc
index 89a74e0864056228751c502e8333f00946704a08..fdfdcf4529739f126ffab9da192aafeec44f8503 100644 (file)
 
 */
 
+#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;
+
 /* Test Playlist::best_dcp_frame_rate and FrameRateConversion
    with a single piece of content.
 */
@@ -41,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;
@@ -49,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;
@@ -57,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;
@@ -65,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;
@@ -73,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;
@@ -81,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;
@@ -89,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;
@@ -97,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;
@@ -105,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;
@@ -113,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;
@@ -121,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
@@ -138,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;
@@ -146,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;
@@ -154,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 */
@@ -175,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);
 }
 
@@ -221,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);
 
@@ -232,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.