}
-void
+static void
setup_test_config ()
{
- Config::instance()->set_master_encoding_threads (boost::thread::hardware_concurrency());
+ Config::instance()->set_master_encoding_threads (boost::thread::hardware_concurrency() / 2);
Config::instance()->set_server_encoding_threads (1);
Config::instance()->set_server_port_base (61921);
- Config::instance()->set_default_isdcf_metadata (ISDCFMetadata ());
Config::instance()->set_default_container (Ratio::from_id ("185"));
Config::instance()->set_default_dcp_content_type (static_cast<DCPContentType*> (0));
Config::instance()->set_default_audio_delay (0);
Config::instance()->set_default_still_length (10);
Config::instance()->set_log_types (
LogEntry::TYPE_GENERAL | LogEntry::TYPE_WARNING |
- LogEntry::TYPE_ERROR | LogEntry::TYPE_DEBUG_THREE_D |
- LogEntry::TYPE_DEBUG_ENCODE | LogEntry::TYPE_DEBUG_PLAYER |
- LogEntry::TYPE_DISK
+ LogEntry::TYPE_ERROR | LogEntry::TYPE_DISK
);
Config::instance()->set_automatic_audio_analysis (false);
auto signer = make_shared<dcp::CertificateChain>(dcp::file_to_string("test/data/signer_chain"));
double
rms_error (boost::filesystem::path ref, boost::filesystem::path check)
{
- FFmpegImageProxy ref_proxy (ref, VideoRange::FULL);
- auto ref_image = ref_proxy.image().image;
- FFmpegImageProxy check_proxy (check, VideoRange::FULL);
- auto check_image = check_proxy.image().image;
+ FFmpegImageProxy ref_proxy (ref);
+ auto ref_image = ref_proxy.image(Image::Alignment::COMPACT).image;
+ FFmpegImageProxy check_proxy (check);
+ auto check_image = check_proxy.image(Image::Alignment::COMPACT).image;
BOOST_REQUIRE_EQUAL (ref_image->pixel_format(), check_image->pixel_format());
AVPixelFormat const format = ref_image->pixel_format();
void
-check_file (boost::filesystem::path ref, boost::filesystem::path check, bool binary_mode)
+check_file (boost::filesystem::path ref, boost::filesystem::path check)
{
auto N = boost::filesystem::file_size (ref);
BOOST_CHECK_EQUAL (N, boost::filesystem::file_size (check));
- auto ref_file = fopen_boost (ref, binary_mode ? "rb" : "r");
+ auto ref_file = fopen_boost (ref, "rb");
BOOST_CHECK (ref_file);
- auto check_file = fopen_boost (check, binary_mode ? "rb" : "r");
+ auto check_file = fopen_boost (check, "rb");
BOOST_CHECK (check_file);
int const buffer_size = 65536;
- uint8_t* ref_buffer = new uint8_t[buffer_size];
- uint8_t* check_buffer = new uint8_t[buffer_size];
+ std::vector<uint8_t> ref_buffer(buffer_size);
+ std::vector<uint8_t> check_buffer(buffer_size);
string error = "File " + check.string() + " differs from reference " + ref.string();
while (N) {
uintmax_t this_time = min (uintmax_t (buffer_size), N);
- size_t r = fread (ref_buffer, 1, this_time, ref_file);
+ size_t r = fread (ref_buffer.data(), 1, this_time, ref_file);
BOOST_CHECK_EQUAL (r, this_time);
- r = fread (check_buffer, 1, this_time, check_file);
+ r = fread (check_buffer.data(), 1, this_time, check_file);
BOOST_CHECK_EQUAL (r, this_time);
- BOOST_CHECK_MESSAGE (memcmp (ref_buffer, check_buffer, this_time) == 0, error);
- if (memcmp (ref_buffer, check_buffer, this_time)) {
+ BOOST_CHECK_MESSAGE (memcmp(ref_buffer.data(), check_buffer.data(), this_time) == 0, error);
+ if (memcmp(ref_buffer.data(), check_buffer.data(), this_time)) {
break;
}
N -= this_time;
}
- delete[] ref_buffer;
- delete[] check_buffer;
+ fclose (ref_file);
+ fclose (check_file);
+}
+
+
+void
+check_text_file (boost::filesystem::path ref, boost::filesystem::path check)
+{
+ auto ref_file = fopen_boost (ref, "r");
+ BOOST_CHECK (ref_file);
+ auto check_file = fopen_boost (check, "r");
+ BOOST_CHECK (check_file);
+
+ int const buffer_size = std::max(
+ boost::filesystem::file_size(ref),
+ boost::filesystem::file_size(check)
+ );
+
+ DCPOMATIC_ASSERT (buffer_size < 1024 * 1024);
+
+ std::vector<uint8_t> ref_buffer(buffer_size);
+ auto ref_read = fread(ref_buffer.data(), 1, buffer_size, ref_file);
+ std::vector<uint8_t> check_buffer(buffer_size);
+ auto check_read = fread(check_buffer.data(), 1, buffer_size, check_file);
+ BOOST_CHECK_EQUAL (ref_read, check_read);
+
+ string const error = "File " + check.string() + " differs from reference " + ref.string();
+ BOOST_CHECK_MESSAGE(memcmp(ref_buffer.data(), check_buffer.data(), ref_read) == 0, error);
fclose (ref_file);
fclose (check_file);
BOOST_CHECK(ok);
}
+
+void
+check_int_close (int a, int b, int d)
+{
+ BOOST_CHECK_MESSAGE (std::abs(a - b) < d, a << " differs from " << b << " by more than " << d);
+}
+
+
+void
+check_int_close (std::pair<int, int> a, std::pair<int, int> b, int d)
+{
+ check_int_close (a.first, b.first, d);
+ check_int_close (a.second, b.second, d);
+}
+
+
+ConfigRestorer::~ConfigRestorer()
+{
+ setup_test_config();
+}
+