X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=test%2Ftest.cc;h=26bca33e5ea33e97e0588049c0d4c6ba32f2a785;hb=b03b2c447a8ed9f855d09a62609ca03cc705fdbf;hp=06954822d68c5a47214c2b8903dd201007de7761;hpb=a8e064b831718a3b06035c12ae94c3caa7a1b4b3;p=dcpomatic.git diff --git a/test/test.cc b/test/test.cc index 06954822d..26bca33e5 100644 --- a/test/test.cc +++ b/test/test.cc @@ -34,6 +34,7 @@ #include "dcp_video_frame.h" #include "config.h" #include "server.h" +#include "cross.h" #define BOOST_TEST_DYN_LINK #define BOOST_TEST_MODULE dvdomatic_test #include @@ -104,11 +105,11 @@ BOOST_AUTO_TEST_CASE (format_test) Format const * f = Format::from_nickname ("Flat"); BOOST_CHECK (f); - BOOST_CHECK_EQUAL (f->ratio_as_integer(), 185); + BOOST_CHECK_EQUAL (f->ratio_as_integer(0), 185); f = Format::from_nickname ("Scope"); BOOST_CHECK (f); - BOOST_CHECK_EQUAL (f->ratio_as_integer(), 239); + BOOST_CHECK_EQUAL (f->ratio_as_integer(0), 239); } BOOST_AUTO_TEST_CASE (util_test) @@ -254,6 +255,17 @@ BOOST_AUTO_TEST_CASE (paths_test) BOOST_CHECK_EQUAL (s.content_path(), "build/test/a/b/c/d/e/foo/bar/baz"); } +void +do_remote_encode (shared_ptr frame, ServerDescription* description, shared_ptr locally_encoded) +{ + shared_ptr remotely_encoded; + BOOST_CHECK_NO_THROW (remotely_encoded = frame->encode_remotely (description)); + BOOST_CHECK (remotely_encoded); + + BOOST_CHECK_EQUAL (locally_encoded->size(), remotely_encoded->size()); + BOOST_CHECK (memcmp (locally_encoded->data(), remotely_encoded->data(), locally_encoded->size()) == 0); +} + BOOST_AUTO_TEST_CASE (client_server_test) { shared_ptr image (new SimpleImage (PIX_FMT_RGB24, Size (1998, 1080))); @@ -271,29 +283,106 @@ BOOST_AUTO_TEST_CASE (client_server_test) FileLog log ("build/test/client_server_test.log"); - DCPVideoFrame frame ( - image, - Size (1998, 1080), - 0, - Scaler::from_id ("bicubic"), - 0, - 24, - "", - 0, - 200000000, - &log + shared_ptr frame ( + new DCPVideoFrame ( + image, + Size (1998, 1080), + 0, + Scaler::from_id ("bicubic"), + 0, + 24, + "", + 0, + 200000000, + &log + ) ); - shared_ptr locally_encoded = frame.encode_locally (); + shared_ptr locally_encoded = frame->encode_locally (); Config::instance()->set_server_port (61920); - Server server (&log); + Server* server = new Server (&log); - thread t (boost::bind (&Server::run, &server, 1)); + new thread (boost::bind (&Server::run, server, 2)); - ServerDescription description ("localhost", 1); - shared_ptr remotely_encoded = frame.encode_remotely (&description); + ServerDescription description ("localhost", 2); - BOOST_CHECK_EQUAL (locally_encoded->size(), remotely_encoded->size()); - BOOST_CHECK (memcmp (locally_encoded->data(), remotely_encoded->data(), locally_encoded->size()) == 0); + list threads; + for (int i = 0; i < 8; ++i) { + threads.push_back (new thread (boost::bind (do_remote_encode, frame, &description, locally_encoded))); + } + + for (list::iterator i = threads.begin(); i != threads.end(); ++i) { + (*i)->join (); + } +} + +BOOST_AUTO_TEST_CASE (make_dcp_test) +{ + string const test_film = "build/test/film2"; + + if (boost::filesystem::exists (test_film)) { + boost::filesystem::remove_all (test_film); + } + + Film film (test_film, false); + film.set_name ("test_film"); + film.set_content ("../../../test/test.mp4"); + film.examine_content (); + film.set_format (Format::from_nickname ("Flat")); + film.set_dcp_content_type (DCPContentType::from_pretty_name ("Test")); + film.make_dcp (true); + + while (JobManager::instance()->work_to_do ()) { + dvdomatic_sleep (1); + } + + BOOST_CHECK_EQUAL (JobManager::instance()->errors(), false); +} + +BOOST_AUTO_TEST_CASE (make_dcp_with_range_test) +{ + string const test_film = "build/test/film3"; + + if (boost::filesystem::exists (test_film)) { + boost::filesystem::remove_all (test_film); + } + + Film film (test_film, false); + film.set_name ("test_film"); + film.set_content ("../../../test/test.mp4"); + film.examine_content (); + film.set_format (Format::from_nickname ("Flat")); + film.set_dcp_content_type (DCPContentType::from_pretty_name ("Test")); + film.set_dcp_frames (42); + film.make_dcp (true); + + while (JobManager::instance()->work_to_do ()) { + dvdomatic_sleep (1); + } + + BOOST_CHECK_EQUAL (JobManager::instance()->errors(), false); +} + +BOOST_AUTO_TEST_CASE (audio_sampling_rate_test) +{ + FilmState fs; + fs.frames_per_second = 24; + + fs.audio_sample_rate = 48000; + BOOST_CHECK_EQUAL (fs.target_sample_rate(), 48000); + + fs.audio_sample_rate = 44100; + BOOST_CHECK_EQUAL (fs.target_sample_rate(), 48000); + + fs.audio_sample_rate = 80000; + BOOST_CHECK_EQUAL (fs.target_sample_rate(), 96000); + + fs.frames_per_second = 23.976; + fs.audio_sample_rate = 48000; + BOOST_CHECK_EQUAL (fs.target_sample_rate(), 47952); + + fs.frames_per_second = 29.97; + fs.audio_sample_rate = 48000; + BOOST_CHECK_EQUAL (fs.target_sample_rate(), 47952); }