summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2023-03-17 14:11:34 +0100
committerCarl Hetherington <cth@carlh.net>2023-03-20 16:41:02 +0100
commit20e3e4c2a7a91e45740987a702f5d4c1ea2f9030 (patch)
treedd8d9a08834170980ff34ea288ed0334a8b2d9b0
parent870f02f07ee51ee478006260e2c3b683e591b0c9 (diff)
Use an enum instead of a bool in PictureAsset::start_write().
-rw-r--r--examples/make_dcp.cc2
-rw-r--r--src/mono_picture_asset.cc4
-rw-r--r--src/mono_picture_asset.h7
-rw-r--r--src/picture_asset.h7
-rw-r--r--src/stereo_picture_asset.cc4
-rw-r--r--src/stereo_picture_asset.h2
-rw-r--r--test/dcp_test.cc4
-rw-r--r--test/decryption_test.cc2
-rw-r--r--test/encryption_test.cc2
-rw-r--r--test/frame_info_hash_test.cc2
-rw-r--r--test/kdm_test.cc2
-rw-r--r--test/recovery_test.cc4
-rw-r--r--test/round_trip_test.cc2
-rw-r--r--test/test.cc4
-rw-r--r--test/verify_test.cc6
-rw-r--r--tools/dcpdecryptmxf.cc4
16 files changed, 32 insertions, 26 deletions
diff --git a/examples/make_dcp.cc b/examples/make_dcp.cc
index 60f5608a..a99d4ef0 100644
--- a/examples/make_dcp.cc
+++ b/examples/make_dcp.cc
@@ -59,7 +59,7 @@ main ()
auto picture_asset = std::make_shared<dcp::MonoPictureAsset>(dcp::Fraction(24, 1), dcp::Standard::SMPTE);
/* Start off a write to it */
- auto picture_writer = picture_asset->start_write("DCP/picture.mxf", false);
+ auto picture_writer = picture_asset->start_write("DCP/picture.mxf", dcp::PictureAsset::Behaviour::MAKE_NEW);
/* Write 24 frames of the same JPEG2000 file */
dcp::ArrayData picture("examples/help.j2c");
diff --git a/src/mono_picture_asset.cc b/src/mono_picture_asset.cc
index 5aba95d2..cdfcb0df 100644
--- a/src/mono_picture_asset.cc
+++ b/src/mono_picture_asset.cc
@@ -183,10 +183,10 @@ MonoPictureAsset::equals (shared_ptr<const Asset> other, EqualityOptions opt, No
shared_ptr<PictureAssetWriter>
-MonoPictureAsset::start_write (boost::filesystem::path file, bool overwrite)
+MonoPictureAsset::start_write(boost::filesystem::path file, Behaviour behaviour)
{
/* Can't use make_shared here as the MonoPictureAssetWriter constructor is private */
- return shared_ptr<MonoPictureAssetWriter>(new MonoPictureAssetWriter(this, file, overwrite));
+ return shared_ptr<MonoPictureAssetWriter>(new MonoPictureAssetWriter(this, file, behaviour == Behaviour::OVERWRITE_EXISTING));
}
shared_ptr<MonoPictureAssetReader>
diff --git a/src/mono_picture_asset.h b/src/mono_picture_asset.h
index 7a37fa73..625d6ac8 100644
--- a/src/mono_picture_asset.h
+++ b/src/mono_picture_asset.h
@@ -70,10 +70,11 @@ public:
/** Start a progressive write to a MonoPictureAsset.
* @path file File to write to.
- * @path overwrite true to overwrite an existing file; for use when continuing a write which
- * previously failed. If in doubt, use false here.
+ * @path behaviour OVERWRITE_EXISTING to overwrite and potentially add to an existing file
+ * (after a write previously failed), MAKE_NEW to create a new file.
+ * If in doubt, use MAKE_NEW here.
*/
- std::shared_ptr<PictureAssetWriter> start_write (boost::filesystem::path file, bool overwrite) override;
+ std::shared_ptr<PictureAssetWriter> start_write(boost::filesystem::path file, Behaviour behaviour) override;
std::shared_ptr<MonoPictureAssetReader> start_read () const;
bool equals (
diff --git a/src/picture_asset.h b/src/picture_asset.h
index 011dea87..236eca22 100644
--- a/src/picture_asset.h
+++ b/src/picture_asset.h
@@ -73,9 +73,14 @@ public:
/** Create a new PictureAsset with a given edit rate and standard */
explicit PictureAsset (Fraction edit_rate, Standard standard);
+ enum class Behaviour {
+ OVERWRITE_EXISTING,
+ MAKE_NEW
+ };
+
virtual std::shared_ptr<PictureAssetWriter> start_write (
boost::filesystem::path file,
- bool overwrite
+ Behaviour behaviour
) = 0;
Size size () const {
diff --git a/src/stereo_picture_asset.cc b/src/stereo_picture_asset.cc
index 7e3f6f63..cf07c6be 100644
--- a/src/stereo_picture_asset.cc
+++ b/src/stereo_picture_asset.cc
@@ -87,9 +87,9 @@ StereoPictureAsset::StereoPictureAsset (Fraction edit_rate, Standard standard)
shared_ptr<PictureAssetWriter>
-StereoPictureAsset::start_write (boost::filesystem::path file, bool overwrite)
+StereoPictureAsset::start_write(boost::filesystem::path file, Behaviour behaviour)
{
- return shared_ptr<StereoPictureAssetWriter> (new StereoPictureAssetWriter(this, file, overwrite));
+ return shared_ptr<StereoPictureAssetWriter>(new StereoPictureAssetWriter(this, file, behaviour == Behaviour::OVERWRITE_EXISTING));
}
diff --git a/src/stereo_picture_asset.h b/src/stereo_picture_asset.h
index a3365048..9c9a2fa1 100644
--- a/src/stereo_picture_asset.h
+++ b/src/stereo_picture_asset.h
@@ -58,7 +58,7 @@ public:
explicit StereoPictureAsset (Fraction edit_rate, Standard standard);
/** Start a progressive write to a StereoPictureAsset */
- std::shared_ptr<PictureAssetWriter> start_write (boost::filesystem::path file, bool) override;
+ std::shared_ptr<PictureAssetWriter> start_write(boost::filesystem::path file, Behaviour behaviour) override;
std::shared_ptr<StereoPictureAssetReader> start_read () const;
bool equals (
diff --git a/test/dcp_test.cc b/test/dcp_test.cc
index 03c5e2a9..7b2eb4ef 100644
--- a/test/dcp_test.cc
+++ b/test/dcp_test.cc
@@ -103,7 +103,7 @@ BOOST_AUTO_TEST_CASE (dcp_test2)
auto mp = make_shared<dcp::StereoPictureAsset>(dcp::Fraction (24, 1), dcp::Standard::SMPTE);
mp->set_metadata (mxf_meta);
- auto picture_writer = mp->start_write ("build/test/DCP/dcp_test2/video.mxf", false);
+ auto picture_writer = mp->start_write("build/test/DCP/dcp_test2/video.mxf", dcp::PictureAsset::Behaviour::MAKE_NEW);
dcp::ArrayData j2c ("test/data/flat_red.j2c");
for (int i = 0; i < 24; ++i) {
/* Left */
@@ -288,7 +288,7 @@ BOOST_AUTO_TEST_CASE (dcp_test5)
auto mp = make_shared<dcp::MonoPictureAsset>(dcp::Fraction (24, 1), dcp::Standard::SMPTE);
mp->set_metadata (mxf_meta);
- shared_ptr<dcp::PictureAssetWriter> picture_writer = mp->start_write ("build/test/DCP/dcp_test5/video.mxf", false);
+ auto picture_writer = mp->start_write("build/test/DCP/dcp_test5/video.mxf", dcp::PictureAsset::Behaviour::MAKE_NEW);
dcp::ArrayData j2c ("test/data/flat_red.j2c");
for (int i = 0; i < 24; ++i) {
picture_writer->write (j2c.data (), j2c.size ());
diff --git a/test/decryption_test.cc b/test/decryption_test.cc
index 757a6986..1e2ca94b 100644
--- a/test/decryption_test.cc
+++ b/test/decryption_test.cc
@@ -155,7 +155,7 @@ BOOST_AUTO_TEST_CASE (decryption_test2)
auto picture_asset = std::make_shared<dcp::MonoPictureAsset>(dcp::Fraction(24, 1), dcp::Standard::SMPTE);
picture_asset->set_key (key);
picture_asset->set_context_id (context_id);
- auto picture_writer = picture_asset->start_write(dir / "picture.mxf", false);
+ auto picture_writer = picture_asset->start_write(dir / "picture.mxf", dcp::PictureAsset::Behaviour::MAKE_NEW);
dcp::ArrayData picture("test/data/flat_red.j2c");
for (int i = 0; i < 24; ++i) {
picture_writer->write(picture);
diff --git a/test/encryption_test.cc b/test/encryption_test.cc
index 29b8f1fb..f2a40843 100644
--- a/test/encryption_test.cc
+++ b/test/encryption_test.cc
@@ -93,7 +93,7 @@ BOOST_AUTO_TEST_CASE (encryption_test)
mp->set_metadata (mxf_metadata);
mp->set_key (key);
- auto writer = mp->start_write ("build/test/DCP/encryption_test/video.mxf", false);
+ auto writer = mp->start_write("build/test/DCP/encryption_test/video.mxf", dcp::PictureAsset::Behaviour::MAKE_NEW);
dcp::ArrayData j2c ("test/data/flat_red.j2c");
for (int i = 0; i < 24; ++i) {
writer->write (j2c.data (), j2c.size ());
diff --git a/test/frame_info_hash_test.cc b/test/frame_info_hash_test.cc
index ed914916..c19172c6 100644
--- a/test/frame_info_hash_test.cc
+++ b/test/frame_info_hash_test.cc
@@ -67,7 +67,7 @@ check (shared_ptr<dcp::PictureAssetWriter> writer, boost::random::uniform_int_di
BOOST_AUTO_TEST_CASE (frame_info_hash_test)
{
auto mp = make_shared<dcp::MonoPictureAsset>(dcp::Fraction (24, 1), dcp::Standard::SMPTE);
- auto writer = mp->start_write ("build/test/frame_info_hash_test.mxf", false);
+ auto writer = mp->start_write("build/test/frame_info_hash_test.mxf", dcp::PictureAsset::Behaviour::MAKE_NEW);
boost::random::mt19937 rng(1);
boost::random::uniform_int_distribution<> dist(0, 4095);
diff --git a/test/kdm_test.cc b/test/kdm_test.cc
index 5f72f3bc..6f06b4c9 100644
--- a/test/kdm_test.cc
+++ b/test/kdm_test.cc
@@ -258,7 +258,7 @@ BOOST_AUTO_TEST_CASE (validity_period_test1)
auto asset = make_shared<dcp::MonoPictureAsset>(dcp::Fraction(24, 1), dcp::Standard::SMPTE);
asset->set_key (dcp::Key());
- auto writer = asset->start_write ("build/test/validity_period_test1.mxf", false);
+ auto writer = asset->start_write("build/test/validity_period_test1.mxf", dcp::PictureAsset::Behaviour::MAKE_NEW);
dcp::ArrayData frame ("test/data/flat_red.j2c");
writer->write (frame.data(), frame.size());
writer->finalize ();
diff --git a/test/recovery_test.cc b/test/recovery_test.cc
index 43e5b93d..eaf34f81 100644
--- a/test/recovery_test.cc
+++ b/test/recovery_test.cc
@@ -56,7 +56,7 @@ BOOST_AUTO_TEST_CASE (recovery)
boost::filesystem::remove_all ("build/test/baz");
boost::filesystem::create_directories ("build/test/baz");
auto mp = make_shared<dcp::MonoPictureAsset>(dcp::Fraction (24, 1), dcp::Standard::SMPTE);
- auto writer = mp->start_write ("build/test/baz/video1.mxf", false);
+ auto writer = mp->start_write("build/test/baz/video1.mxf", dcp::PictureAsset::Behaviour::MAKE_NEW);
int written_size = 0;
for (int i = 0; i < 24; ++i) {
@@ -83,7 +83,7 @@ BOOST_AUTO_TEST_CASE (recovery)
Kumu::ResetTestRNG ();
mp = make_shared<dcp::MonoPictureAsset>(dcp::Fraction (24, 1), dcp::Standard::SMPTE);
- writer = mp->start_write ("build/test/baz/video2.mxf", true);
+ writer = mp->start_write("build/test/baz/video2.mxf", dcp::PictureAsset::Behaviour::OVERWRITE_EXISTING);
writer->write (data.data(), data.size());
diff --git a/test/round_trip_test.cc b/test/round_trip_test.cc
index add00651..028accbe 100644
--- a/test/round_trip_test.cc
+++ b/test/round_trip_test.cc
@@ -71,7 +71,7 @@ BOOST_AUTO_TEST_CASE (round_trip_test)
boost::filesystem::create_directory (work_dir);
auto asset_A = make_shared<dcp::MonoPictureAsset>(dcp::Fraction (24, 1), dcp::Standard::SMPTE);
- auto writer = asset_A->start_write (work_dir / "video.mxf", false);
+ auto writer = asset_A->start_write(work_dir / "video.mxf", dcp::PictureAsset::Behaviour::MAKE_NEW);
dcp::ArrayData j2c ("test/data/flat_red.j2c");
for (int i = 0; i < 24; ++i) {
writer->write (j2c.data (), j2c.size ());
diff --git a/test/test.cc b/test/test.cc
index 76ed92f4..a8efa5c3 100644
--- a/test/test.cc
+++ b/test/test.cc
@@ -273,7 +273,7 @@ simple_picture (boost::filesystem::path path, string suffix, int frames, optiona
if (key) {
mp->set_key (*key);
}
- auto picture_writer = mp->start_write (path / dcp::String::compose("video%1.mxf", suffix), false);
+ auto picture_writer = mp->start_write(path / dcp::String::compose("video%1.mxf", suffix), dcp::PictureAsset::Behaviour::MAKE_NEW);
dcp::Size const size (1998, 1080);
auto image = make_shared<dcp::OpenJPEGImage>(size);
@@ -516,7 +516,7 @@ black_picture_asset (boost::filesystem::path dir, int frames)
auto asset = make_shared<dcp::MonoPictureAsset>(dcp::Fraction(24, 1), dcp::Standard::SMPTE);
asset->set_metadata (dcp::MXFMetadata("libdcp", "libdcp", "1.6.4devel"));
boost::filesystem::create_directories (dir);
- auto writer = asset->start_write (dir / "pic.mxf", true);
+ auto writer = asset->start_write(dir / "pic.mxf", dcp::PictureAsset::Behaviour::MAKE_NEW);
for (int i = 0; i < frames; ++i) {
writer->write (frame.data(), frame.size());
}
diff --git a/test/verify_test.cc b/test/verify_test.cc
index 396a1ef5..5b51db43 100644
--- a/test/verify_test.cc
+++ b/test/verify_test.cc
@@ -679,7 +679,7 @@ dcp_from_frame (dcp::ArrayData const& frame, path dir)
{
auto asset = make_shared<dcp::MonoPictureAsset>(dcp::Fraction(24, 1), dcp::Standard::SMPTE);
create_directories (dir);
- auto writer = asset->start_write (dir / "pic.mxf", true);
+ auto writer = asset->start_write(dir / "pic.mxf", dcp::PictureAsset::Behaviour::MAKE_NEW);
for (int i = 0; i < 24; ++i) {
writer->write (frame.data(), frame.size());
}
@@ -1227,7 +1227,7 @@ check_picture_size (int width, int height, int frame_rate, bool three_d)
} else {
mp = make_shared<dcp::MonoPictureAsset>(dcp::Fraction(frame_rate, 1), dcp::Standard::SMPTE);
}
- auto picture_writer = mp->start_write (dcp_path / "video.mxf", false);
+ auto picture_writer = mp->start_write(dcp_path / "video.mxf", dcp::PictureAsset::Behaviour::MAKE_NEW);
auto image = black_image (dcp::Size(width, height));
auto j2c = dcp::compress_j2k (image, 100000000, frame_rate, three_d, width > 2048);
@@ -3025,7 +3025,7 @@ BOOST_AUTO_TEST_CASE (verify_partially_encrypted)
auto mp = make_shared<dcp::MonoPictureAsset>(dcp::Fraction (24, 1), dcp::Standard::SMPTE);
mp->set_key (key);
- auto writer = mp->start_write (dir / "video.mxf", false);
+ auto writer = mp->start_write(dir / "video.mxf", dcp::PictureAsset::Behaviour::MAKE_NEW);
dcp::ArrayData j2c ("test/data/flat_red.j2c");
for (int i = 0; i < 24; ++i) {
writer->write (j2c.data(), j2c.size());
diff --git a/tools/dcpdecryptmxf.cc b/tools/dcpdecryptmxf.cc
index 33ba79bb..1cdb58ec 100644
--- a/tools/dcpdecryptmxf.cc
+++ b/tools/dcpdecryptmxf.cc
@@ -221,7 +221,7 @@ main (int argc, char* argv[])
in.max_object_count(),
in.atmos_version()
);
- auto writer = out.start_write (output_file.get());
+ auto writer = out.start_write(output_file.get());
copy (in, writer, ignore_hmac);
break;
}
@@ -230,7 +230,7 @@ main (int argc, char* argv[])
dcp::MonoPictureAsset in (input_file);
add_key (in, decrypted_kdm);
dcp::MonoPictureAsset out (in.edit_rate(), dcp::Standard::SMPTE);
- auto writer = out.start_write (output_file.get(), false);
+ auto writer = out.start_write(output_file.get(), dcp::PictureAsset::Behaviour::MAKE_NEW);
copy (in, writer, ignore_hmac);
break;
}