Use enum class for the things in types.h
authorCarl Hetherington <cth@carlh.net>
Thu, 21 Jan 2021 00:57:06 +0000 (01:57 +0100)
committerCarl Hetherington <cth@carlh.net>
Thu, 21 Jan 2021 00:57:06 +0000 (01:57 +0100)
63 files changed:
examples/make_dcp.cc
src/asset.cc
src/atmos_asset.cc
src/certificate_chain.cc
src/cpl.cc
src/crypto_context.h
src/dcp.cc
src/dcp_time.cc
src/decrypted_kdm.cc
src/encrypted_kdm.cc
src/interop_subtitle_asset.cc
src/mono_picture_asset.cc
src/mxf.cc
src/picture_asset.cc
src/pkl.cc
src/reel.cc
src/reel_asset.cc
src/reel_closed_caption_asset.cc
src/reel_mxf.cc
src/reel_picture_asset.cc
src/reel_stereo_picture_asset.cc
src/rgb_xyz.cc
src/smpte_subtitle_asset.cc
src/sound_asset.cc
src/sound_asset_writer.cc
src/stereo_picture_asset.cc
src/stereo_picture_asset_writer.cc
src/stereo_picture_frame.cc
src/stereo_picture_frame.h
src/subtitle_asset.cc
src/subtitle_asset_internal.cc
src/subtitle_image.cc
src/types.cc
src/types.h
src/verify.cc
test/combine_test.cc
test/cpl_metadata_test.cc
test/cpl_ratings_test.cc
test/cpl_sar_test.cc
test/dcp_font_test.cc
test/dcp_test.cc
test/dcp_time_test.cc
test/effect_test.cc
test/encryption_test.cc
test/frame_info_hash_test.cc
test/kdm_test.cc
test/markers_test.cc
test/mca_test.cc
test/read_dcp_test.cc
test/read_interop_subtitle_test.cc
test/recovery_test.cc
test/rgb_xyz_test.cc
test/round_trip_test.cc
test/smpte_subtitle_test.cc
test/sync_test.cc
test/test.cc
test/util_test.cc
test/verify_test.cc
test/write_subtitle_test.cc
tools/dcpdiff.cc
tools/dcpinfo.cc
tools/dcpkdm.cc
tools/dcprecover.cc

index df3dda24967bd7f62a9aade3031a85ebb5e8e64b..3326fcf28362ab85fb685607dae252947449b1e5 100644 (file)
@@ -53,29 +53,29 @@ main ()
           per second.
        */
 
-       std::shared_ptr<dcp::MonoPictureAsset> picture_asset (new dcp::MonoPictureAsset (dcp::Fraction (24, 1), dcp::SMPTE));
+       auto picture_asset = std::make_shared<dcp::MonoPictureAsset>(dcp::Fraction (24, 1), dcp::Standard::SMPTE);
 
        /* Start off a write to it */
-       std::shared_ptr<dcp::PictureAssetWriter> picture_writer = picture_asset->start_write ("DCP/picture.mxf", false);
+       auto picture_writer = picture_asset->start_write("DCP/picture.mxf", false);
 
        /* Write 24 frames of the same JPEG2000 file */
-       dcp::ArrayData picture ("examples/help.j2c");
+       dcp::ArrayData picture("examples/help.j2c");
        for (int i = 0; i < 24; ++i) {
                picture_writer->write (picture.data(), picture.size());
        }
 
        /* And finish off */
-       picture_writer->finalize ();
+       picture_writer->finalize();
 
        /* Now create a sound MXF.  As before, create an object and a writer.
           When creating the object we specify the sampling rate (48kHz) and the number of channels (2).
        */
-       std::shared_ptr<dcp::SoundAsset> sound_asset (new dcp::SoundAsset(dcp::Fraction(24, 1), 48000, 2, dcp::LanguageTag("en-GB"), dcp::SMPTE));
+       auto sound_asset = std::make_shared<dcp::SoundAsset>(dcp::Fraction(24, 1), 48000, 2, dcp::LanguageTag("en-GB"), dcp::Standard::SMPTE);
        /* Here we must also say which of our channels will have "real" sound data in them */
        std::vector<dcp::Channel> active_channels;
-       active_channels.push_back (dcp::LEFT);
-       active_channels.push_back (dcp::RIGHT);
-       std::shared_ptr<dcp::SoundAssetWriter> sound_writer = sound_asset->start_write ("DCP/sound.mxf", active_channels);
+       active_channels.push_back(dcp::Channel::LEFT);
+       active_channels.push_back(dcp::Channel::RIGHT);
+       auto sound_writer = sound_asset->start_write("DCP/sound.mxf", active_channels);
 
        /* Write some sine waves */
        float* audio[2];
@@ -98,17 +98,17 @@ main ()
        /* Add picture and sound to it.  The zeros are the `entry points', i.e. the first
           (video) frame from the assets that the reel should play.
        */
-       reel->add (std::shared_ptr<dcp::ReelPictureAsset> (new dcp::ReelMonoPictureAsset (picture_asset, 0)));
-       reel->add (std::shared_ptr<dcp::ReelSoundAsset> (new dcp::ReelSoundAsset (sound_asset, 0)));
+       reel->add (std::make_shared<dcp::ReelMonoPictureAsset>(picture_asset, 0));
+       reel->add (std::make_shared<dcp::ReelSoundAsset>(sound_asset, 0));
 
        /* Make a CPL with this reel */
-       std::shared_ptr<dcp::CPL> cpl (new dcp::CPL ("My film", dcp::FEATURE));
+       auto cpl = std::make_shared<dcp::CPL>("My film", dcp::ContentKind::FEATURE);
        cpl->add (reel);
 
        /* Write the DCP */
        dcp::DCP dcp ("DCP");
        dcp.add (cpl);
-       dcp.write_xml (dcp::SMPTE);
+       dcp.write_xml (dcp::Standard::SMPTE);
 
        return 0;
 }
index 49ec72519108a4546f557821efa156506c8d956a..8ac28afce6a52db375e985ab0e8317b8a92e6d61 100644 (file)
@@ -146,7 +146,7 @@ bool
 Asset::equals (std::shared_ptr<const Asset> other, EqualityOptions, NoteHandler note) const
 {
        if (_hash != other->_hash) {
-               note (DCP_ERROR, "Asset: hashes differ");
+               note (NoteType::ERROR, "Asset: hashes differ");
                return false;
        }
 
index 2145d8f80140681dca8436381d08c8ee744e5e50..4b13ab4d595bbde211666e59ebc4b06fb7f09b28 100644 (file)
 
 using std::string;
 using std::shared_ptr;
+using std::make_shared;
 using namespace dcp;
 
 AtmosAsset::AtmosAsset (Fraction edit_rate, int first_frame, int max_channel_count, int max_object_count, int atmos_version)
-       : MXF (SMPTE)
+       : MXF (Standard::SMPTE)
        , _edit_rate (edit_rate)
        , _intrinsic_duration (0)
        , _first_frame (first_frame)
@@ -56,7 +57,7 @@ AtmosAsset::AtmosAsset (Fraction edit_rate, int first_frame, int max_channel_cou
 
 AtmosAsset::AtmosAsset (boost::filesystem::path file)
        : Asset (file)
-       , MXF (SMPTE)
+       , MXF (Standard::SMPTE)
 {
        ASDCP::ATMOS::MXFReader reader;
        Kumu::Result_t r = reader.OpenRead (file.string().c_str());
@@ -98,7 +99,7 @@ AtmosAsset::static_pkl_type (Standard)
 shared_ptr<AtmosAssetReader>
 AtmosAsset::start_read () const
 {
-       return shared_ptr<AtmosAssetReader> (new AtmosAssetReader (this, key(), SMPTE));
+       return make_shared<AtmosAssetReader>(this, key(), Standard::SMPTE);
 }
 
 shared_ptr<AtmosAssetWriter>
index a4da0931bd8bacb9a129f3a8790bb3b25ede5d60..2287a805345736b28dfa5489e6cd6bcb0e05891e 100644 (file)
@@ -601,7 +601,7 @@ CertificateChain::sign (xmlpp::Element* parent, Standard standard) const
        xmlpp::Element* signed_info = signature->add_child ("SignedInfo", "dsig");
        signed_info->add_child("CanonicalizationMethod", "dsig")->set_attribute ("Algorithm", "http://www.w3.org/TR/2001/REC-xml-c14n-20010315");
 
-       if (standard == INTEROP) {
+       if (standard == Standard::INTEROP) {
                signed_info->add_child("SignatureMethod", "dsig")->set_attribute("Algorithm", "http://www.w3.org/2000/09/xmldsig#rsa-sha1");
        } else {
                signed_info->add_child("SignatureMethod", "dsig")->set_attribute("Algorithm", "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256");
index a976e0723709d7d3a867502fc0a9a6637bea20a8..e932c6780bff30cfdb1121828144dffc1adce648 100644 (file)
@@ -89,15 +89,15 @@ CPL::CPL (string annotation_text, ContentKind content_kind)
 /** Construct a CPL object from a XML file */
 CPL::CPL (boost::filesystem::path file)
        : Asset (file)
-       , _content_kind (FEATURE)
+       , _content_kind (ContentKind::FEATURE)
 {
        cxml::Document f ("CompositionPlaylist");
        f.read_file (file);
 
        if (f.namespace_uri() == cpl_interop_ns) {
-               _standard = INTEROP;
+               _standard = Standard::INTEROP;
        } else if (f.namespace_uri() == cpl_smpte_ns) {
-               _standard = SMPTE;
+               _standard = Standard::SMPTE;
        } else {
                boost::throw_exception (XMLError ("Unrecognised CPL namespace " + f.namespace_uri()));
        }
@@ -119,7 +119,7 @@ CPL::CPL (boost::filesystem::path file)
                                )
                        );
                content_version->done ();
-       } else if (_standard == SMPTE) {
+       } else if (_standard == Standard::SMPTE) {
                /* ContentVersion is required in SMPTE */
                throw XMLError ("Missing ContentVersion tag in CPL");
        }
@@ -171,7 +171,7 @@ CPL::write_xml (boost::filesystem::path file, Standard standard, shared_ptr<cons
 {
        xmlpp::Document doc;
        xmlpp::Element* root;
-       if (standard == INTEROP) {
+       if (standard == Standard::INTEROP) {
                root = doc.create_root_node ("CompositionPlaylist", cpl_interop_ns);
        } else {
                root = doc.create_root_node ("CompositionPlaylist", cpl_smpte_ns);
@@ -207,7 +207,7 @@ CPL::write_xml (boost::filesystem::path file, Standard standard, shared_ptr<cons
        bool first = true;
        for (auto i: _reels) {
                auto asset_list = i->write_to_cpl (reel_list, standard);
-               if (first && standard == dcp::SMPTE) {
+               if (first && standard == Standard::SMPTE) {
                        maybe_write_composition_metadata_asset (asset_list);
                        first = false;
                }
@@ -554,17 +554,17 @@ CPL::equals (shared_ptr<const Asset> other, EqualityOptions opt, NoteHandler not
 
        if (_annotation_text != other_cpl->_annotation_text && !opt.cpl_annotation_texts_can_differ) {
                string const s = "CPL: annotation texts differ: " + _annotation_text.get_value_or("") + " vs " + other_cpl->_annotation_text.get_value_or("") + "\n";
-               note (DCP_ERROR, s);
+               note (NoteType::ERROR, s);
                return false;
        }
 
        if (_content_kind != other_cpl->_content_kind) {
-               note (DCP_ERROR, "CPL: content kinds differ");
+               note (NoteType::ERROR, "CPL: content kinds differ");
                return false;
        }
 
        if (_reels.size() != other_cpl->_reels.size()) {
-               note (DCP_ERROR, String::compose ("CPL: reel counts differ (%1 vs %2)", _reels.size(), other_cpl->_reels.size()));
+               note (NoteType::ERROR, String::compose ("CPL: reel counts differ (%1 vs %2)", _reels.size(), other_cpl->_reels.size()));
                return false;
        }
 
@@ -640,9 +640,9 @@ string
 CPL::static_pkl_type (Standard standard)
 {
        switch (standard) {
-       case INTEROP:
+       case Standard::INTEROP:
                return "text/xml;asdcpKind=CPL";
-       case SMPTE:
+       case Standard::SMPTE:
                return "text/xml";
        default:
                DCP_ASSERT (false);
index b01efce427b7371efcab5e39ff81e1bb5052716d..263121bfc8f1e10454fef4eab4063155563c0bf3 100644 (file)
@@ -70,7 +70,7 @@ public:
                _hmac = new ASDCP::HMACContext;
 
                ASDCP::LabelSet_t type;
-               if (standard == INTEROP) {
+               if (standard == Standard::INTEROP) {
                        type = ASDCP::LS_MXF_INTEROP;
                } else {
                        type = ASDCP::LS_MXF_SMPTE;
index 11721b78232816bc94237d545e7ab572303867bc..d8c8c130e0e926ab70d99c562b21dd2ee1fc9217 100644 (file)
@@ -124,9 +124,9 @@ DCP::read (vector<dcp::VerificationNote>* notes, bool ignore_incorrect_picture_m
 
        asset_map.read_file (_asset_map.get());
        if (asset_map.namespace_uri() == assetmap_interop_ns) {
-               _standard = INTEROP;
+               _standard = Standard::INTEROP;
        } else if (asset_map.namespace_uri() == assetmap_smpte_ns) {
-               _standard = SMPTE;
+               _standard = Standard::SMPTE;
        } else {
                boost::throw_exception (XMLError ("Unrecognised Assetmap namespace " + asset_map.namespace_uri()));
        }
@@ -143,14 +143,14 @@ DCP::read (vector<dcp::VerificationNote>* notes, bool ignore_incorrect_picture_m
                        p = p.substr (7);
                }
                switch (*_standard) {
-               case INTEROP:
+               case Standard::INTEROP:
                        if (i->optional_node_child("PackingList")) {
                                pkl_paths.push_back (p);
                        } else {
                                paths.insert (make_pair (remove_urn_uuid (i->string_child ("Id")), p));
                        }
                        break;
-               case SMPTE:
+               case Standard::SMPTE:
                {
                        auto pkl_bool = i->optional_string_child("PackingList");
                        if (pkl_bool && *pkl_bool == "true") {
@@ -239,7 +239,7 @@ DCP::read (vector<dcp::VerificationNote>* notes, bool ignore_incorrect_picture_m
                                }
                                _cpls.push_back (cpl);
                        } else if (root == "DCSubtitle") {
-                               if (_standard && _standard.get() == SMPTE && notes) {
+                               if (_standard && _standard.get() == Standard::SMPTE && notes) {
                                        notes->push_back (VerificationNote(VerificationNote::VERIFY_ERROR, VerificationNote::MISMATCHED_STANDARD));
                                }
                                other_assets.push_back (make_shared<InteropSubtitleAsset>(path));
@@ -290,7 +290,7 @@ DCP::equals (DCP const & other, EqualityOptions opt, NoteHandler note) const
        auto b = other.cpls ();
 
        if (a.size() != b.size()) {
-               note (DCP_ERROR, String::compose ("CPL counts differ: %1 vs %2", a.size(), b.size()));
+               note (NoteType::ERROR, String::compose ("CPL counts differ: %1 vs %2", a.size(), b.size()));
                return false;
        }
 
@@ -367,12 +367,12 @@ DCP::add (DecryptedKDM const & kdm)
 void
 DCP::write_volindex (Standard standard) const
 {
-       boost::filesystem::path p = _directory;
+       auto p = _directory;
        switch (standard) {
-       case INTEROP:
+       case Standard::INTEROP:
                p /= "VOLINDEX";
                break;
-       case SMPTE:
+       case Standard::SMPTE:
                p /= "VOLINDEX.xml";
                break;
        default:
@@ -383,10 +383,10 @@ DCP::write_volindex (Standard standard) const
        xmlpp::Element* root;
 
        switch (standard) {
-       case INTEROP:
+       case Standard::INTEROP:
                root = doc.create_root_node ("VolumeIndex", volindex_interop_ns);
                break;
-       case SMPTE:
+       case Standard::SMPTE:
                root = doc.create_root_node ("VolumeIndex", volindex_smpte_ns);
                break;
        default:
@@ -406,10 +406,10 @@ DCP::write_assetmap (
        auto p = _directory;
 
        switch (standard) {
-       case INTEROP:
+       case Standard::INTEROP:
                p /= "ASSETMAP";
                break;
-       case SMPTE:
+       case Standard::SMPTE:
                p /= "ASSETMAP.xml";
                break;
        default:
@@ -420,10 +420,10 @@ DCP::write_assetmap (
        xmlpp::Element* root;
 
        switch (standard) {
-       case INTEROP:
+       case Standard::INTEROP:
                root = doc.create_root_node ("AssetMap", assetmap_interop_ns);
                break;
-       case SMPTE:
+       case Standard::SMPTE:
                root = doc.create_root_node ("AssetMap", assetmap_smpte_ns);
                break;
        default:
@@ -434,13 +434,13 @@ DCP::write_assetmap (
        root->add_child("AnnotationText")->add_child_text (annotation_text);
 
        switch (standard) {
-       case INTEROP:
+       case Standard::INTEROP:
                root->add_child("VolumeCount")->add_child_text ("1");
                root->add_child("IssueDate")->add_child_text (issue_date);
                root->add_child("Issuer")->add_child_text (issuer);
                root->add_child("Creator")->add_child_text (creator);
                break;
-       case SMPTE:
+       case Standard::SMPTE:
                root->add_child("Creator")->add_child_text (creator);
                root->add_child("VolumeCount")->add_child_text ("1");
                root->add_child("IssueDate")->add_child_text (issue_date);
index 025a48590ed51aafcc4ff02c8670e0997a3e4724..7a4a67d667ead2ad0a0559f94e210da12c5163eb 100644 (file)
@@ -325,7 +325,7 @@ Time::as_string (Standard standard) const
 {
        char buffer[64];
 
-       if (standard == SMPTE) {
+       if (standard == Standard::SMPTE) {
                snprintf (buffer, sizeof(buffer), "%02d:%02d:%02d:%02d", h, m, s, e);
        } else {
                snprintf (buffer, sizeof(buffer), "%02d:%02d:%02d:%03d", h, m, s, e);
index dd6def32d5d8d50152bcbc27dd8257fe930a6157..10da80e634bfeb0feed56a3c153f93608baa6beb 100644 (file)
@@ -178,7 +178,7 @@ DecryptedKDM::DecryptedKDM (EncryptedKDM const & kdm, string private_key)
                        /* 93 is not-valid-after (a string) [25 bytes] */
                        p += 25;
                        /* 118 is the key [ASDCP::KeyLen bytes] */
-                       add_key (optional<string>(), key_id, Key (p), cpl_id, INTEROP);
+                       add_key (optional<string>(), key_id, Key(p), cpl_id, Standard::INTEROP);
                        break;
                }
                case 138:
@@ -200,7 +200,7 @@ DecryptedKDM::DecryptedKDM (EncryptedKDM const & kdm, string private_key)
                        /* 97 is not-valid-after (a string) [25 bytes] */
                        p += 25;
                        /* 112 is the key [ASDCP::KeyLen bytes] */
-                       add_key (key_type, key_id, Key (p), cpl_id, SMPTE);
+                       add_key (key_type, key_id, Key(p), cpl_id, Standard::SMPTE);
                        break;
                }
                default:
@@ -250,7 +250,7 @@ DecryptedKDM::DecryptedKDM (
        , _issue_date (issue_date)
 {
        for (map<shared_ptr<const ReelMXF>, Key>::const_iterator i = keys.begin(); i != keys.end(); ++i) {
-               add_key (i->first->key_type(), i->first->key_id().get(), i->second, cpl_id, SMPTE);
+               add_key (i->first->key_type(), i->first->key_id().get(), i->second, cpl_id, Standard::SMPTE);
        }
 }
 
@@ -271,9 +271,9 @@ DecryptedKDM::DecryptedKDM (
 {
        /* Create DecryptedKDMKey objects for each encryptable asset */
        bool did_one = false;
-       BOOST_FOREACH(shared_ptr<const ReelMXF> i, cpl->reel_mxfs()) {
+       for (auto i: cpl->reel_mxfs()) {
                if (i->key_id()) {
-                       add_key (i->key_type(), i->key_id().get(), key, cpl->id(), SMPTE);
+                       add_key (i->key_type(), i->key_id().get(), key, cpl->id(), Standard::SMPTE);
                        did_one = true;
                }
        }
index a124fdf65bf92619216b5ccdb1bcddd9cddf0ab0..d7326e89f70ad51e23105c83580f050e3a6a5e4c 100644 (file)
@@ -612,7 +612,7 @@ EncryptedKDM::EncryptedKDM (
        kre.recipient.x509_issuer_serial.x509_serial_number = recipient.serial ();
        kre.recipient.x509_subject_name = recipient.subject ();
        kre.composition_playlist_id = cpl_id;
-       if (formulation == DCI_ANY || formulation == DCI_SPECIFIC) {
+       if (formulation == Formulation::DCI_ANY || formulation == Formulation::DCI_SPECIFIC) {
                kre.content_authenticator = signer->leaf().thumbprint ();
        }
        kre.content_title_text = content_title_text;
@@ -621,7 +621,7 @@ EncryptedKDM::EncryptedKDM (
        kre.disable_forensic_marking_picture = disable_forensic_marking_picture;
        kre.disable_forensic_marking_audio = disable_forensic_marking_audio;
 
-       if (formulation != MODIFIED_TRANSITIONAL_TEST) {
+       if (formulation != Formulation::MODIFIED_TRANSITIONAL_TEST) {
                kre.authorized_device_info = data::AuthorizedDeviceInfo ();
                kre.authorized_device_info->device_list_identifier = make_uuid ();
                auto n = recipient.subject_common_name ();
@@ -630,10 +630,10 @@ EncryptedKDM::EncryptedKDM (
                }
                kre.authorized_device_info->device_list_description = n;
 
-               if (formulation == MODIFIED_TRANSITIONAL_1 || formulation == DCI_ANY) {
+               if (formulation == Formulation::MODIFIED_TRANSITIONAL_1 || formulation == Formulation::DCI_ANY) {
                        /* Use the "assume trust" thumbprint */
                        kre.authorized_device_info->certificate_thumbprints.push_back ("2jmj7l5rSw0yVb/vlWAYkK/YBwk=");
-               } else if (formulation == MULTIPLE_MODIFIED_TRANSITIONAL_1 || formulation == DCI_SPECIFIC) {
+               } else if (formulation == Formulation::MULTIPLE_MODIFIED_TRANSITIONAL_1 || formulation == Formulation::DCI_SPECIFIC) {
                        if (trusted_devices.empty ()) {
                                /* Fall back on the "assume trust" thumbprint so we
                                   can generate "modified-transitional-1" KDMs
index edc51404bbdccd581355e043e9d1be10cc6a36e8..f93e7cf42ec6252961aca47e31974f66c8567c15 100644 (file)
@@ -79,7 +79,7 @@ InteropSubtitleAsset::InteropSubtitleAsset (boost::filesystem::path file)
        for (xmlpp::Node::NodeList::const_iterator i = c.begin(); i != c.end(); ++i) {
                xmlpp::Element const * e = dynamic_cast<xmlpp::Element const *> (*i);
                if (e && (e->get_name() == "Font" || e->get_name() == "Subtitle")) {
-                       parse_subtitles (e, ps, optional<int>(), INTEROP);
+                       parse_subtitles (e, ps, optional<int>(), Standard::INTEROP);
                }
        }
 
@@ -114,7 +114,7 @@ InteropSubtitleAsset::xml_as_string () const
                load_font->set_attribute ("URI", i->uri);
        }
 
-       subtitles_as_xml (root, 250, INTEROP);
+       subtitles_as_xml (root, 250, Standard::INTEROP);
 
        return doc.write_to_string ("UTF-8");
 }
@@ -145,12 +145,12 @@ InteropSubtitleAsset::equals (shared_ptr<const Asset> other_asset, EqualityOptio
 
                while (i != _load_font_nodes.end ()) {
                        if (j == other->_load_font_nodes.end ()) {
-                               note (DCP_ERROR, "<LoadFont> nodes differ");
+                               note (NoteType::ERROR, "<LoadFont> nodes differ");
                                return false;
                        }
 
                        if (**i != **j) {
-                               note (DCP_ERROR, "<LoadFont> nodes differ");
+                               note (NoteType::ERROR, "<LoadFont> nodes differ");
                                return false;
                        }
 
@@ -160,7 +160,7 @@ InteropSubtitleAsset::equals (shared_ptr<const Asset> other_asset, EqualityOptio
        }
 
        if (_movie_title != other->_movie_title) {
-               note (DCP_ERROR, "Subtitle movie titles differ");
+               note (NoteType::ERROR, "Subtitle movie titles differ");
                return false;
        }
 
index 12165f7b49b4947deb7e189e61361bf7aca4b7a5..4524c85da5eadafa2b57af0ea0da1da337d4821f 100644 (file)
@@ -158,7 +158,7 @@ MonoPictureAsset::equals (shared_ptr<const Asset> other, EqualityOptions opt, No
 #pragma omp critical
 #endif
                        {
-                               note (DCP_PROGRESS, String::compose ("Compared video frame %1 of %2", i, _intrinsic_duration));
+                               note (NoteType::PROGRESS, String::compose("Compared video frame %1 of %2", i, _intrinsic_duration));
                                for (list<pair<NoteType, string> >::const_iterator i = notes.begin(); i != notes.end(); ++i) {
                                        note (i->first, i->second);
                                }
index b6c11bb8f64db087b635694ff8422e04d21614b5..20cfbaed7e62a218c48551c2b894bcdf3b7155b5 100644 (file)
@@ -80,7 +80,7 @@ MXF::fill_writer_info (ASDCP::WriterInfo* writer_info, string id) const
        writer_info->ProductName = _metadata.product_name;
 
        DCP_ASSERT (_standard);
-       if (_standard == INTEROP) {
+       if (_standard == Standard::INTEROP) {
                writer_info->LabelSetType = ASDCP::LS_MXF_INTEROP;
        } else {
                writer_info->LabelSetType = ASDCP::LS_MXF_SMPTE;
@@ -129,10 +129,10 @@ MXF::read_writer_info (ASDCP::WriterInfo const & info)
 
        switch (info.LabelSetType) {
        case ASDCP::LS_MXF_INTEROP:
-               _standard = INTEROP;
+               _standard = Standard::INTEROP;
                break;
        case ASDCP::LS_MXF_SMPTE:
-               _standard = SMPTE;
+               _standard = Standard::SMPTE;
                break;
        default:
                throw ReadError ("Unrecognised label set type in MXF");
index 86741ba64ad2a1c0c2d66164ac6bce4cf76bc990..6b5e9393396d1e6ac11ca7cc332687002844f53c 100644 (file)
@@ -108,12 +108,12 @@ PictureAsset::descriptor_equals (
 //             a.QuantizationDefault != b.QuantizationDefault
                ) {
 
-               note (DCP_ERROR, "video MXF picture descriptors differ");
+               note (NoteType::ERROR, "video MXF picture descriptors differ");
                return false;
        }
 
        if (a.ContainerDuration != b.ContainerDuration) {
-               note (DCP_ERROR, "video container durations differ");
+               note (NoteType::ERROR, "video container durations differ");
        }
 
 //             for (unsigned int j = 0; j < ASDCP::JP2K::MaxComponents; ++j) {
@@ -132,7 +132,7 @@ PictureAsset::frame_buffer_equals (
        ) const
 {
        if (size_A == size_B && memcmp (data_A, data_B, size_A) == 0) {
-               note (DCP_NOTE, "J2K identical");
+               note (NoteType::NOTE, "J2K identical");
                /* Easy result; the J2K data is identical */
                return true;
        }
@@ -150,7 +150,7 @@ PictureAsset::frame_buffer_equals (
        for (int c = 0; c < 3; ++c) {
 
                if (image_A->size() != image_B->size()) {
-                       note (DCP_ERROR, String::compose ("image sizes for frame %1 differ", frame));
+                       note (NoteType::ERROR, String::compose ("image sizes for frame %1 differ", frame));
                        return false;
                }
 
@@ -176,11 +176,11 @@ PictureAsset::frame_buffer_equals (
 
        double const std_dev = sqrt (double (total_squared_deviation) / abs_diffs.size());
 
-       note (DCP_NOTE, String::compose ("mean difference %1 deviation %2", mean, std_dev));
+       note (NoteType::NOTE, String::compose("mean difference %1 deviation %2", mean, std_dev));
 
        if (mean > opt.max_mean_pixel_error) {
                note (
-                       DCP_ERROR,
+                       NoteType::ERROR,
                        String::compose ("mean %1 out of range %2 in frame %3", mean, opt.max_mean_pixel_error, frame)
                        );
 
@@ -189,7 +189,7 @@ PictureAsset::frame_buffer_equals (
 
        if (std_dev > opt.max_std_dev_pixel_error) {
                note (
-                       DCP_ERROR,
+                       NoteType::ERROR,
                        String::compose ("standard deviation %1 out of range %2 in frame %3", std_dev, opt.max_std_dev_pixel_error, frame)
                        );
 
@@ -203,9 +203,9 @@ string
 PictureAsset::static_pkl_type (Standard standard)
 {
        switch (standard) {
-       case INTEROP:
+       case Standard::INTEROP:
                return "application/x-smpte-mxf;asdcpKind=Picture";
-       case SMPTE:
+       case Standard::SMPTE:
                return "application/mxf";
        default:
                DCP_ASSERT (false);
index 2a5b8b7dc68a66c162e989bf96a40f5c46e780f7..b439e8bd99f9da7d5044ae9e6c055c69fa701400 100644 (file)
@@ -56,9 +56,9 @@ PKL::PKL (boost::filesystem::path file)
        pkl.read_file (file);
 
        if (pkl.namespace_uri() == pkl_interop_ns) {
-               _standard = INTEROP;
+               _standard = Standard::INTEROP;
        } else if (pkl.namespace_uri() == pkl_smpte_ns) {
-               _standard = SMPTE;
+               _standard = Standard::SMPTE;
        } else {
                boost::throw_exception (XMLError ("Unrecognised packing list namesapce " + pkl.namespace_uri()));
        }
@@ -85,7 +85,7 @@ PKL::write (boost::filesystem::path file, shared_ptr<const CertificateChain> sig
 {
        xmlpp::Document doc;
        xmlpp::Element* pkl;
-       if (_standard == INTEROP) {
+       if (_standard == Standard::INTEROP) {
                pkl = doc.create_root_node("PackingList", pkl_interop_ns);
        } else {
                pkl = doc.create_root_node("PackingList", pkl_smpte_ns);
index a05a7b36d0c32c6017673e2c6d5b2a265883aa99..efb161bb0f8c445ef5c6ccfa483f781da018c9bb 100644 (file)
@@ -160,7 +160,7 @@ bool
 Reel::equals (std::shared_ptr<const Reel> other, EqualityOptions opt, NoteHandler note) const
 {
        if ((_main_picture && !other->_main_picture) || (!_main_picture && other->_main_picture)) {
-               note (DCP_ERROR, "Reel: picture assets differ");
+               note (NoteType::ERROR, "Reel: picture assets differ");
                return false;
        }
 
@@ -169,7 +169,7 @@ Reel::equals (std::shared_ptr<const Reel> other, EqualityOptions opt, NoteHandle
        }
 
        if ((_main_sound && !other->_main_sound) || (!_main_sound && other->_main_sound)) {
-               note (DCP_ERROR, "Reel: sound assets differ");
+               note (NoteType::ERROR, "Reel: sound assets differ");
                return false;
        }
 
@@ -178,7 +178,7 @@ Reel::equals (std::shared_ptr<const Reel> other, EqualityOptions opt, NoteHandle
        }
 
        if ((_main_subtitle && !other->_main_subtitle) || (!_main_subtitle && other->_main_subtitle)) {
-               note (DCP_ERROR, "Reel: subtitle assets differ");
+               note (NoteType::ERROR, "Reel: subtitle assets differ");
                return false;
        }
 
@@ -187,12 +187,12 @@ Reel::equals (std::shared_ptr<const Reel> other, EqualityOptions opt, NoteHandle
        }
 
        if ((_main_markers && !other->_main_markers) || (!_main_markers && other->_main_markers)) {
-               note (DCP_ERROR, "Reel: one has markers and the other does not");
+               note (NoteType::ERROR, "Reel: one has markers and the other does not");
                return false;
        }
 
        if (_main_markers && !_main_markers->equals(other->_main_markers, opt, note)) {
-               note (DCP_ERROR, "Reel: marker assets differ");
+               note (NoteType::ERROR, "Reel: marker assets differ");
                return false;
        }
 
@@ -211,7 +211,7 @@ Reel::equals (std::shared_ptr<const Reel> other, EqualityOptions opt, NoteHandle
        }
 
        if ((_atmos && !other->_atmos) || (!_atmos && other->_atmos)) {
-               note (DCP_ERROR, "Reel: atmos assets differ");
+               note (NoteType::ERROR, "Reel: atmos assets differ");
                return false;
        }
 
index bb2cd5b74eb2ac73d13e9e6266a1629ba941ec64..4d26e4f4b25ff714ef495771697e330555359e52 100644 (file)
@@ -123,30 +123,30 @@ ReelAsset::asset_equals (shared_ptr<const ReelAsset> other, EqualityOptions opt,
        if (_annotation_text != other->_annotation_text) {
                string const s = "Reel: annotation texts differ (" + _annotation_text + " vs " + other->_annotation_text + ")\n";
                if (!opt.reel_annotation_texts_can_differ) {
-                       note (DCP_ERROR, s);
+                       note (NoteType::ERROR, s);
                        return false;
                } else {
-                       note (DCP_NOTE, s);
+                       note (NoteType::NOTE, s);
                }
        }
 
        if (_edit_rate != other->_edit_rate) {
-               note (DCP_ERROR, "Reel: edit rates differ");
+               note (NoteType::ERROR, "Reel: edit rates differ");
                return false;
        }
 
        if (_intrinsic_duration != other->_intrinsic_duration) {
-               note (DCP_ERROR, String::compose ("Reel: intrinsic durations differ (%1 vs %2)", _intrinsic_duration, other->_intrinsic_duration));
+               note (NoteType::ERROR, String::compose ("Reel: intrinsic durations differ (%1 vs %2)", _intrinsic_duration, other->_intrinsic_duration));
                return false;
        }
 
        if (_entry_point != other->_entry_point) {
-               note (DCP_ERROR, "Reel: entry points differ");
+               note (NoteType::ERROR, "Reel: entry points differ");
                return false;
        }
 
        if (_duration != other->_duration) {
-               note (DCP_ERROR, "Reel: durations differ");
+               note (NoteType::ERROR, "Reel: durations differ");
                return false;
        }
 
index 45e83933a95a9b0d3f34b2714416f2ed179d85a2..2aa13ead01b9a5f6ef4231b4a6d20b06cea5d1af 100644 (file)
@@ -68,9 +68,9 @@ string
 ReelClosedCaptionAsset::cpl_node_name (Standard standard) const
 {
        switch (standard) {
-       case INTEROP:
+       case Standard::INTEROP:
                return "cc-cpl:MainClosedCaption";
-       case SMPTE:
+       case Standard::SMPTE:
                return "tt:ClosedCaption";
        }
 
@@ -81,9 +81,9 @@ pair<string, string>
 ReelClosedCaptionAsset::cpl_node_namespace (Standard standard) const
 {
        switch (standard) {
-       case INTEROP:
+       case Standard::INTEROP:
                return make_pair ("http://www.digicine.com/PROTO-ASDCP-CC-CPL-20070926#", "cc-cpl");
-       case SMPTE:
+       case Standard::SMPTE:
                return make_pair ("http://www.smpte-ra.org/schemas/429-12/2008/TT", "tt");
        }
 
index 71b4783634bea0ece0fb9183ac6d8712abb11295..24442691cd6fec3556c9d317f4d80c6b22540b53 100644 (file)
@@ -66,10 +66,10 @@ ReelMXF::mxf_equals (shared_ptr<const ReelMXF> other, EqualityOptions opt, NoteH
 {
        if (_hash != other->_hash) {
                if (!opt.reel_hashes_can_differ) {
-                       note (DCP_ERROR, "Reel: hashes differ");
+                       note (NoteType::ERROR, "Reel: hashes differ");
                        return false;
                } else {
-                       note (DCP_NOTE, "Reel: hashes differ");
+                       note (NoteType::NOTE, "Reel: hashes differ");
                }
        }
 
index 6e6cd035a31e4c8c87c7bae798a9fda8fcbc600a..2b3c3db00702f378be0f392c86b6bc10ad97bd40 100644 (file)
@@ -85,7 +85,7 @@ ReelPictureAsset::write_to_cpl (xmlpp::Node* node, Standard standard) const
        xmlpp::Node* asset = write_to_cpl_asset (node, standard, hash());
 
        asset->add_child("FrameRate")->add_child_text(String::compose("%1 %2", _frame_rate.numerator, _frame_rate.denominator));
-       if (standard == INTEROP) {
+       if (standard == Standard::INTEROP) {
 
                /* Allowed values for this tag from the standard */
                float allowed[] = { 1.33, 1.66, 1.77, 1.85, 2.00, 2.39 };
@@ -139,12 +139,12 @@ ReelPictureAsset::equals (shared_ptr<const ReelPictureAsset> other, EqualityOpti
        }
 
        if (_frame_rate != rpa->_frame_rate) {
-               note (DCP_ERROR, "frame rates differ in reel");
+               note (NoteType::ERROR, "frame rates differ in reel");
                return false;
        }
 
        if (_screen_aspect_ratio != rpa->_screen_aspect_ratio) {
-               note (DCP_ERROR, "screen aspect ratios differ in reel");
+               note (NoteType::ERROR, "screen aspect ratios differ in reel");
                return false;
        }
 
index 06c57c66751d49a56075f5b5b58920186e01a0a4..958f83930a87a0878dbca1f8cbe39f4a0192baca 100644 (file)
@@ -67,9 +67,9 @@ pair<string, string>
 ReelStereoPictureAsset::cpl_node_attribute (Standard standard) const
 {
        switch (standard) {
-       case INTEROP:
+       case Standard::INTEROP:
                return make_pair ("xmlns:msp-cpl", "http://www.digicine.com/schemas/437-Y/2007/Main-Stereo-Picture-CPL");
-       case SMPTE:
+       case Standard::SMPTE:
                return make_pair ("xmlns:msp-cpl", "http://www.smpte-ra.org/schemas/429-10/2008/Main-Stereo-Picture-CPL");
        }
 
index d7c9ae6f3bf90feee3565643a1306980500286ed..4b3a5620b5c10eaf5bf8e47d6934a6646a79a195 100644 (file)
@@ -193,21 +193,21 @@ dcp::xyz_to_rgb (
 
                        if (cx < 0 || cx > 4095) {
                                if (note) {
-                                       note.get() (DCP_NOTE, String::compose ("XYZ value %1 out of range", cx));
+                                       note.get()(NoteType::NOTE, String::compose("XYZ value %1 out of range", cx));
                                }
                                cx = max (min (cx, 4095), 0);
                        }
 
                        if (cy < 0 || cy > 4095) {
                                if (note) {
-                                       note.get() (DCP_NOTE, String::compose ("XYZ value %1 out of range", cy));
+                                       note.get()(NoteType::NOTE, String::compose("XYZ value %1 out of range", cy));
                                }
                                cy = max (min (cy, 4095), 0);
                        }
 
                        if (cz < 0 || cz > 4095) {
                                if (note) {
-                                       note.get() (DCP_NOTE, String::compose ("XYZ value %1 out of range", cz));
+                                       note.get()(NoteType::NOTE, String::compose("XYZ value %1 out of range", cz));
                                }
                                cz = max (min (cz, 4095), 0);
                        }
@@ -343,7 +343,7 @@ dcp::rgb_to_xyz (
        }
 
        if (clamped && note) {
-               note.get() (DCP_NOTE, String::compose ("%1 XYZ value(s) clamped", clamped));
+               note.get()(NoteType::NOTE, String::compose("%1 XYZ value(s) clamped", clamped));
        }
 
        return xyz;
index 7604fd397ee50a8f553c5ba8d4d2bf5e2b0f6b12..49ccc5a9984c9fe4e992c19a5de4882647c34348 100644 (file)
@@ -57,10 +57,11 @@ using std::list;
 using std::vector;
 using std::map;
 using std::shared_ptr;
+using std::dynamic_pointer_cast;
+using std::make_shared;
 using boost::split;
 using boost::is_any_of;
 using boost::shared_array;
-using std::dynamic_pointer_cast;
 using boost::optional;
 using boost::starts_with;
 using namespace dcp;
@@ -68,7 +69,7 @@ using namespace dcp;
 static string const subtitle_smpte_ns = "http://www.smpte-ra.org/schemas/428-7/2010/DCST";
 
 SMPTESubtitleAsset::SMPTESubtitleAsset ()
-       : MXF (SMPTE)
+       : MXF (Standard::SMPTE)
        , _intrinsic_duration (0)
        , _edit_rate (24, 1)
        , _time_code_rate (24)
@@ -101,7 +102,7 @@ SMPTESubtitleAsset::SMPTESubtitleAsset (boost::filesystem::path file)
                        reader->ReadTimedTextResource (_raw_xml);
                        xml->read_string (_raw_xml);
                        parse_xml (xml);
-                       read_mxf_descriptor (reader, shared_ptr<DecryptionContext> (new DecryptionContext (optional<Key>(), SMPTE)));
+                       read_mxf_descriptor (reader, shared_ptr<DecryptionContext> (new DecryptionContext (optional<Key>(), Standard::SMPTE)));
                }
        } else {
                /* Plain XML */
@@ -140,7 +141,7 @@ SMPTESubtitleAsset::SMPTESubtitleAsset (boost::filesystem::path file)
                                }
                        }
                }
-               _standard = dcp::SMPTE;
+               _standard = Standard::SMPTE;
        }
 
        /* Check that all required image data have been found */
@@ -188,7 +189,7 @@ SMPTESubtitleAsset::parse_xml (shared_ptr<cxml::Document> xml)
        for (xmlpp::Node::NodeList::const_iterator i = c.begin(); i != c.end(); ++i) {
                xmlpp::Element const * e = dynamic_cast<xmlpp::Element const *> (*i);
                if (e && e->get_name() == "SubtitleList") {
-                       parse_subtitles (e, ps, _time_code_rate, SMPTE);
+                       parse_subtitles (e, ps, _time_code_rate, Standard::SMPTE);
                }
        }
 
@@ -283,7 +284,7 @@ SMPTESubtitleAsset::set_key (Key key)
                        );
        }
 
-       shared_ptr<DecryptionContext> dec (new DecryptionContext (key, SMPTE));
+       auto dec = make_shared<DecryptionContext>(key, Standard::SMPTE);
        reader->ReadTimedTextResource (_raw_xml, dec->context(), dec->hmac());
        shared_ptr<cxml::Document> xml (new cxml::Document ("SubtitleReel"));
        xml->read_string (_raw_xml);
@@ -332,7 +333,7 @@ SMPTESubtitleAsset::xml_as_string () const
        root->add_child("EditRate", "dcst")->add_child_text (_edit_rate.as_string ());
        root->add_child("TimeCodeRate", "dcst")->add_child_text (raw_convert<string> (_time_code_rate));
        if (_start_time) {
-               root->add_child("StartTime", "dcst")->add_child_text (_start_time.get().as_string (SMPTE));
+               root->add_child("StartTime", "dcst")->add_child_text(_start_time.get().as_string(Standard::SMPTE));
        }
 
        BOOST_FOREACH (shared_ptr<SMPTELoadFontNode> i, _load_font_nodes) {
@@ -341,7 +342,7 @@ SMPTESubtitleAsset::xml_as_string () const
                load_font->set_attribute ("ID", i->id);
        }
 
-       subtitles_as_xml (root->add_child ("SubtitleList", "dcst"), _time_code_rate, SMPTE);
+       subtitles_as_xml (root->add_child("SubtitleList", "dcst"), _time_code_rate, Standard::SMPTE);
 
        return doc.write_to_string ("UTF-8");
 }
@@ -350,7 +351,7 @@ SMPTESubtitleAsset::xml_as_string () const
 void
 SMPTESubtitleAsset::write (boost::filesystem::path p) const
 {
-       EncryptionContext enc (key(), SMPTE);
+       EncryptionContext enc (key(), Standard::SMPTE);
 
        ASDCP::WriterInfo writer_info;
        fill_writer_info (&writer_info, _id);
@@ -458,7 +459,7 @@ SMPTESubtitleAsset::equals (shared_ptr<const Asset> other_asset, EqualityOptions
 
        shared_ptr<const SMPTESubtitleAsset> other = dynamic_pointer_cast<const SMPTESubtitleAsset> (other_asset);
        if (!other) {
-               note (DCP_ERROR, "Subtitles are in different standards");
+               note (NoteType::ERROR, "Subtitles are in different standards");
                return false;
        }
 
@@ -467,12 +468,12 @@ SMPTESubtitleAsset::equals (shared_ptr<const Asset> other_asset, EqualityOptions
 
        while (i != _load_font_nodes.end ()) {
                if (j == other->_load_font_nodes.end ()) {
-                       note (DCP_ERROR, "<LoadFont> nodes differ");
+                       note (NoteType::ERROR, "<LoadFont> nodes differ");
                        return false;
                }
 
                if ((*i)->id != (*j)->id) {
-                       note (DCP_ERROR, "<LoadFont> nodes differ");
+                       note (NoteType::ERROR, "<LoadFont> nodes differ");
                        return false;
                }
 
@@ -481,46 +482,46 @@ SMPTESubtitleAsset::equals (shared_ptr<const Asset> other_asset, EqualityOptions
        }
 
        if (_content_title_text != other->_content_title_text) {
-               note (DCP_ERROR, "Subtitle content title texts differ");
+               note (NoteType::ERROR, "Subtitle content title texts differ");
                return false;
        }
 
        if (_language != other->_language) {
-               note (DCP_ERROR, String::compose("Subtitle languages differ (`%1' vs `%2')", _language.get_value_or("[none]"), other->_language.get_value_or("[none]")));
+               note (NoteType::ERROR, String::compose("Subtitle languages differ (`%1' vs `%2')", _language.get_value_or("[none]"), other->_language.get_value_or("[none]")));
                return false;
        }
 
        if (_annotation_text != other->_annotation_text) {
-               note (DCP_ERROR, "Subtitle annotation texts differ");
+               note (NoteType::ERROR, "Subtitle annotation texts differ");
                return false;
        }
 
        if (_issue_date != other->_issue_date) {
                if (options.issue_dates_can_differ) {
-                       note (DCP_NOTE, "Subtitle issue dates differ");
+                       note (NoteType::NOTE, "Subtitle issue dates differ");
                } else {
-                       note (DCP_ERROR, "Subtitle issue dates differ");
+                       note (NoteType::ERROR, "Subtitle issue dates differ");
                        return false;
                }
        }
 
        if (_reel_number != other->_reel_number) {
-               note (DCP_ERROR, "Subtitle reel numbers differ");
+               note (NoteType::ERROR, "Subtitle reel numbers differ");
                return false;
        }
 
        if (_edit_rate != other->_edit_rate) {
-               note (DCP_ERROR, "Subtitle edit rates differ");
+               note (NoteType::ERROR, "Subtitle edit rates differ");
                return false;
        }
 
        if (_time_code_rate != other->_time_code_rate) {
-               note (DCP_ERROR, "Subtitle time code rates differ");
+               note (NoteType::ERROR, "Subtitle time code rates differ");
                return false;
        }
 
        if (_start_time != other->_start_time) {
-               note (DCP_ERROR, "Subtitle start times differ");
+               note (NoteType::ERROR, "Subtitle start times differ");
                return false;
        }
 
index ea44e80640708b62c688cc3f1cc96149d5b3bf7f..9d42e76dde76e1efcc18db9c959fc2d855a4c738 100644 (file)
@@ -143,7 +143,7 @@ SoundAsset::equals (shared_ptr<const Asset> other, EqualityOptions opt, NoteHand
 
        if (desc_A.EditRate != desc_B.EditRate) {
                note (
-                       DCP_ERROR,
+                       NoteType::ERROR,
                        String::compose (
                                "audio edit rates differ: %1/%2 cf %3/%4",
                                desc_A.EditRate.Numerator, desc_A.EditRate.Denominator, desc_B.EditRate.Numerator, desc_B.EditRate.Denominator
@@ -152,7 +152,7 @@ SoundAsset::equals (shared_ptr<const Asset> other, EqualityOptions opt, NoteHand
                return false;
        } else if (desc_A.AudioSamplingRate != desc_B.AudioSamplingRate) {
                note (
-                       DCP_ERROR,
+                       NoteType::ERROR,
                        String::compose (
                                "audio sampling rates differ: %1 cf %2",
                                desc_A.AudioSamplingRate.Numerator, desc_A.AudioSamplingRate.Denominator,
@@ -161,25 +161,25 @@ SoundAsset::equals (shared_ptr<const Asset> other, EqualityOptions opt, NoteHand
                        );
                return false;
        } else if (desc_A.Locked != desc_B.Locked) {
-               note (DCP_ERROR, String::compose ("audio locked flags differ: %1 cf %2", desc_A.Locked, desc_B.Locked));
+               note (NoteType::ERROR, String::compose ("audio locked flags differ: %1 cf %2", desc_A.Locked, desc_B.Locked));
                return false;
        } else if (desc_A.ChannelCount != desc_B.ChannelCount) {
-               note (DCP_ERROR, String::compose ("audio channel counts differ: %1 cf %2", desc_A.ChannelCount, desc_B.ChannelCount));
+               note (NoteType::ERROR, String::compose ("audio channel counts differ: %1 cf %2", desc_A.ChannelCount, desc_B.ChannelCount));
                return false;
        } else if (desc_A.QuantizationBits != desc_B.QuantizationBits) {
-               note (DCP_ERROR, String::compose ("audio bits per sample differ: %1 cf %2", desc_A.QuantizationBits, desc_B.QuantizationBits));
+               note (NoteType::ERROR, String::compose ("audio bits per sample differ: %1 cf %2", desc_A.QuantizationBits, desc_B.QuantizationBits));
                return false;
        } else if (desc_A.BlockAlign != desc_B.BlockAlign) {
-               note (DCP_ERROR, String::compose ("audio bytes per sample differ: %1 cf %2", desc_A.BlockAlign, desc_B.BlockAlign));
+               note (NoteType::ERROR, String::compose ("audio bytes per sample differ: %1 cf %2", desc_A.BlockAlign, desc_B.BlockAlign));
                return false;
        } else if (desc_A.AvgBps != desc_B.AvgBps) {
-               note (DCP_ERROR, String::compose ("audio average bps differ: %1 cf %2", desc_A.AvgBps, desc_B.AvgBps));
+               note (NoteType::ERROR, String::compose ("audio average bps differ: %1 cf %2", desc_A.AvgBps, desc_B.AvgBps));
                return false;
        } else if (desc_A.LinkedTrackID != desc_B.LinkedTrackID) {
-               note (DCP_ERROR, String::compose ("audio linked track IDs differ: %1 cf %2", desc_A.LinkedTrackID, desc_B.LinkedTrackID));
+               note (NoteType::ERROR, String::compose ("audio linked track IDs differ: %1 cf %2", desc_A.LinkedTrackID, desc_B.LinkedTrackID));
                return false;
        } else if (desc_A.ContainerDuration != desc_B.ContainerDuration) {
-               note (DCP_ERROR, String::compose ("audio container durations differ: %1 cf %2", desc_A.ContainerDuration, desc_B.ContainerDuration));
+               note (NoteType::ERROR, String::compose ("audio container durations differ: %1 cf %2", desc_A.ContainerDuration, desc_B.ContainerDuration));
                return false;
        } else if (desc_A.ChannelFormat != desc_B.ChannelFormat) {
                /* XXX */
@@ -196,7 +196,7 @@ SoundAsset::equals (shared_ptr<const Asset> other, EqualityOptions opt, NoteHand
                shared_ptr<const SoundFrame> frame_B = other_reader->get_frame (i);
 
                if (frame_A->size() != frame_B->size()) {
-                       note (DCP_ERROR, String::compose ("sizes of audio data for frame %1 differ", i));
+                       note (NoteType::ERROR, String::compose ("sizes of audio data for frame %1 differ", i));
                        return false;
                }
 
@@ -205,7 +205,7 @@ SoundAsset::equals (shared_ptr<const Asset> other, EqualityOptions opt, NoteHand
                                for (int channel = 0; channel < frame_A->channels(); ++channel) {
                                        int32_t const d = abs(frame_A->get(channel, sample) - frame_B->get(channel, sample));
                                        if (d > opt.max_audio_sample_error) {
-                                               note (DCP_ERROR, String::compose ("PCM data difference of %1", d));
+                                               note (NoteType::ERROR, String::compose ("PCM data difference of %1", d));
                                                return false;
                                        }
                                }
@@ -236,9 +236,9 @@ string
 SoundAsset::static_pkl_type (Standard standard)
 {
        switch (standard) {
-       case INTEROP:
+       case Standard::INTEROP:
                return "application/x-smpte-mxf;asdcpKind=Sound";
-       case SMPTE:
+       case Standard::SMPTE:
                return "application/mxf";
        default:
                DCP_ASSERT (false);
index 092acf0c3b5d8028eea4d2ea6d995e114e7603ca..87de1b182aae4a3194ec844fecbc246380de3e78 100644 (file)
@@ -69,7 +69,7 @@ SoundAssetWriter::SoundAssetWriter (SoundAsset* asset, boost::filesystem::path f
        , _active_channels (active_channels)
 {
        DCP_ASSERT (!_sync || _asset->channels() >= 14);
-       DCP_ASSERT (!_sync || _asset->standard() == SMPTE);
+       DCP_ASSERT (!_sync || _asset->standard() == Standard::SMPTE);
 
        /* Derived from ASDCP::Wav::SimpleWaveHeader::FillADesc */
        _state->desc.EditRate = ASDCP::Rational (_asset->edit_rate().numerator, _asset->edit_rate().denominator);
@@ -80,7 +80,7 @@ SoundAssetWriter::SoundAssetWriter (SoundAsset* asset, boost::filesystem::path f
        _state->desc.BlockAlign = 3 * _asset->channels();
        _state->desc.AvgBps = _asset->sampling_rate() * _state->desc.BlockAlign;
        _state->desc.LinkedTrackID = 0;
-       if (asset->standard() == INTEROP) {
+       if (asset->standard() == Standard::INTEROP) {
                _state->desc.ChannelFormat = ASDCP::PCM::CF_NONE;
        } else {
                /* Just use WTF ("wild track format") for SMPTE for now; searches suggest that this
@@ -114,7 +114,7 @@ SoundAssetWriter::start ()
                boost::throw_exception (FileError ("could not open audio MXF for writing", _file.string(), r));
        }
 
-       if (_asset->standard() == dcp::SMPTE && !_active_channels.empty()) {
+       if (_asset->standard() == Standard::SMPTE && !_active_channels.empty()) {
 
                ASDCP::MXF::WaveAudioDescriptor* essence_descriptor = 0;
                _state->mxf_writer.OP1aHeader().GetMDObjectByType(
@@ -127,9 +127,9 @@ SoundAssetWriter::start ()
                GenRandomValue (soundfield->MCALinkID);
                soundfield->RFC5646SpokenLanguage = _asset->language();
 
-               const MCASoundField field = _asset->channels() > 10 ? SEVEN_POINT_ONE : FIVE_POINT_ONE;
+               const MCASoundField field = _asset->channels() > 10 ? MCASoundField::SEVEN_POINT_ONE : MCASoundField::FIVE_POINT_ONE;
 
-               if (field == SEVEN_POINT_ONE) {
+               if (field == MCASoundField::SEVEN_POINT_ONE) {
                        soundfield->MCATagSymbol = "sg71";
                        soundfield->MCATagName = "7.1DS";
                        soundfield->MCALabelDictionaryID = asdcp_smpte_dict->ul(ASDCP::MDD_DCAudioSoundfield_71);
index 0dfba553b1ac74c25867f1881c475ddc78d27dbd..231af5385f9b0f834217a67b6e09ed0d8facbcf7 100644 (file)
@@ -136,7 +136,7 @@ StereoPictureAsset::equals (shared_ptr<const Asset> other, EqualityOptions opt,
                        /* If there was a problem reading the frame data we'll just assume
                           the two frames are not equal.
                        */
-                       note (DCP_ERROR, e.what ());
+                       note (NoteType::ERROR, e.what ());
                        return false;
                }
 
index 124d01857ed0e266961a8a44ae7af67b4ed49894..6245873d814abe1bdbce03a6f84a01aefc7c3405 100644 (file)
@@ -53,7 +53,7 @@ struct StereoPictureAssetWriter::ASDCPState : public ASDCPStateBase
 StereoPictureAssetWriter::StereoPictureAssetWriter (PictureAsset* mxf, boost::filesystem::path file, bool overwrite)
        : PictureAssetWriter (mxf, file, overwrite)
        , _state (new StereoPictureAssetWriter::ASDCPState)
-       , _next_eye (EYE_LEFT)
+       , _next_eye (Eye::LEFT)
 {
 
 }
@@ -87,7 +87,7 @@ StereoPictureAssetWriter::write (uint8_t const * data, int size)
        string hash;
        Kumu::Result_t r = _state->mxf_writer.WriteFrame (
                _state->frame_buffer,
-               _next_eye == EYE_LEFT ? ASDCP::JP2K::SP_LEFT : ASDCP::JP2K::SP_RIGHT,
+               _next_eye == Eye::LEFT ? ASDCP::JP2K::SP_LEFT : ASDCP::JP2K::SP_RIGHT,
                _crypto_context->context(),
                _crypto_context->hmac(),
                &hash
@@ -97,9 +97,9 @@ StereoPictureAssetWriter::write (uint8_t const * data, int size)
                boost::throw_exception (MXFFileError ("error in writing video MXF", _file.string(), r));
        }
 
-       _next_eye = _next_eye == EYE_LEFT ? EYE_RIGHT : EYE_LEFT;
+       _next_eye = _next_eye == Eye::LEFT ? Eye::RIGHT : Eye::LEFT;
 
-       if (_next_eye == EYE_LEFT) {
+       if (_next_eye == Eye::LEFT) {
                ++_frames_written;
        }
 
@@ -112,13 +112,13 @@ StereoPictureAssetWriter::fake_write (int size)
        DCP_ASSERT (_started);
        DCP_ASSERT (!_finalized);
 
-       Kumu::Result_t r = _state->mxf_writer.FakeWriteFrame (size, _next_eye == EYE_LEFT ? ASDCP::JP2K::SP_LEFT : ASDCP::JP2K::SP_RIGHT);
+       Kumu::Result_t r = _state->mxf_writer.FakeWriteFrame (size, _next_eye == Eye::LEFT ? ASDCP::JP2K::SP_LEFT : ASDCP::JP2K::SP_RIGHT);
        if (ASDCP_FAILURE (r)) {
                boost::throw_exception (MXFFileError ("error in writing video MXF", _file.string(), r));
        }
 
-       _next_eye = _next_eye == EYE_LEFT ? EYE_RIGHT : EYE_LEFT;
-       if (_next_eye == EYE_LEFT) {
+       _next_eye = _next_eye == Eye::LEFT ? Eye::RIGHT : Eye::LEFT;
+       if (_next_eye == Eye::LEFT) {
                ++_frames_written;
        }
 }
index 36c26602639bcf5e1ccc5ecf852a0bb41279670e..8508dc3eaf8843422f340c3633413f94d8831004 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2012-2014 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2012-2021 Carl Hetherington <cth@carlh.net>
 
     This file is part of libdcp.
 
@@ -44,6 +44,7 @@
 
 using std::string;
 using std::shared_ptr;
+using std::make_shared;
 using namespace dcp;
 
 
@@ -58,7 +59,7 @@ StereoPictureFrame::Part::Part (shared_ptr<ASDCP::JP2K::SFrameBuffer> buffer, Ey
 ASDCP::JP2K::FrameBuffer &
 StereoPictureFrame::Part::mono () const
 {
-       return _eye == EYE_LEFT ? _buffer->Left : _buffer->Right;
+       return _eye == Eye::LEFT ? _buffer->Left : _buffer->Right;
 }
 
 
@@ -112,9 +113,9 @@ shared_ptr<OpenJPEGImage>
 StereoPictureFrame::xyz_image (Eye eye, int reduce) const
 {
        switch (eye) {
-       case EYE_LEFT:
+       case Eye::LEFT:
                return decompress_j2k (const_cast<uint8_t*> (_buffer->Left.RoData()), _buffer->Left.Size(), reduce);
-       case EYE_RIGHT:
+       case Eye::RIGHT:
                return decompress_j2k (const_cast<uint8_t*> (_buffer->Right.RoData()), _buffer->Right.Size(), reduce);
        }
 
@@ -125,14 +126,14 @@ StereoPictureFrame::xyz_image (Eye eye, int reduce) const
 shared_ptr<StereoPictureFrame::Part>
 StereoPictureFrame::right () const
 {
-       return shared_ptr<Part>(new Part(_buffer, EYE_RIGHT));
+       return make_shared<Part>(_buffer, Eye::RIGHT);
 }
 
 
 shared_ptr<StereoPictureFrame::Part>
 StereoPictureFrame::left () const
 {
-       return shared_ptr<Part>(new Part(_buffer, EYE_LEFT));
+       return make_shared<Part>(_buffer, Eye::LEFT);
 }
 
 
index 13c02232ebaf52fcc4434954e61da9667f84ac2f..3d334d348bebcb67f0aaf543cc8817777f09294e 100644 (file)
@@ -68,6 +68,8 @@ public:
        class Part : public Data
        {
        public:
+               Part (std::shared_ptr<ASDCP::JP2K::SFrameBuffer> buffer, Eye eye);
+
                uint8_t const * data () const;
                uint8_t * data ();
                int size () const;
@@ -75,7 +77,6 @@ public:
        private:
                friend class StereoPictureFrame;
 
-               Part (std::shared_ptr<ASDCP::JP2K::SFrameBuffer> buffer, Eye eye);
                ASDCP::JP2K::FrameBuffer& mono () const;
 
                std::shared_ptr<ASDCP::JP2K::SFrameBuffer> _buffer;
index fc9b972afae9565bc1fbb22e9ad3dc6e0164c164..37b381ae64594065366284147f0ec5955e7406a4 100644 (file)
@@ -124,7 +124,7 @@ SubtitleAsset::font_node_state (xmlpp::Element const * node, Standard standard)
 {
        ParseState ps;
 
-       if (standard == INTEROP) {
+       if (standard == Standard::INTEROP) {
                ps.font_id = optional_string_attribute (node, "Id");
        } else {
                ps.font_id = optional_string_attribute (node, "ID");
@@ -133,7 +133,7 @@ SubtitleAsset::font_node_state (xmlpp::Element const * node, Standard standard)
        ps.aspect_adjust = optional_number_attribute<float> (node, "AspectAdjust");
        ps.italic = optional_bool_attribute (node, "Italic");
        ps.bold = optional_string_attribute(node, "Weight").get_value_or("normal") == "bold";
-       if (standard == INTEROP) {
+       if (standard == Standard::INTEROP) {
                ps.underline = optional_bool_attribute (node, "Underlined");
        } else {
                ps.underline = optional_bool_attribute (node, "Underline");
@@ -374,12 +374,12 @@ SubtitleAsset::maybe_add_subtitle (string text, vector<ParseState> const & parse
                                        ps.in.get(),
                                        ps.out.get(),
                                        ps.h_position.get_value_or(0),
-                                       ps.h_align.get_value_or(HALIGN_CENTER),
+                                       ps.h_align.get_value_or(HAlign::CENTER),
                                        ps.v_position.get_value_or(0),
-                                       ps.v_align.get_value_or(VALIGN_CENTER),
-                                       ps.direction.get_value_or (DIRECTION_LTR),
+                                       ps.v_align.get_value_or(VAlign::CENTER),
+                                       ps.direction.get_value_or (Direction::LTR),
                                        text,
-                                       ps.effect.get_value_or (NONE),
+                                       ps.effect.get_value_or (Effect::NONE),
                                        ps.effect_colour.get_value_or (dcp::Colour (0, 0, 0)),
                                        ps.fade_up_time.get_value_or(Time()),
                                        ps.fade_down_time.get_value_or(Time())
@@ -393,13 +393,13 @@ SubtitleAsset::maybe_add_subtitle (string text, vector<ParseState> const & parse
                        shared_ptr<Subtitle> (
                                new SubtitleImage (
                                        ArrayData (),
-                                       standard == INTEROP ? text.substr(0, text.size() - 4) : text,
+                                       standard == Standard::INTEROP ? text.substr(0, text.size() - 4) : text,
                                        ps.in.get(),
                                        ps.out.get(),
                                        ps.h_position.get_value_or(0),
-                                       ps.h_align.get_value_or(HALIGN_CENTER),
+                                       ps.h_align.get_value_or(HAlign::CENTER),
                                        ps.v_position.get_value_or(0),
-                                       ps.v_align.get_value_or(VALIGN_CENTER),
+                                       ps.v_align.get_value_or(VAlign::CENTER),
                                        ps.fade_up_time.get_value_or(Time()),
                                        ps.fade_down_time.get_value_or(Time())
                                        )
@@ -487,7 +487,7 @@ SubtitleAsset::equals (shared_ptr<const Asset> other_asset, EqualityOptions opti
        }
 
        if (_subtitles.size() != other->_subtitles.size()) {
-               note (DCP_ERROR, String::compose("different number of subtitles: %1 vs %2", _subtitles.size(), other->_subtitles.size()));
+               note (NoteType::ERROR, String::compose("different number of subtitles: %1 vs %2", _subtitles.size(), other->_subtitles.size()));
                return false;
        }
 
@@ -501,12 +501,12 @@ SubtitleAsset::equals (shared_ptr<const Asset> other_asset, EqualityOptions opti
                shared_ptr<SubtitleImage> image_j = dynamic_pointer_cast<SubtitleImage> (*j);
 
                if ((string_i && !string_j) || (image_i && !image_j)) {
-                       note (DCP_ERROR, "subtitles differ: string vs. image");
+                       note (NoteType::ERROR, "subtitles differ: string vs. image");
                        return false;
                }
 
                if (string_i && *string_i != *string_j) {
-                       note (DCP_ERROR, String::compose("subtitles differ in text or metadata: %1 vs %2", string_i->text(), string_j->text()));
+                       note (NoteType::ERROR, String::compose("subtitles differ in text or metadata: %1 vs %2", string_i->text(), string_j->text()));
                        return false;
                }
 
index ae5893de7381e8df7cb127ea744878917d7c905a..25a419440ce15ea39e4e37fbcb2365702043f9a4 100644 (file)
@@ -44,13 +44,13 @@ using namespace dcp;
 string
 order::Context::xmlns () const
 {
-       return standard == SMPTE ? "dcst" : "";
+       return standard == Standard::SMPTE ? "dcst" : "";
 }
 
 order::Font::Font (shared_ptr<SubtitleString> s, Standard standard)
 {
        if (s->font()) {
-               if (standard == SMPTE) {
+               if (standard == Standard::SMPTE) {
                        _values["ID"] = s->font().get ();
                } else {
                        _values["Id"] = s->font().get ();
@@ -63,7 +63,7 @@ order::Font::Font (shared_ptr<SubtitleString> s, Standard standard)
        _values["Effect"] = effect_to_string (s->effect());
        _values["EffectColor"] = s->effect_colour().to_argb_string();
        _values["Script"] = "normal";
-       if (standard == SMPTE) {
+       if (standard == Standard::SMPTE) {
                _values["Underline"] = s->underline() ? "yes" : "no";
        } else {
                _values["Underlined"] = s->underline() ? "yes" : "no";
@@ -149,8 +149,8 @@ order::Part::write_xml (xmlpp::Element* parent, order::Context& context) const
 static void
 position_align (xmlpp::Element* e, order::Context& context, HAlign h_align, float h_position, VAlign v_align, float v_position)
 {
-       if (h_align != HALIGN_CENTER) {
-               if (context.standard == SMPTE) {
+       if (h_align != HAlign::CENTER) {
+               if (context.standard == Standard::SMPTE) {
                        e->set_attribute ("Halign", halign_to_string (h_align));
                } else {
                        e->set_attribute ("HAlign", halign_to_string (h_align));
@@ -158,27 +158,27 @@ position_align (xmlpp::Element* e, order::Context& context, HAlign h_align, floa
        }
 
        if (fabs(h_position) > ALIGN_EPSILON) {
-               if (context.standard == SMPTE) {
+               if (context.standard == Standard::SMPTE) {
                        e->set_attribute ("Hposition", raw_convert<string> (h_position * 100, 6));
                } else {
                        e->set_attribute ("HPosition", raw_convert<string> (h_position * 100, 6));
                }
        }
 
-       if (context.standard == SMPTE) {
+       if (context.standard == Standard::SMPTE) {
                e->set_attribute ("Valign", valign_to_string (v_align));
        } else {
                e->set_attribute ("VAlign", valign_to_string (v_align));
        }
 
        if (fabs(v_position) > ALIGN_EPSILON) {
-               if (context.standard == SMPTE) {
+               if (context.standard == Standard::SMPTE) {
                        e->set_attribute ("Vposition", raw_convert<string> (v_position * 100, 6));
                } else {
                        e->set_attribute ("VPosition", raw_convert<string> (v_position * 100, 6));
                }
        } else {
-               if (context.standard == SMPTE) {
+               if (context.standard == Standard::SMPTE) {
                        e->set_attribute ("Vposition", "0");
                } else {
                        e->set_attribute ("VPosition", "0");
@@ -196,7 +196,7 @@ order::Text::as_xml (xmlpp::Element* parent, Context& context) const
        /* Interop only supports "horizontal" or "vertical" for direction, so only write this
           for SMPTE.
        */
-       if (_direction != DIRECTION_LTR && context.standard == SMPTE) {
+       if (_direction != Direction::LTR && context.standard == Standard::SMPTE) {
                e->set_attribute ("Direction", direction_to_string (_direction));
        }
 
@@ -210,7 +210,7 @@ order::Subtitle::as_xml (xmlpp::Element* parent, Context& context) const
        e->set_attribute ("SpotNumber", raw_convert<string> (context.spot_number++));
        e->set_attribute ("TimeIn", _in.rebase(context.time_code_rate).as_string(context.standard));
        e->set_attribute ("TimeOut", _out.rebase(context.time_code_rate).as_string(context.standard));
-       if (context.standard == SMPTE) {
+       if (context.standard == Standard::SMPTE) {
                e->set_attribute ("FadeUpTime", _fade_up.rebase(context.time_code_rate).as_string(context.standard));
                e->set_attribute ("FadeDownTime", _fade_down.rebase(context.time_code_rate).as_string(context.standard));
        } else {
@@ -238,7 +238,7 @@ order::Image::as_xml (xmlpp::Element* parent, Context& context) const
        xmlpp::Element* e = parent->add_child ("Image", context.xmlns());
 
        position_align (e, context, _h_align, _h_position, _v_align, _v_position);
-       if (context.standard == SMPTE) {
+       if (context.standard == Standard::SMPTE) {
                e->add_child_text (_id);
        } else {
                e->add_child_text (_id + ".png");
index 99d63d27b8bf4c32f9b163f3364318941d55f19a..7bfc4b865263c171d9f9b06639968cb6bb811899 100644 (file)
@@ -117,16 +117,16 @@ bool
 SubtitleImage::equals (shared_ptr<SubtitleImage> other, EqualityOptions options, NoteHandler note)
 {
        if (png_image() != other->png_image()) {
-               note (DCP_ERROR, "subtitle image PNG data differs");
+               note (NoteType::ERROR, "subtitle image PNG data differs");
                if (options.export_differing_subtitles) {
                        string const base = "dcpdiff_subtitle_";
                        if (boost::filesystem::exists(base + "A.png")) {
-                               note (DCP_ERROR, "could not export subtitle as " + base + "A.png already exists");
+                               note (NoteType::ERROR, "could not export subtitle as " + base + "A.png already exists");
                        } else {
                                png_image().write(base + "A.png");
                        }
                        if (boost::filesystem::exists(base + "B.png")) {
-                               note (DCP_ERROR, "could not export subtitle as " + base + "B.png already exists");
+                               note (NoteType::ERROR, "could not export subtitle as " + base + "B.png already exists");
                        } else {
                                other->png_image().write(base + "B.png");
                        }
@@ -136,42 +136,42 @@ SubtitleImage::equals (shared_ptr<SubtitleImage> other, EqualityOptions options,
        }
 
        if (in() != other->in()) {
-               note (DCP_ERROR, "subtitle in times differ");
+               note (NoteType::ERROR, "subtitle in times differ");
                return false;
        }
 
        if (out() != other->out()) {
-               note (DCP_ERROR, "subtitle out times differ");
+               note (NoteType::ERROR, "subtitle out times differ");
                return false;
        }
 
        if (h_position() != other->h_position()) {
-               note (DCP_ERROR, "subtitle horizontal positions differ");
+               note (NoteType::ERROR, "subtitle horizontal positions differ");
                return false;
        }
 
        if (h_align() != other->h_align()) {
-               note (DCP_ERROR, "subtitle horizontal alignments differ");
+               note (NoteType::ERROR, "subtitle horizontal alignments differ");
                return false;
        }
 
        if (v_position() != other->v_position()) {
-               note (DCP_ERROR, "subtitle vertical positions differ");
+               note (NoteType::ERROR, "subtitle vertical positions differ");
                return false;
        }
 
        if (v_align() != other->v_align()) {
-               note (DCP_ERROR, "subtitle vertical alignments differ");
+               note (NoteType::ERROR, "subtitle vertical alignments differ");
                return false;
        }
 
        if (fade_up_time() != other->fade_up_time()) {
-               note (DCP_ERROR, "subtitle fade-up times differ");
+               note (NoteType::ERROR, "subtitle fade-up times differ");
                return false;
        }
 
        if (fade_down_time() != other->fade_down_time()) {
-               note (DCP_ERROR, "subtitle fade-down times differ");
+               note (NoteType::ERROR, "subtitle fade-down times differ");
                return false;
        }
 
index 0ff65abd6b7eb60f00acac6559f943b5800a305c..9484939c707cbd7d4cc8897d98d6fc26ba6b37a2 100644 (file)
@@ -191,11 +191,11 @@ string
 dcp::effect_to_string (Effect e)
 {
        switch (e) {
-       case NONE:
+       case Effect::NONE:
                return "none";
-       case BORDER:
+       case Effect::BORDER:
                return "border";
-       case SHADOW:
+       case Effect::SHADOW:
                return "shadow";
        }
 
@@ -206,25 +206,34 @@ Effect
 dcp::string_to_effect (string s)
 {
        if (s == "none") {
-               return NONE;
+               return Effect::NONE;
        } else if (s == "border") {
-               return BORDER;
+               return Effect::BORDER;
        } else if (s == "shadow") {
-               return SHADOW;
+               return Effect::SHADOW;
        }
 
        boost::throw_exception (ReadError ("unknown subtitle effect type"));
 }
 
+
+std::ostream&
+dcp::operator<< (std::ostream& s, Effect e)
+{
+       s << effect_to_string(e);
+       return s;
+}
+
+
 string
 dcp::halign_to_string (HAlign h)
 {
        switch (h) {
-       case HALIGN_LEFT:
+       case HAlign::LEFT:
                return "left";
-       case HALIGN_CENTER:
+       case HAlign::CENTER:
                return "center";
-       case HALIGN_RIGHT:
+       case HAlign::RIGHT:
                return "right";
        }
 
@@ -235,11 +244,11 @@ HAlign
 dcp::string_to_halign (string s)
 {
        if (s == "left") {
-               return HALIGN_LEFT;
+               return HAlign::LEFT;
        } else if (s == "center") {
-               return HALIGN_CENTER;
+               return HAlign::CENTER;
        } else if (s == "right") {
-               return HALIGN_RIGHT;
+               return HAlign::RIGHT;
        }
 
        boost::throw_exception (ReadError ("unknown subtitle halign type"));
@@ -249,11 +258,11 @@ string
 dcp::valign_to_string (VAlign v)
 {
        switch (v) {
-       case VALIGN_TOP:
+       case VAlign::TOP:
                return "top";
-       case VALIGN_CENTER:
+       case VAlign::CENTER:
                return "center";
-       case VALIGN_BOTTOM:
+       case VAlign::BOTTOM:
                return "bottom";
        }
 
@@ -264,11 +273,11 @@ VAlign
 dcp::string_to_valign (string s)
 {
        if (s == "top") {
-               return VALIGN_TOP;
+               return VAlign::TOP;
        } else if (s == "center") {
-               return VALIGN_CENTER;
+               return VAlign::CENTER;
        } else if (s == "bottom") {
-               return VALIGN_BOTTOM;
+               return VAlign::BOTTOM;
        }
 
        boost::throw_exception (ReadError ("unknown subtitle valign type"));
@@ -278,13 +287,13 @@ string
 dcp::direction_to_string (Direction v)
 {
        switch (v) {
-       case DIRECTION_LTR:
+       case Direction::LTR:
                return "ltr";
-       case DIRECTION_RTL:
+       case Direction::RTL:
                return "rtl";
-       case DIRECTION_TTB:
+       case Direction::TTB:
                return "ttb";
-       case DIRECTION_BTT:
+       case Direction::BTT:
                return "btt";
        }
 
@@ -295,13 +304,13 @@ Direction
 dcp::string_to_direction (string s)
 {
        if (s == "ltr" || s == "horizontal") {
-               return DIRECTION_LTR;
+               return Direction::LTR;
        } else if (s == "rtl") {
-               return DIRECTION_RTL;
+               return Direction::RTL;
        } else if (s == "ttb" || s == "vertical") {
-               return DIRECTION_TTB;
+               return Direction::TTB;
        } else if (s == "btt") {
-               return DIRECTION_BTT;
+               return Direction::BTT;
        }
 
        boost::throw_exception (ReadError ("unknown subtitle direction type"));
@@ -316,29 +325,29 @@ string
 dcp::content_kind_to_string (ContentKind kind)
 {
        switch (kind) {
-       case FEATURE:
+       case ContentKind::FEATURE:
                return "feature";
-       case SHORT:
+       case ContentKind::SHORT:
                return "short";
-       case TRAILER:
+       case ContentKind::TRAILER:
                return "trailer";
-       case TEST:
+       case ContentKind::TEST:
                return "test";
-       case TRANSITIONAL:
+       case ContentKind::TRANSITIONAL:
                return "transitional";
-       case RATING:
+       case ContentKind::RATING:
                return "rating";
-       case TEASER:
+       case ContentKind::TEASER:
                return "teaser";
-       case POLICY:
+       case ContentKind::POLICY:
                return "policy";
-       case PUBLIC_SERVICE_ANNOUNCEMENT:
+       case ContentKind::PUBLIC_SERVICE_ANNOUNCEMENT:
                return "psa";
-       case ADVERTISEMENT:
+       case ContentKind::ADVERTISEMENT:
                return "advertisement";
-       case EPISODE:
+       case ContentKind::EPISODE:
                return "episode";
-       case PROMO:
+       case ContentKind::PROMO:
                return "promo";
        }
 
@@ -356,34 +365,43 @@ dcp::content_kind_from_string (string kind)
        transform (kind.begin(), kind.end(), kind.begin(), ::tolower);
 
        if (kind == "feature") {
-               return FEATURE;
+               return ContentKind::FEATURE;
        } else if (kind == "short") {
-               return SHORT;
+               return ContentKind::SHORT;
        } else if (kind == "trailer") {
-               return TRAILER;
+               return ContentKind::TRAILER;
        } else if (kind == "test") {
-               return TEST;
+               return ContentKind::TEST;
        } else if (kind == "transitional") {
-               return TRANSITIONAL;
+               return ContentKind::TRANSITIONAL;
        } else if (kind == "rating") {
-               return RATING;
+               return ContentKind::RATING;
        } else if (kind == "teaser") {
-               return TEASER;
+               return ContentKind::TEASER;
        } else if (kind == "policy") {
-               return POLICY;
+               return ContentKind::POLICY;
        } else if (kind == "psa") {
-               return PUBLIC_SERVICE_ANNOUNCEMENT;
+               return ContentKind::PUBLIC_SERVICE_ANNOUNCEMENT;
        } else if (kind == "advertisement") {
-               return ADVERTISEMENT;
+               return ContentKind::ADVERTISEMENT;
        } else if (kind == "episode") {
-               return EPISODE;
+               return ContentKind::EPISODE;
        } else if (kind == "promo") {
-               return PROMO;
+               return ContentKind::PROMO;
        }
 
        throw BadContentKindError (kind);
 }
 
+
+ostream&
+dcp::operator<< (ostream& s, ContentKind c)
+{
+       s << content_kind_to_string(c);
+       return s;
+}
+
+
 string
 dcp::marker_to_string (dcp::Marker m)
 {
@@ -538,9 +556,9 @@ string
 Luminance::unit_to_string (Unit u)
 {
        switch (u) {
-       case CANDELA_PER_SQUARE_METRE:
+       case Unit::CANDELA_PER_SQUARE_METRE:
                return "candela-per-square-metre";
-       case FOOT_LAMBERT:
+       case Unit::FOOT_LAMBERT:
                return "foot-lambert";
        default:
                DCP_ASSERT (false);
@@ -579,9 +597,9 @@ MainSoundConfiguration::MainSoundConfiguration (string s)
        }
 
        if (parts[0] == "51") {
-               _field = FIVE_POINT_ONE;
+               _field = MCASoundField::FIVE_POINT_ONE;
        } else if (parts[0] == "71") {
-               _field = SEVEN_POINT_ONE;
+               _field = MCASoundField::SEVEN_POINT_ONE;
        } else {
                throw MainSoundConfigurationError (s);
        }
@@ -614,13 +632,13 @@ string
 MainSoundConfiguration::to_string () const
 {
        string c;
-       if (_field == FIVE_POINT_ONE) {
+       if (_field == MCASoundField::FIVE_POINT_ONE) {
                c = "51/";
        } else {
                c = "71/";
        }
 
-       BOOST_FOREACH (optional<Channel> i, _channels) {
+       for (auto i: _channels) {
                if (!i) {
                        c += "-,";
                } else {
@@ -656,11 +674,11 @@ string
 dcp::status_to_string (Status s)
 {
        switch (s) {
-       case FINAL:
+       case Status::FINAL:
                return "final";
-       case TEMP:
+       case Status::TEMP:
                return "temp";
-       case PRE:
+       case Status::PRE:
                return "pre";
        default:
                DCP_ASSERT (false);
@@ -673,46 +691,105 @@ Status
 dcp::string_to_status (string s)
 {
        if (s == "final") {
-               return FINAL;
+               return Status::FINAL;
        } else if (s == "temp") {
-               return TEMP;
+               return Status::TEMP;
        } else if (s == "pre") {
-               return PRE;
+               return Status::PRE;
        }
 
        DCP_ASSERT (false);
 }
 
 
+ostream&
+dcp::operator<<(ostream& s, Status t)
+{
+       s << status_to_string(t);
+       return s;
+}
+
+
+ostream&
+dcp::operator<<(ostream& s, dcp::Channel c)
+{
+       switch (c) {
+       case Channel::LEFT:
+               s << "left(0)";
+               break;
+       case Channel::RIGHT:
+               s << "right(1)";
+               break;
+       case Channel::CENTRE:
+               s << "centre(2)";
+               break;
+       case Channel::LFE:
+               s << "lfe(3)";
+               break;
+       case Channel::LS:
+               s << "ls(4)";
+               break;
+       case Channel::RS:
+               s << "rs(5)";
+               break;
+       case Channel::HI:
+               s << "hi(6)";
+               break;
+       case Channel::VI:
+               s << "vi(7)";
+               break;
+       case Channel::BSL:
+               s << "bsl(10)";
+               break;
+       case Channel::BSR:
+               s << "bsr(11)";
+               break;
+       case Channel::MOTION_DATA:
+               s << "motion_data(12)";
+               break;
+       case Channel::SYNC_SIGNAL:
+               s << "sync_signal(13)";
+               break;
+       case Channel::SIGN_LANGUAGE:
+               s << "sign_language(14)";
+               break;
+       case Channel::CHANNEL_COUNT:
+               s << "(16)";
+               break;
+       }
+       return s;
+}
+
+
 Channel
 dcp::mca_id_to_channel (string id)
 {
        if (id == "L") {
-               return LEFT;
+               return Channel::LEFT;
        } else if (id == "R") {
-               return RIGHT;
+               return Channel::RIGHT;
        } else if (id == "C") {
-               return CENTRE;
+               return Channel::CENTRE;
        } else if (id == "LFE") {
-               return LFE;
+               return Channel::LFE;
        } else if (id == "Ls" || id == "Lss") {
-               return LS;
+               return Channel::LS;
        } else if (id == "Rs" || id == "Rss") {
-               return RS;
+               return Channel::RS;
        } else if (id == "HI") {
-               return HI;
+               return Channel::HI;
        } else if (id == "VIN") {
-               return VI;
+               return Channel::VI;
        } else if (id == "Lrs") {
-               return BSL;
+               return Channel::BSL;
        } else if (id == "Rrs") {
-               return BSR;
+               return Channel::BSR;
        } else if (id == "DBOX") {
-               return MOTION_DATA;
+               return Channel::MOTION_DATA;
        } else if (id == "FSKSync") {
-               return SYNC_SIGNAL;
+               return Channel::SYNC_SIGNAL;
        } else if (id == "SLVS") {
-               return SIGN_LANGUAGE;
+               return Channel::SIGN_LANGUAGE;
        }
 
        throw UnknownChannelIdError (id);
@@ -723,31 +800,31 @@ string
 dcp::channel_to_mca_id (Channel c, MCASoundField field)
 {
        switch (c) {
-       case LEFT:
+       case Channel::LEFT:
                return "L";
-       case RIGHT:
+       case Channel::RIGHT:
                return "R";
-       case CENTRE:
+       case Channel::CENTRE:
                return "C";
-       case LFE:
+       case Channel::LFE:
                return "LFE";
-       case LS:
-               return field == FIVE_POINT_ONE ? "Ls" : "Lss";
-       case RS:
-               return field == FIVE_POINT_ONE ? "Rs" : "Rss";
-       case HI:
+       case Channel::LS:
+               return field == MCASoundField::FIVE_POINT_ONE ? "Ls" : "Lss";
+       case Channel::RS:
+               return field == MCASoundField::FIVE_POINT_ONE ? "Rs" : "Rss";
+       case Channel::HI:
                return "HI";
-       case VI:
+       case Channel::VI:
                return "VIN";
-       case BSL:
+       case Channel::BSL:
                return "Lrs";
-       case BSR:
+       case Channel::BSR:
                return "Rrs";
-       case MOTION_DATA:
+       case Channel::MOTION_DATA:
                return "DBOX";
-       case SYNC_SIGNAL:
+       case Channel::SYNC_SIGNAL:
                return "FSKSync";
-       case SIGN_LANGUAGE:
+       case Channel::SIGN_LANGUAGE:
                return "SLVS";
        default:
                break;
@@ -761,31 +838,31 @@ string
 dcp::channel_to_mca_name (Channel c, MCASoundField field)
 {
        switch (c) {
-       case LEFT:
+       case Channel::LEFT:
                return "Left";
-       case RIGHT:
+       case Channel::RIGHT:
                return "Right";
-       case CENTRE:
+       case Channel::CENTRE:
                return "Center";
-       case LFE:
+       case Channel::LFE:
                return "LFE";
-       case LS:
-               return field == FIVE_POINT_ONE ? "Left Surround" : "Left Side Surround";
-       case RS:
-               return field == FIVE_POINT_ONE ? "Right Surround" : "Right Side Surround";
-       case HI:
+       case Channel::LS:
+               return field == MCASoundField::FIVE_POINT_ONE ? "Left Surround" : "Left Side Surround";
+       case Channel::RS:
+               return field == MCASoundField::FIVE_POINT_ONE ? "Right Surround" : "Right Side Surround";
+       case Channel::HI:
                return "Hearing Impaired";
-       case VI:
+       case Channel::VI:
                return "Visually Impaired-Narrative";
-       case BSL:
+       case Channel::BSL:
                return "Left Rear Surround";
-       case BSR:
+       case Channel::BSR:
                return "Right Rear Surround";
-       case MOTION_DATA:
+       case Channel::MOTION_DATA:
                return "D-BOX Motion Code Primary Stream";
-       case SYNC_SIGNAL:
+       case Channel::SYNC_SIGNAL:
                return "FSK Sync";
-       case SIGN_LANGUAGE:
+       case Channel::SIGN_LANGUAGE:
                return "Sign Language Video Stream";
        default:
                break;
@@ -807,31 +884,31 @@ dcp::channel_to_mca_universal_label (Channel c, MCASoundField field, ASDCP::Dict
        };
 
        switch (c) {
-       case LEFT:
+       case Channel::LEFT:
                return dict->ul(ASDCP::MDD_DCAudioChannel_L);
-       case RIGHT:
+       case Channel::RIGHT:
                return dict->ul(ASDCP::MDD_DCAudioChannel_R);
-       case CENTRE:
+       case Channel::CENTRE:
                return dict->ul(ASDCP::MDD_DCAudioChannel_C);
-       case LFE:
+       case Channel::LFE:
                return dict->ul(ASDCP::MDD_DCAudioChannel_LFE);
-       case LS:
-               return dict->ul(field == FIVE_POINT_ONE ? ASDCP::MDD_DCAudioChannel_Ls : ASDCP::MDD_DCAudioChannel_Lss);
-       case RS:
-               return dict->ul(field == FIVE_POINT_ONE ? ASDCP::MDD_DCAudioChannel_Rs : ASDCP::MDD_DCAudioChannel_Rss);
-       case HI:
+       case Channel::LS:
+               return dict->ul(field == MCASoundField::FIVE_POINT_ONE ? ASDCP::MDD_DCAudioChannel_Ls : ASDCP::MDD_DCAudioChannel_Lss);
+       case Channel::RS:
+               return dict->ul(field == MCASoundField::FIVE_POINT_ONE ? ASDCP::MDD_DCAudioChannel_Rs : ASDCP::MDD_DCAudioChannel_Rss);
+       case Channel::HI:
                return dict->ul(ASDCP::MDD_DCAudioChannel_HI);
-       case VI:
+       case Channel::VI:
                return dict->ul(ASDCP::MDD_DCAudioChannel_VIN);
-       case BSL:
+       case Channel::BSL:
                return dict->ul(ASDCP::MDD_DCAudioChannel_Lrs);
-       case BSR:
+       case Channel::BSR:
                return dict->ul(ASDCP::MDD_DCAudioChannel_Rrs);
-       case MOTION_DATA:
+       case Channel::MOTION_DATA:
                return dict->ul(ASDCP::MDD_DBOXMotionCodePrimaryStream);
-       case SYNC_SIGNAL:
+       case Channel::SYNC_SIGNAL:
                return ASDCP::UL(sync_signal);
-       case SIGN_LANGUAGE:
+       case Channel::SIGN_LANGUAGE:
                return ASDCP::UL(sign_language);
        default:
                break;
@@ -844,20 +921,67 @@ dcp::channel_to_mca_universal_label (Channel c, MCASoundField field, ASDCP::Dict
 vector<dcp::Channel>
 dcp::used_audio_channels ()
 {
-       vector<dcp::Channel> c;
-       c.push_back (LEFT);
-       c.push_back (RIGHT);
-       c.push_back (CENTRE);
-       c.push_back (LFE);
-       c.push_back (LS);
-       c.push_back (RS);
-       c.push_back (HI);
-       c.push_back (VI);
-       c.push_back (BSL);
-       c.push_back (BSR);
-       c.push_back (MOTION_DATA);
-       c.push_back (SYNC_SIGNAL);
-       c.push_back (SIGN_LANGUAGE);
+       vector<Channel> c;
+       c.push_back (Channel::LEFT);
+       c.push_back (Channel::RIGHT);
+       c.push_back (Channel::CENTRE);
+       c.push_back (Channel::LFE);
+       c.push_back (Channel::LS);
+       c.push_back (Channel::RS);
+       c.push_back (Channel::HI);
+       c.push_back (Channel::VI);
+       c.push_back (Channel::BSL);
+       c.push_back (Channel::BSR);
+       c.push_back (Channel::MOTION_DATA);
+       c.push_back (Channel::SYNC_SIGNAL);
+       c.push_back (Channel::SIGN_LANGUAGE);
        return c;
 }
 
+
+ostream&
+dcp::operator<< (ostream& s, NoteType t)
+{
+       switch (t) {
+       case NoteType::PROGRESS:
+               s << "progress";
+               break;
+       case NoteType::ERROR:
+               s << "error";
+               break;
+       case NoteType::NOTE:
+               s << "note";
+               break;
+       }
+       return s;
+}
+
+
+ostream&
+dcp::operator<< (ostream& s, MCASoundField f)
+{
+       switch (f) {
+       case MCASoundField::FIVE_POINT_ONE:
+               s << "5.1";
+               break;
+       case MCASoundField::SEVEN_POINT_ONE:
+               s << "7.1";
+               break;
+       }
+       return s;
+}
+
+
+ostream&
+dcp::operator<< (ostream& s, Standard t)
+{
+       switch (t) {
+       case Standard::INTEROP:
+               s << "interop";
+               break;
+       case Standard::SMPTE:
+               s << "smpte";
+               break;
+       }
+       return s;
+}
index 7f9c3e8b43275e9776627d61c6c6fb7f43bdad58..1f74f7abd32b2d773e65daa9354429235a7cde6f 100644 (file)
@@ -79,7 +79,7 @@ extern bool operator!= (Size const & a, Size const & b);
 extern std::ostream& operator<< (std::ostream& s, Size const & a);
 
 /** Identifier for a sound channel */
-enum Channel {
+enum class Channel {
        LEFT = 0,      ///< left
        RIGHT = 1,     ///< right
        CENTRE = 2,    ///< centre
@@ -99,9 +99,10 @@ enum Channel {
 };
 
 std::vector<dcp::Channel> used_audio_channels ();
+std::ostream& operator<< (std::ostream& s, Channel c);
 
 
-enum MCASoundField
+enum class MCASoundField
 {
        FIVE_POINT_ONE,
        SEVEN_POINT_ONE
@@ -112,9 +113,10 @@ extern std::string channel_to_mca_id (Channel c, MCASoundField field);
 extern Channel mca_id_to_channel (std::string);
 extern std::string channel_to_mca_name (Channel c, MCASoundField field);
 extern ASDCP::UL channel_to_mca_universal_label (Channel c, MCASoundField field, ASDCP::Dictionary const* dict);
+std::ostream& operator<< (std::ostream& s, MCASoundField f);
 
 
-enum ContentKind
+enum class ContentKind
 {
        FEATURE,
        SHORT,
@@ -132,8 +134,9 @@ enum ContentKind
 
 extern std::string content_kind_to_string (ContentKind kind);
 extern ContentKind content_kind_from_string (std::string kind);
+std::ostream& operator<<(std::ostream& s, ContentKind c);
 
-enum Effect
+enum class Effect
 {
        NONE,
        BORDER,
@@ -142,43 +145,44 @@ enum Effect
 
 extern std::string effect_to_string (Effect e);
 extern Effect string_to_effect (std::string s);
+std::ostream& operator<< (std::ostream& s, Effect e);
 
-enum HAlign
+enum class HAlign
 {
-       HALIGN_LEFT,   ///< horizontal position is distance from left of screen to left of subtitle
-       HALIGN_CENTER, ///< horizontal position is distance from centre of screen to centre of subtitle
-       HALIGN_RIGHT,  ///< horizontal position is distance from right of screen to right of subtitle
+       LEFT,   ///< horizontal position is distance from left of screen to left of subtitle
+       CENTER, ///< horizontal position is distance from centre of screen to centre of subtitle
+       RIGHT,  ///< horizontal position is distance from right of screen to right of subtitle
 };
 
 extern std::string halign_to_string (HAlign a);
 extern HAlign string_to_halign (std::string s);
 
-enum VAlign
+enum class VAlign
 {
-       VALIGN_TOP,    ///< vertical position is distance from top of screen to top of subtitle
-       VALIGN_CENTER, ///< vertical position is distance from centre of screen to centre of subtitle
-       VALIGN_BOTTOM  ///< vertical position is distance from bottom of screen to bottom of subtitle
+       TOP,    ///< vertical position is distance from top of screen to top of subtitle
+       CENTER, ///< vertical position is distance from centre of screen to centre of subtitle
+       BOTTOM  ///< vertical position is distance from bottom of screen to bottom of subtitle
 };
 
 extern std::string valign_to_string (VAlign a);
 extern VAlign string_to_valign (std::string s);
 
 /** Direction for subtitle test */
-enum Direction
+enum class Direction
 {
-       DIRECTION_LTR, ///< left-to-right
-       DIRECTION_RTL, ///< right-to-left
-       DIRECTION_TTB, ///< top-to-bottom
-       DIRECTION_BTT  ///< bottom-to-top
+       LTR, ///< left-to-right
+       RTL, ///< right-to-left
+       TTB, ///< top-to-bottom
+       BTT  ///< bottom-to-top
 };
 
 extern std::string direction_to_string (Direction a);
 extern Direction string_to_direction (std::string s);
 
-enum Eye
+enum class Eye
 {
-       EYE_LEFT,
-       EYE_RIGHT
+       LEFT,
+       RIGHT
 };
 
 /** @class Fraction
@@ -257,18 +261,22 @@ struct EqualityOptions
 /* I've been unable to make mingw happy with ERROR as a symbol, so
    I'm using a DCP_ prefix here.
 */
-enum NoteType {
-       DCP_PROGRESS,
-       DCP_ERROR,
-       DCP_NOTE
+enum class NoteType {
+       PROGRESS,
+       ERROR,
+       NOTE
 };
 
-enum Standard {
+std::ostream& operator<< (std::ostream& s, NoteType t);
+
+enum class Standard {
        INTEROP,
        SMPTE
 };
 
-enum Formulation {
+std::ostream& operator<< (std::ostream& s, Standard t);
+
+enum class Formulation {
        MODIFIED_TRANSITIONAL_1,
        MULTIPLE_MODIFIED_TRANSITIONAL_1,
        DCI_ANY,
@@ -349,7 +357,7 @@ extern bool operator== (Rating const & a, Rating const & b);
 extern std::ostream& operator<< (std::ostream& s, Rating const & r);
 
 
-enum Status
+enum class Status
 {
        FINAL, ///< final version
        TEMP,  ///< temporary version (picture/sound unfinished)
@@ -359,6 +367,7 @@ enum Status
 
 extern std::string status_to_string (Status s);
 extern Status string_to_status (std::string s);
+std::ostream& operator<< (std::ostream& s, Status t);
 
 
 class ContentVersion
@@ -385,7 +394,7 @@ public:
 class Luminance
 {
 public:
-       enum Unit {
+       enum class Unit {
                CANDELA_PER_SQUARE_METRE,
                FOOT_LAMBERT
        };
index 3e584ba0ed2a7151cf83a81c4769579e44658b2e..0696541f72729e10ddb63b4725d4468ded44121d 100644 (file)
@@ -844,11 +844,11 @@ verify_text_lines_and_characters (
 
        auto position = [](shared_ptr<const SubtitleString> sub) {
                switch (sub->v_align()) {
-               case VALIGN_TOP:
+               case VAlign::TOP:
                        return lrintf(sub->v_position() * 100);
-               case VALIGN_CENTER:
+               case VAlign::CENTER:
                        return lrintf((0.5f + sub->v_position()) * 100);
-               case VALIGN_BOTTOM:
+               case VAlign::BOTTOM:
                        return lrintf((1.0f - sub->v_position()) * 100);
                }
 
@@ -1065,7 +1065,7 @@ dcp::verify (
                        notes.push_back ({VerificationNote::VERIFY_ERROR, VerificationNote::FAILED_READ, string(e.what())});
                }
 
-               if (dcp->standard() != SMPTE) {
+               if (dcp->standard() != Standard::SMPTE) {
                        notes.push_back ({VerificationNote::VERIFY_BV21_ERROR, VerificationNote::INVALID_STANDARD});
                }
 
@@ -1095,7 +1095,7 @@ dcp::verify (
                                }
                        }
 
-                       if (dcp->standard() == SMPTE) {
+                       if (dcp->standard() == Standard::SMPTE) {
                                if (!cpl->annotation_text()) {
                                        notes.push_back ({VerificationNote::VERIFY_BV21_ERROR, VerificationNote::MISSING_CPL_ANNOTATION_TEXT, cpl->id(), cpl->file().get()});
                                } else if (cpl->annotation_text().get() != cpl->content_title_text()) {
@@ -1158,7 +1158,7 @@ dcp::verify (
                                        }
                                }
 
-                               if (dcp->standard() == SMPTE) {
+                               if (dcp->standard() == Standard::SMPTE) {
                                        boost::optional<int64_t> duration;
                                        for (auto i: reel->assets()) {
                                                if (!duration) {
@@ -1224,7 +1224,7 @@ dcp::verify (
                                most_closed_captions = std::max (most_closed_captions, reel->closed_captions().size());
                        }
 
-                       if (dcp->standard() == SMPTE) {
+                       if (dcp->standard() == Standard::SMPTE) {
 
                                if (have_main_subtitle && have_no_main_subtitle) {
                                        notes.push_back ({VerificationNote::VERIFY_BV21_ERROR, VerificationNote::MISSING_MAIN_SUBTITLE_FROM_SOME_REELS});
@@ -1234,7 +1234,7 @@ dcp::verify (
                                        notes.push_back ({VerificationNote::VERIFY_BV21_ERROR, VerificationNote::MISMATCHED_CLOSED_CAPTION_ASSET_COUNTS});
                                }
 
-                               if (cpl->content_kind() == FEATURE) {
+                               if (cpl->content_kind() == ContentKind::FEATURE) {
                                        if (markers_seen.find(Marker::FFEC) == markers_seen.end()) {
                                                notes.push_back ({VerificationNote::VERIFY_BV21_ERROR, VerificationNote::MISSING_FFEC_IN_FEATURE});
                                        }
index 81fb08ba1b99783ae7f69ebec3e17dbcd916cfb4..bd045a6dd954c295d915bb4435bf4eece37cc6f8 100644 (file)
@@ -178,7 +178,7 @@ BOOST_AUTO_TEST_CASE (combine_two_dcps_with_same_asset_filenames_test)
        boost::filesystem::path const out = "build/test/combine_two_dcps_with_same_asset_filenames_test";
 
        shared_ptr<dcp::DCP> second = make_simple ("build/test/combine_input2");
-       second->write_xml (dcp::SMPTE);
+       second->write_xml (dcp::Standard::SMPTE);
 
        remove_all (out);
        vector<path> inputs;
@@ -198,10 +198,10 @@ BOOST_AUTO_TEST_CASE (combine_two_dcps_with_interop_subs_test)
        boost::filesystem::path const out = "build/test/combine_two_dcps_with_interop_subs_test";
 
        shared_ptr<dcp::DCP> first = make_simple_with_interop_subs ("build/test/combine_input1");
-       first->write_xml (dcp::INTEROP);
+       first->write_xml (dcp::Standard::INTEROP);
 
        shared_ptr<dcp::DCP> second = make_simple_with_interop_subs ("build/test/combine_input2");
-       second->write_xml (dcp::INTEROP);
+       second->write_xml (dcp::Standard::INTEROP);
 
        remove_all (out);
        vector<path> inputs;
@@ -221,10 +221,10 @@ BOOST_AUTO_TEST_CASE (combine_two_dcps_with_smpte_subs_test)
        boost::filesystem::path const out = "build/test/combine_two_dcps_with_smpte_subs_test";
 
        shared_ptr<dcp::DCP> first = make_simple_with_smpte_subs ("build/test/combine_input1");
-       first->write_xml (dcp::SMPTE);
+       first->write_xml (dcp::Standard::SMPTE);
 
        shared_ptr<dcp::DCP> second = make_simple_with_smpte_subs ("build/test/combine_input2");
-       second->write_xml (dcp::SMPTE);
+       second->write_xml (dcp::Standard::SMPTE);
 
        remove_all (out);
        vector<path> inputs;
@@ -244,10 +244,10 @@ BOOST_AUTO_TEST_CASE (combine_two_dcps_with_interop_ccaps_test)
        boost::filesystem::path const out = "build/test/combine_two_dcps_with_interop_ccaps_test";
 
        shared_ptr<dcp::DCP> first = make_simple_with_interop_ccaps ("build/test/combine_input1");
-       first->write_xml (dcp::INTEROP);
+       first->write_xml (dcp::Standard::INTEROP);
 
        shared_ptr<dcp::DCP> second = make_simple_with_interop_ccaps ("build/test/combine_input2");
-       second->write_xml (dcp::INTEROP);
+       second->write_xml (dcp::Standard::INTEROP);
 
        remove_all (out);
        vector<path> inputs;
@@ -267,10 +267,10 @@ BOOST_AUTO_TEST_CASE (combine_two_dcps_with_smpte_ccaps_test)
        boost::filesystem::path const out = "build/test/combine_two_dcps_with_interop_ccaps_test";
 
        shared_ptr<dcp::DCP> first = make_simple_with_smpte_ccaps ("build/test/combine_input1");
-       first->write_xml (dcp::SMPTE);
+       first->write_xml (dcp::Standard::SMPTE);
 
        shared_ptr<dcp::DCP> second = make_simple_with_smpte_ccaps ("build/test/combine_input2");
-       second->write_xml (dcp::SMPTE);
+       second->write_xml (dcp::Standard::SMPTE);
 
        remove_all (out);
        vector<path> inputs;
@@ -290,10 +290,10 @@ BOOST_AUTO_TEST_CASE (combine_two_multi_reel_dcps)
        boost::filesystem::path const out = "build/test/combine_two_multi_reel_dcps";
 
        shared_ptr<dcp::DCP> first = make_simple ("build/test/combine_input1", 4);
-       first->write_xml (dcp::SMPTE);
+       first->write_xml (dcp::Standard::SMPTE);
 
        shared_ptr<dcp::DCP> second = make_simple ("build/test/combine_input2", 4);
-       second->write_xml (dcp::SMPTE);
+       second->write_xml (dcp::Standard::SMPTE);
 
        remove_all (out);
        vector<path> inputs;
@@ -312,7 +312,7 @@ BOOST_AUTO_TEST_CASE (combine_two_dcps_with_shared_asset)
        boost::filesystem::path const out = "build/test/combine_two_dcps_with_shared_asset";
 
        shared_ptr<dcp::DCP> first = make_simple ("build/test/combine_input1", 1);
-       first->write_xml (dcp::SMPTE);
+       first->write_xml (dcp::Standard::SMPTE);
 
        remove_all ("build/test/combine_input2");
        shared_ptr<dcp::DCP> second(new dcp::DCP("build/test/combine_input2"));
@@ -321,7 +321,7 @@ BOOST_AUTO_TEST_CASE (combine_two_dcps_with_shared_asset)
        mxf_meta.company_name = "OpenDCP";
        mxf_meta.product_version = "0.0.25";
 
-       shared_ptr<dcp::CPL> cpl (new dcp::CPL("A Test DCP", dcp::TRAILER));
+       auto cpl = make_shared<dcp::CPL>("A Test DCP", dcp::ContentKind::TRAILER);
        cpl->set_content_version (
                dcp::ContentVersion("urn:uuid:75ac29aa-42ac-1234-ecae-49251abefd11","content-version-label-text")
                );
@@ -331,13 +331,13 @@ BOOST_AUTO_TEST_CASE (combine_two_dcps_with_shared_asset)
        cpl->set_main_picture_active_area (dcp::Size(1440, 1080));
        cpl->set_version_number(1);
 
-       shared_ptr<dcp::ReelMonoPictureAsset> pic(new dcp::ReelMonoPictureAsset(simple_picture("build/test/combine_input2", ""), 0));
-       shared_ptr<dcp::ReelSoundAsset> sound(new dcp::ReelSoundAsset(first->cpls().front()->reels().front()->main_sound()->asset(), 0));
+       auto pic = make_shared<dcp::ReelMonoPictureAsset>(simple_picture("build/test/combine_input2", ""), 0);
+       auto sound = make_shared<dcp::ReelSoundAsset>(first->cpls().front()->reels().front()->main_sound()->asset(), 0);
        auto reel = make_shared<dcp::Reel>(pic, sound);
        reel->add (simple_markers());
        cpl->add (reel);
        second->add (cpl);
-       second->write_xml (dcp::SMPTE);
+       second->write_xml (dcp::Standard::SMPTE);
 
        remove_all (out);
        vector<path> inputs;
index a6dcd834b4276e977f1da4c76e45c501f098dffc..45afecb33d5b6f71068ad0aec14d84d131cd636d 100644 (file)
@@ -51,7 +51,7 @@ using std::shared_ptr;
 
 BOOST_AUTO_TEST_CASE (cpl_metadata_bad_values_test)
 {
-       dcp::CPL cpl("", dcp::FEATURE);
+       dcp::CPL cpl("", dcp::ContentKind::FEATURE);
        BOOST_CHECK_THROW (cpl.set_version_number(-1), dcp::BadSettingError);
 
        vector<dcp::ContentVersion> cv;
@@ -66,11 +66,11 @@ BOOST_AUTO_TEST_CASE (main_sound_configuration_test1)
        dcp::MainSoundConfiguration msc("51/L,R,C,LFE,-,-");
        BOOST_CHECK_EQUAL (msc.to_string(), "51/L,R,C,LFE,-,-");
        BOOST_CHECK_EQUAL (msc.channels(), 6);
-       BOOST_CHECK_EQUAL (msc.field(), dcp::FIVE_POINT_ONE);
-       BOOST_CHECK_EQUAL (msc.mapping(0).get(), dcp::LEFT);
-       BOOST_CHECK_EQUAL (msc.mapping(1).get(), dcp::RIGHT);
-       BOOST_CHECK_EQUAL (msc.mapping(2).get(), dcp::CENTRE);
-       BOOST_CHECK_EQUAL (msc.mapping(3).get(), dcp::LFE);
+       BOOST_CHECK_EQUAL (msc.field(), dcp::MCASoundField::FIVE_POINT_ONE);
+       BOOST_CHECK_EQUAL (msc.mapping(0).get(), dcp::Channel::LEFT);
+       BOOST_CHECK_EQUAL (msc.mapping(1).get(), dcp::Channel::RIGHT);
+       BOOST_CHECK_EQUAL (msc.mapping(2).get(), dcp::Channel::CENTRE);
+       BOOST_CHECK_EQUAL (msc.mapping(3).get(), dcp::Channel::LFE);
        BOOST_CHECK (!msc.mapping(4));
        BOOST_CHECK (!msc.mapping(5));
 }
@@ -81,11 +81,11 @@ BOOST_AUTO_TEST_CASE (main_sound_configuration_test2)
        dcp::MainSoundConfiguration msc("71/L,R,C,LFE,-,-");
        BOOST_CHECK_EQUAL (msc.to_string(), "71/L,R,C,LFE,-,-");
        BOOST_CHECK_EQUAL (msc.channels(), 6);
-       BOOST_CHECK_EQUAL (msc.field(), dcp::SEVEN_POINT_ONE);
-       BOOST_CHECK_EQUAL (msc.mapping(0).get(), dcp::LEFT);
-       BOOST_CHECK_EQUAL (msc.mapping(1).get(), dcp::RIGHT);
-       BOOST_CHECK_EQUAL (msc.mapping(2).get(), dcp::CENTRE);
-       BOOST_CHECK_EQUAL (msc.mapping(3).get(), dcp::LFE);
+       BOOST_CHECK_EQUAL (msc.field(), dcp::MCASoundField::SEVEN_POINT_ONE);
+       BOOST_CHECK_EQUAL (msc.mapping(0).get(), dcp::Channel::LEFT);
+       BOOST_CHECK_EQUAL (msc.mapping(1).get(), dcp::Channel::RIGHT);
+       BOOST_CHECK_EQUAL (msc.mapping(2).get(), dcp::Channel::CENTRE);
+       BOOST_CHECK_EQUAL (msc.mapping(3).get(), dcp::Channel::LFE);
        BOOST_CHECK (!msc.mapping(4));
        BOOST_CHECK (!msc.mapping(5));
 }
@@ -96,13 +96,13 @@ BOOST_AUTO_TEST_CASE (main_sound_configuration_test3)
        dcp::MainSoundConfiguration msc("71/L,-,C,LFE,Lss,Rss");
        BOOST_CHECK_EQUAL (msc.to_string(), "71/L,-,C,LFE,Lss,Rss");
        BOOST_CHECK_EQUAL (msc.channels(), 6);
-       BOOST_CHECK_EQUAL (msc.field(), dcp::SEVEN_POINT_ONE);
-       BOOST_CHECK_EQUAL (msc.mapping(0).get(), dcp::LEFT);
+       BOOST_CHECK_EQUAL (msc.field(), dcp::MCASoundField::SEVEN_POINT_ONE);
+       BOOST_CHECK_EQUAL (msc.mapping(0).get(), dcp::Channel::LEFT);
        BOOST_CHECK (!msc.mapping(1));
-       BOOST_CHECK_EQUAL (msc.mapping(2).get(), dcp::CENTRE);
-       BOOST_CHECK_EQUAL (msc.mapping(3).get(), dcp::LFE);
-       BOOST_CHECK_EQUAL (msc.mapping(4).get(), dcp::LS);
-       BOOST_CHECK_EQUAL (msc.mapping(5).get(), dcp::RS);
+       BOOST_CHECK_EQUAL (msc.mapping(2).get(), dcp::Channel::CENTRE);
+       BOOST_CHECK_EQUAL (msc.mapping(3).get(), dcp::Channel::LFE);
+       BOOST_CHECK_EQUAL (msc.mapping(4).get(), dcp::Channel::LS);
+       BOOST_CHECK_EQUAL (msc.mapping(5).get(), dcp::Channel::RS);
 }
 
 
@@ -111,13 +111,13 @@ BOOST_AUTO_TEST_CASE (main_sound_configuration_test4)
        dcp::MainSoundConfiguration msc("71/L,-,C,LFE,Lss,Rss,-,-,-,-,-,-,-,-,-");
        BOOST_CHECK_EQUAL (msc.to_string(), "71/L,-,C,LFE,Lss,Rss,-,-,-,-,-,-,-,-,-");
        BOOST_CHECK_EQUAL (msc.channels(), 15);
-       BOOST_CHECK_EQUAL (msc.field(), dcp::SEVEN_POINT_ONE);
-       BOOST_CHECK_EQUAL (msc.mapping(0).get(), dcp::LEFT);
+       BOOST_CHECK_EQUAL (msc.field(), dcp::MCASoundField::SEVEN_POINT_ONE);
+       BOOST_CHECK_EQUAL (msc.mapping(0).get(), dcp::Channel::LEFT);
        BOOST_CHECK (!msc.mapping(1));
-       BOOST_CHECK_EQUAL (msc.mapping(2).get(), dcp::CENTRE);
-       BOOST_CHECK_EQUAL (msc.mapping(3).get(), dcp::LFE);
-       BOOST_CHECK_EQUAL (msc.mapping(4).get(), dcp::LS);
-       BOOST_CHECK_EQUAL (msc.mapping(5).get(), dcp::RS);
+       BOOST_CHECK_EQUAL (msc.mapping(2).get(), dcp::Channel::CENTRE);
+       BOOST_CHECK_EQUAL (msc.mapping(3).get(), dcp::Channel::LFE);
+       BOOST_CHECK_EQUAL (msc.mapping(4).get(), dcp::Channel::LS);
+       BOOST_CHECK_EQUAL (msc.mapping(5).get(), dcp::Channel::RS);
        for (int i = 6; i < 15; ++i) {
                BOOST_CHECK (!msc.mapping(i));
        }
@@ -129,29 +129,29 @@ BOOST_AUTO_TEST_CASE (main_sound_configuration_test5)
        dcp::MainSoundConfiguration msc("71/L,-,C,LFE,Lss,Rss,HI,VIN,-,-,Lrs,Rrs,DBOX,FSKSync,SLVS");
        BOOST_CHECK_EQUAL (msc.to_string(), "71/L,-,C,LFE,Lss,Rss,HI,VIN,-,-,Lrs,Rrs,DBOX,FSKSync,SLVS");
        BOOST_CHECK_EQUAL (msc.channels(), 15);
-       BOOST_CHECK_EQUAL (msc.field(), dcp::SEVEN_POINT_ONE);
-       BOOST_CHECK_EQUAL (msc.mapping(0).get(), dcp::LEFT);
+       BOOST_CHECK_EQUAL (msc.field(), dcp::MCASoundField::SEVEN_POINT_ONE);
+       BOOST_CHECK_EQUAL (msc.mapping(0).get(), dcp::Channel::LEFT);
        BOOST_CHECK (!msc.mapping(1));
-       BOOST_CHECK_EQUAL (msc.mapping(2).get(), dcp::CENTRE);
-       BOOST_CHECK_EQUAL (msc.mapping(3).get(), dcp::LFE);
-       BOOST_CHECK_EQUAL (msc.mapping(4).get(), dcp::LS);
-       BOOST_CHECK_EQUAL (msc.mapping(5).get(), dcp::RS);
-       BOOST_CHECK_EQUAL (msc.mapping(6).get(), dcp::HI);
-       BOOST_CHECK_EQUAL (msc.mapping(7).get(), dcp::VI);
+       BOOST_CHECK_EQUAL (msc.mapping(2).get(), dcp::Channel::CENTRE);
+       BOOST_CHECK_EQUAL (msc.mapping(3).get(), dcp::Channel::LFE);
+       BOOST_CHECK_EQUAL (msc.mapping(4).get(), dcp::Channel::LS);
+       BOOST_CHECK_EQUAL (msc.mapping(5).get(), dcp::Channel::RS);
+       BOOST_CHECK_EQUAL (msc.mapping(6).get(), dcp::Channel::HI);
+       BOOST_CHECK_EQUAL (msc.mapping(7).get(), dcp::Channel::VI);
        BOOST_CHECK (!msc.mapping(8));
        BOOST_CHECK (!msc.mapping(9));
-       BOOST_CHECK_EQUAL (msc.mapping(10).get(), dcp::BSL);
-       BOOST_CHECK_EQUAL (msc.mapping(11).get(), dcp::BSR);
-       BOOST_CHECK_EQUAL (msc.mapping(12).get(), dcp::MOTION_DATA);
-       BOOST_CHECK_EQUAL (msc.mapping(13).get(), dcp::SYNC_SIGNAL);
-       BOOST_CHECK_EQUAL (msc.mapping(14).get(), dcp::SIGN_LANGUAGE);
+       BOOST_CHECK_EQUAL (msc.mapping(10).get(), dcp::Channel::BSL);
+       BOOST_CHECK_EQUAL (msc.mapping(11).get(), dcp::Channel::BSR);
+       BOOST_CHECK_EQUAL (msc.mapping(12).get(), dcp::Channel::MOTION_DATA);
+       BOOST_CHECK_EQUAL (msc.mapping(13).get(), dcp::Channel::SYNC_SIGNAL);
+       BOOST_CHECK_EQUAL (msc.mapping(14).get(), dcp::Channel::SIGN_LANGUAGE);
 }
 
 
 BOOST_AUTO_TEST_CASE (luminance_test1)
 {
-       BOOST_CHECK_NO_THROW (dcp::Luminance(4, dcp::Luminance::CANDELA_PER_SQUARE_METRE));
-       BOOST_CHECK_THROW (dcp::Luminance(-4, dcp::Luminance::CANDELA_PER_SQUARE_METRE), dcp::MiscError);
+       BOOST_CHECK_NO_THROW (dcp::Luminance(4, dcp::Luminance::Unit::CANDELA_PER_SQUARE_METRE));
+       BOOST_CHECK_THROW (dcp::Luminance(-4, dcp::Luminance::Unit::CANDELA_PER_SQUARE_METRE), dcp::MiscError);
 }
 
 
@@ -164,7 +164,7 @@ BOOST_AUTO_TEST_CASE (luminance_test2)
                );
 
        dcp::Luminance lum (doc);
-       BOOST_CHECK (lum.unit() == dcp::Luminance::CANDELA_PER_SQUARE_METRE);
+       BOOST_CHECK (lum.unit() == dcp::Luminance::Unit::CANDELA_PER_SQUARE_METRE);
        BOOST_CHECK_CLOSE (lum.value(), 4.5, 0.1);
 }
 
@@ -191,7 +191,7 @@ BOOST_AUTO_TEST_CASE (luminance_test4)
 
        /* We tolerate out-of-range values when reading from XML */
        dcp::Luminance lum (doc);
-       BOOST_CHECK (lum.unit() == dcp::Luminance::CANDELA_PER_SQUARE_METRE);
+       BOOST_CHECK (lum.unit() == dcp::Luminance::Unit::CANDELA_PER_SQUARE_METRE);
        BOOST_CHECK_CLOSE (lum.value(), -4.5, 0.1);
 }
 
@@ -205,17 +205,17 @@ BOOST_AUTO_TEST_CASE (cpl_metadata_read_test1)
        BOOST_CHECK (cpl.full_content_title_text_language().get() == "de");
        BOOST_CHECK (cpl.release_territory().get() == "ES");
        BOOST_CHECK_EQUAL (cpl.version_number().get(), 2);
-       BOOST_CHECK_EQUAL (cpl.status().get(), dcp::FINAL);
+       BOOST_CHECK_EQUAL (cpl.status().get(), dcp::Status::FINAL);
        BOOST_CHECK_EQUAL (cpl.chain().get(), "the-chain");
        BOOST_CHECK_EQUAL (cpl.distributor().get(), "the-distributor");
        BOOST_CHECK_EQUAL (cpl.facility().get(), "the-facility");
-       BOOST_CHECK (cpl.luminance() == dcp::Luminance(4.5, dcp::Luminance::FOOT_LAMBERT));
+       BOOST_CHECK (cpl.luminance() == dcp::Luminance(4.5, dcp::Luminance::Unit::FOOT_LAMBERT));
 
        dcp::MainSoundConfiguration msc(cpl.main_sound_configuration().get());
-       BOOST_CHECK_EQUAL (msc.mapping(0).get(), dcp::LEFT);
-       BOOST_CHECK_EQUAL (msc.mapping(1).get(), dcp::RIGHT);
-       BOOST_CHECK_EQUAL (msc.mapping(2).get(), dcp::CENTRE);
-       BOOST_CHECK_EQUAL (msc.mapping(3).get(), dcp::LFE);
+       BOOST_CHECK_EQUAL (msc.mapping(0).get(), dcp::Channel::LEFT);
+       BOOST_CHECK_EQUAL (msc.mapping(1).get(), dcp::Channel::RIGHT);
+       BOOST_CHECK_EQUAL (msc.mapping(2).get(), dcp::Channel::CENTRE);
+       BOOST_CHECK_EQUAL (msc.mapping(3).get(), dcp::Channel::LFE);
        BOOST_CHECK (!msc.mapping(4));
        BOOST_CHECK (!msc.mapping(5));
        BOOST_CHECK (!msc.mapping(6));
@@ -225,7 +225,7 @@ BOOST_AUTO_TEST_CASE (cpl_metadata_read_test1)
        BOOST_CHECK (!msc.mapping(10));
        BOOST_CHECK (!msc.mapping(11));
        BOOST_CHECK (!msc.mapping(12));
-       BOOST_CHECK_EQUAL (msc.mapping(13).get(), dcp::SYNC_SIGNAL);
+       BOOST_CHECK_EQUAL (msc.mapping(13).get(), dcp::Channel::SYNC_SIGNAL);
 
        BOOST_CHECK_EQUAL (cpl.main_sound_sample_rate().get(), 48000);
        BOOST_CHECK (cpl.main_picture_stored_area().get() == dcp::Size(1998, 1080));
@@ -250,7 +250,7 @@ BOOST_AUTO_TEST_CASE (cpl_metadata_write_test1)
 {
        RNGFixer fix;
 
-       dcp::CPL cpl("", dcp::FEATURE);
+       dcp::CPL cpl("", dcp::ContentKind::FEATURE);
        cpl.set_issue_date ("2020-08-28T13:35:06+02:00");
 
        vector<dcp::ContentVersion> cv;
@@ -262,20 +262,20 @@ BOOST_AUTO_TEST_CASE (cpl_metadata_write_test1)
        cpl.set_full_content_title_text_language (dcp::LanguageTag("de"));
        cpl.set_release_territory (dcp::LanguageTag::RegionSubtag("ES"));
        cpl.set_version_number (2);
-       cpl.set_status (dcp::FINAL);
+       cpl.set_status (dcp::Status::FINAL);
        cpl.set_chain ("the-chain");
        cpl.set_distributor ("the-distributor");
        cpl.set_facility ("the-facility");
-       cpl.set_luminance (dcp::Luminance(4.5, dcp::Luminance::FOOT_LAMBERT));
+       cpl.set_luminance (dcp::Luminance(4.5, dcp::Luminance::Unit::FOOT_LAMBERT));
        cpl.set_issuer ("libdcp1.6.4devel");
        cpl.set_creator ("libdcp1.6.4devel");
 
-       dcp::MainSoundConfiguration msc(dcp::SEVEN_POINT_ONE, 16);
-       msc.set_mapping (0, dcp::LEFT);
-       msc.set_mapping (1, dcp::RIGHT);
-       msc.set_mapping (2, dcp::CENTRE);
-       msc.set_mapping (3, dcp::LFE);
-       msc.set_mapping (13, dcp::SYNC_SIGNAL);
+       dcp::MainSoundConfiguration msc(dcp::MCASoundField::SEVEN_POINT_ONE, 16);
+       msc.set_mapping (0, dcp::Channel::LEFT);
+       msc.set_mapping (1, dcp::Channel::RIGHT);
+       msc.set_mapping (2, dcp::Channel::CENTRE);
+       msc.set_mapping (3, dcp::Channel::LFE);
+       msc.set_mapping (13, dcp::Channel::SYNC_SIGNAL);
        cpl.set_main_sound_configuration (msc.to_string());
 
        cpl.set_main_sound_sample_rate (48000);
@@ -308,7 +308,7 @@ BOOST_AUTO_TEST_CASE (cpl_metadata_write_test1)
        lt.push_back(dcp::LanguageTag("fr-ZA"));
        cpl.set_additional_subtitle_languages (lt);
 
-       cpl.write_xml ("build/test/cpl_metadata_write_test1.xml", dcp::SMPTE, shared_ptr<dcp::CertificateChain>());
+       cpl.write_xml ("build/test/cpl_metadata_write_test1.xml", dcp::Standard::SMPTE, shared_ptr<dcp::CertificateChain>());
        check_xml (
                dcp::file_to_string("test/ref/cpl_metadata_test1.xml"),
                dcp::file_to_string("build/test/cpl_metadata_write_test1.xml"),
@@ -321,7 +321,7 @@ BOOST_AUTO_TEST_CASE (cpl_metadata_write_test1)
 BOOST_AUTO_TEST_CASE (cpl_metadata_roundtrip_test_1)
 {
        dcp::CPL cpl ("test/ref/cpl_metadata_test1.xml");
-       cpl.write_xml ("build/test/cpl_metadata_roundtrip_test1.xml", dcp::SMPTE, shared_ptr<dcp::CertificateChain>());
+       cpl.write_xml ("build/test/cpl_metadata_roundtrip_test1.xml", dcp::Standard::SMPTE, shared_ptr<dcp::CertificateChain>());
        vector<string> ignore;
        ignore.push_back ("Id");
        check_xml (
@@ -337,18 +337,18 @@ BOOST_AUTO_TEST_CASE (cpl_metadata_write_test2)
 {
        RNGFixer fix;
 
-       dcp::CPL cpl("", dcp::FEATURE);
+       dcp::CPL cpl("", dcp::ContentKind::FEATURE);
        cpl.set_issue_date ("2020-08-28T13:35:06+02:00");
        cpl.set_content_version (dcp::ContentVersion("id", "version"));
        cpl.set_issuer ("libdcp1.6.4devel");
        cpl.set_creator ("libdcp1.6.4devel");
 
-       dcp::MainSoundConfiguration msc(dcp::SEVEN_POINT_ONE, 16);
-       msc.set_mapping (0, dcp::LEFT);
-       msc.set_mapping (1, dcp::RIGHT);
-       msc.set_mapping (2, dcp::CENTRE);
-       msc.set_mapping (3, dcp::LFE);
-       msc.set_mapping (13, dcp::SYNC_SIGNAL);
+       dcp::MainSoundConfiguration msc(dcp::MCASoundField::SEVEN_POINT_ONE, 16);
+       msc.set_mapping (0, dcp::Channel::LEFT);
+       msc.set_mapping (1, dcp::Channel::RIGHT);
+       msc.set_mapping (2, dcp::Channel::CENTRE);
+       msc.set_mapping (3, dcp::Channel::LFE);
+       msc.set_mapping (13, dcp::Channel::SYNC_SIGNAL);
        cpl.set_main_sound_configuration (msc.to_string());
 
        cpl.set_main_sound_sample_rate (48000);
@@ -359,7 +359,7 @@ BOOST_AUTO_TEST_CASE (cpl_metadata_write_test2)
        reel->add (black_picture_asset("build/test/cpl_metadata_write_test1"));
        cpl.add (reel);
 
-       cpl.write_xml ("build/test/cpl_metadata_write_test2.xml", dcp::SMPTE, shared_ptr<dcp::CertificateChain>());
+       cpl.write_xml ("build/test/cpl_metadata_write_test2.xml", dcp::Standard::SMPTE, shared_ptr<dcp::CertificateChain>());
        check_xml (
                dcp::file_to_string("test/ref/cpl_metadata_test2.xml"),
                dcp::file_to_string("build/test/cpl_metadata_write_test2.xml"),
@@ -384,10 +384,10 @@ BOOST_AUTO_TEST_CASE (cpl_metadata_read_test2)
        BOOST_CHECK (!cpl.luminance());
 
        dcp::MainSoundConfiguration msc(cpl.main_sound_configuration().get());
-       BOOST_CHECK_EQUAL (msc.mapping(0).get(), dcp::LEFT);
-       BOOST_CHECK_EQUAL (msc.mapping(1).get(), dcp::RIGHT);
-       BOOST_CHECK_EQUAL (msc.mapping(2).get(), dcp::CENTRE);
-       BOOST_CHECK_EQUAL (msc.mapping(3).get(), dcp::LFE);
+       BOOST_CHECK_EQUAL (msc.mapping(0).get(), dcp::Channel::LEFT);
+       BOOST_CHECK_EQUAL (msc.mapping(1).get(), dcp::Channel::RIGHT);
+       BOOST_CHECK_EQUAL (msc.mapping(2).get(), dcp::Channel::CENTRE);
+       BOOST_CHECK_EQUAL (msc.mapping(3).get(), dcp::Channel::LFE);
        BOOST_CHECK (!msc.mapping(4));
        BOOST_CHECK (!msc.mapping(5));
        BOOST_CHECK (!msc.mapping(6));
@@ -397,7 +397,7 @@ BOOST_AUTO_TEST_CASE (cpl_metadata_read_test2)
        BOOST_CHECK (!msc.mapping(10));
        BOOST_CHECK (!msc.mapping(11));
        BOOST_CHECK (!msc.mapping(12));
-       BOOST_CHECK_EQUAL (msc.mapping(13).get(), dcp::SYNC_SIGNAL);
+       BOOST_CHECK_EQUAL (msc.mapping(13).get(), dcp::Channel::SYNC_SIGNAL);
 
        BOOST_CHECK_EQUAL (cpl.main_sound_sample_rate().get(), 48000);
        BOOST_CHECK (cpl.main_picture_stored_area().get() == dcp::Size(1998, 1080));
@@ -412,7 +412,7 @@ BOOST_AUTO_TEST_CASE (cpl_metadata_read_test2)
 BOOST_AUTO_TEST_CASE (cpl_metadata_roundtrip_test_2)
 {
        dcp::CPL cpl ("test/ref/cpl_metadata_test2.xml");
-       cpl.write_xml ("build/test/cpl_metadata_roundtrip_test2.xml", dcp::SMPTE, shared_ptr<dcp::CertificateChain>());
+       cpl.write_xml ("build/test/cpl_metadata_roundtrip_test2.xml", dcp::Standard::SMPTE, shared_ptr<dcp::CertificateChain>());
        vector<string> ignore;
        ignore.push_back ("Id");
        check_xml (
index b5bfd389155f8b41c298f84bd4a5b232713f4c92..0135e6e08964fcdcf4215b4cfe6e2d3fe14a340f 100644 (file)
@@ -42,7 +42,7 @@ using std::shared_ptr;
 
 BOOST_AUTO_TEST_CASE (cpl_ratings)
 {
-       dcp::CPL cpl ("annotation", dcp::FEATURE);
+       dcp::CPL cpl ("annotation", dcp::ContentKind::FEATURE);
 
        vector<dcp::Rating> ratings;
        ratings.push_back (dcp::Rating("http://www.mpaa.org/2003-ratings", "PG-13"));
@@ -52,7 +52,7 @@ BOOST_AUTO_TEST_CASE (cpl_ratings)
        shared_ptr<dcp::Reel> reel(new dcp::Reel());
        cpl.add (reel);
 
-       cpl.write_xml ("build/test/cpl_ratings.xml", dcp::SMPTE, std::shared_ptr<dcp::CertificateChain>());
+       cpl.write_xml ("build/test/cpl_ratings.xml", dcp::Standard::SMPTE, {});
 
        vector<string> ignore;
        ignore.push_back ("Id");
@@ -96,6 +96,6 @@ BOOST_AUTO_TEST_CASE (cpl_ratings)
                );
 
        dcp::CPL cpl2 ("build/test/cpl_ratings.xml");
-       vector<dcp::Rating> ratings2 = cpl2.ratings ();
+       auto ratings2 = cpl2.ratings ();
        BOOST_TEST(ratings == ratings2);
 }
index 60945aaed0b1c7b87006c02076097682e9afe2a9..65f01900329f8e3bc562fb0cc93755579c2cf238 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2014-2019 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2014-2021 Carl Hetherington <cth@carlh.net>
 
     This file is part of libdcp.
 
@@ -40,6 +40,7 @@
 
 using std::string;
 using std::shared_ptr;
+using std::make_shared;
 
 static void
 check (shared_ptr<dcp::ReelMonoPictureAsset> pa, dcp::Fraction far, string sar)
@@ -47,7 +48,7 @@ check (shared_ptr<dcp::ReelMonoPictureAsset> pa, dcp::Fraction far, string sar)
        pa->set_screen_aspect_ratio (far);
        xmlpp::Document doc;
        xmlpp::Element* el = doc.create_root_node ("Test");
-       pa->write_to_cpl (el, dcp::INTEROP);
+       pa->write_to_cpl (el, dcp::Standard::INTEROP);
 
        cxml::Node node (el);
        BOOST_CHECK_EQUAL (node.node_child("MainPicture")->string_child ("ScreenAspectRatio"), sar);
@@ -60,11 +61,8 @@ check (shared_ptr<dcp::ReelMonoPictureAsset> pa, dcp::Fraction far, string sar)
  */
 BOOST_AUTO_TEST_CASE (cpl_sar)
 {
-       shared_ptr<dcp::ReelMonoPictureAsset> pa (
-               new dcp::ReelMonoPictureAsset (
-                       shared_ptr<dcp::MonoPictureAsset> (new dcp::MonoPictureAsset ("test/ref/DCP/dcp_test1/video.mxf")),
-                       0
-                       )
+       auto pa = make_shared<dcp::ReelMonoPictureAsset>(
+               make_shared<dcp::MonoPictureAsset>("test/ref/DCP/dcp_test1/video.mxf"), 0
                );
 
        /* Easy ones */
index 1a78bfd28365e7b9d30956d766a3d311d8e5d022..da9d3000f83b19069c2dc9f46f4d53116918aabc 100644 (file)
@@ -46,6 +46,7 @@ using std::list;
 using std::string;
 using std::shared_ptr;
 using std::dynamic_pointer_cast;
+using std::make_shared;
 using boost::shared_array;
 
 /** Create a DCP with interop subtitles and check that the font is written and read back correctly */
@@ -59,25 +60,25 @@ BOOST_AUTO_TEST_CASE (interop_dcp_font_test)
        subs->write (directory / "frobozz.xml");
        check_file ("test/data/dummy.ttf", "build/test/interop_dcp_font_test/font_0.ttf");
 
-       shared_ptr<dcp::Reel> reel (new dcp::Reel ());
-       reel->add (shared_ptr<dcp::ReelAsset> (new dcp::ReelSubtitleAsset (subs, dcp::Fraction (24, 1), 24, 0)));
+       auto reel = make_shared<dcp::Reel>();
+       reel->add (make_shared<dcp::ReelSubtitleAsset>(subs, dcp::Fraction (24, 1), 24, 0));
 
-       shared_ptr<dcp::CPL> cpl (new dcp::CPL ("", dcp::TRAILER));
+       auto cpl = make_shared<dcp::CPL>("", dcp::ContentKind::TRAILER);
        cpl->add (reel);
 
        dcp.add (cpl);
-       dcp.write_xml (dcp::INTEROP);
+       dcp.write_xml (dcp::Standard::INTEROP);
 
        dcp::DCP dcp2 (directory);
        dcp2.read ();
-       shared_ptr<dcp::SubtitleAsset> subs2 = dynamic_pointer_cast<dcp::SubtitleAsset> (
-               dcp2.cpls().front()->reels().front()->main_subtitle()->asset_ref().asset()
+       auto subs2 = dynamic_pointer_cast<dcp::SubtitleAsset> (
+               dcp2.cpls()[0]->reels()[0]->main_subtitle()->asset_ref().asset()
                );
        BOOST_REQUIRE (subs2);
        BOOST_REQUIRE_EQUAL (subs2->_fonts.size(), 1);
 
-       boost::uintmax_t const size = boost::filesystem::file_size ("test/data/dummy.ttf");
-       FILE* f = dcp::fopen_boost ("test/data/dummy.ttf", "rb");
+       auto const size = boost::filesystem::file_size ("test/data/dummy.ttf");
+       auto f = dcp::fopen_boost ("test/data/dummy.ttf", "rb");
        BOOST_REQUIRE (f);
        shared_array<uint8_t> ref (new uint8_t[size]);
        fread (ref.get(), 1, size, f);
@@ -92,29 +93,29 @@ BOOST_AUTO_TEST_CASE (smpte_dcp_font_test)
        boost::filesystem::path directory = "build/test/smpte_dcp_font_test";
        dcp::DCP dcp (directory);
 
-       shared_ptr<dcp::SMPTESubtitleAsset> subs (new dcp::SMPTESubtitleAsset ());
+       auto subs = make_shared<dcp::SMPTESubtitleAsset>();
        subs->add_font ("theFontId", dcp::ArrayData("test/data/dummy.ttf"));
        subs->write (directory / "frobozz.mxf");
 
-       shared_ptr<dcp::Reel> reel (new dcp::Reel ());
-       reel->add (shared_ptr<dcp::ReelAsset> (new dcp::ReelSubtitleAsset (subs, dcp::Fraction (24, 1), 24, 0)));
+       auto reel = make_shared<dcp::Reel>();
+       reel->add (make_shared<dcp::ReelSubtitleAsset>(subs, dcp::Fraction (24, 1), 24, 0));
 
-       shared_ptr<dcp::CPL> cpl (new dcp::CPL ("", dcp::TRAILER));
+       auto cpl = make_shared<dcp::CPL>("", dcp::ContentKind::TRAILER);
        cpl->add (reel);
 
        dcp.add (cpl);
-       dcp.write_xml (dcp::SMPTE);
+       dcp.write_xml (dcp::Standard::SMPTE);
 
        dcp::DCP dcp2 (directory);
        dcp2.read ();
-       shared_ptr<dcp::SubtitleAsset> subs2 = dynamic_pointer_cast<dcp::SubtitleAsset> (
+       auto subs2 = dynamic_pointer_cast<dcp::SubtitleAsset> (
                dcp2.cpls().front()->reels().front()->main_subtitle()->asset_ref().asset()
                );
        BOOST_REQUIRE (subs2);
        BOOST_REQUIRE_EQUAL (subs2->_fonts.size(), 1);
 
-       boost::uintmax_t const size = boost::filesystem::file_size ("test/data/dummy.ttf");
-       FILE* f = dcp::fopen_boost ("test/data/dummy.ttf", "rb");
+       auto const size = boost::filesystem::file_size ("test/data/dummy.ttf");
+       auto f = dcp::fopen_boost ("test/data/dummy.ttf", "rb");
        BOOST_REQUIRE (f);
        shared_array<uint8_t> ref (new uint8_t[size]);
        fread (ref.get(), 1, size, f);
index cdcbe495b9cce0e8f63042d97ef0d78fa59949bd..40030f7be8f877db24b535101c2fca3f39ee807f 100644 (file)
@@ -68,7 +68,7 @@ BOOST_AUTO_TEST_CASE (dcp_test1)
        RNGFixer fixer;
 
        make_simple("build/test/DCP/dcp_test1")->write_xml(
-               dcp::SMPTE, "OpenDCP 0.0.25", "OpenDCP 0.0.25", "2012-07-17T04:45:18+00:00", "A Test DCP"
+               dcp::Standard::SMPTE, "OpenDCP 0.0.25", "OpenDCP 0.0.25", "2012-07-17T04:45:18+00:00", "A Test DCP"
                );
 
        /* build/test/DCP/dcp_test1 is checked against test/ref/DCP/dcp_test1 by run/tests */
@@ -89,7 +89,7 @@ BOOST_AUTO_TEST_CASE (dcp_test2)
        boost::filesystem::remove_all ("build/test/DCP/dcp_test2");
        boost::filesystem::create_directories ("build/test/DCP/dcp_test2");
        dcp::DCP d ("build/test/DCP/dcp_test2");
-       shared_ptr<dcp::CPL> cpl (new dcp::CPL ("A Test DCP", dcp::FEATURE));
+       auto cpl = make_shared<dcp::CPL>("A Test DCP", dcp::ContentKind::FEATURE);
        cpl->set_content_version (
                dcp::ContentVersion("urn:uri:81fb54df-e1bf-4647-8788-ea7ba154375b_2012-07-17T04:45:18+00:00", "81fb54df-e1bf-4647-8788-ea7ba154375b_2012-07-17T04:45:18+00:00")
                );
@@ -98,7 +98,7 @@ BOOST_AUTO_TEST_CASE (dcp_test2)
        cpl->set_issue_date ("2012-07-17T04:45:18+00:00");
        cpl->set_annotation_text ("A Test DCP");
 
-       shared_ptr<dcp::StereoPictureAsset> mp (new dcp::StereoPictureAsset (dcp::Fraction (24, 1), dcp::SMPTE));
+       shared_ptr<dcp::StereoPictureAsset> mp (new dcp::StereoPictureAsset (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_test2/video.mxf", false);
        dcp::ArrayData j2c ("test/data/flat_red.j2c");
@@ -110,7 +110,7 @@ BOOST_AUTO_TEST_CASE (dcp_test2)
        }
        picture_writer->finalize ();
 
-       shared_ptr<dcp::SoundAsset> ms (new dcp::SoundAsset(dcp::Fraction(24, 1), 48000, 1, dcp::LanguageTag("en-GB"), dcp::SMPTE));
+       shared_ptr<dcp::SoundAsset> ms (new dcp::SoundAsset(dcp::Fraction(24, 1), 48000, 1, dcp::LanguageTag("en-GB"), dcp::Standard::SMPTE));
        ms->set_metadata (mxf_meta);
        shared_ptr<dcp::SoundAssetWriter> sound_writer = ms->start_write ("build/test/DCP/dcp_test2/audio.mxf", vector<dcp::Channel>());
 
@@ -131,16 +131,14 @@ BOOST_AUTO_TEST_CASE (dcp_test2)
 
        sound_writer->finalize ();
 
-       cpl->add (shared_ptr<dcp::Reel> (
-                         new dcp::Reel (
-                                 shared_ptr<dcp::ReelStereoPictureAsset> (new dcp::ReelStereoPictureAsset (mp, 0)),
-                                 shared_ptr<dcp::ReelSoundAsset> (new dcp::ReelSoundAsset (ms, 0))
-                                 )
+       cpl->add (make_shared<dcp::Reel>(
+                         make_shared<dcp::ReelStereoPictureAsset>(mp, 0),
+                         make_shared<dcp::ReelSoundAsset>(ms, 0)
                          ));
 
        d.add (cpl);
 
-       d.write_xml (dcp::SMPTE, "OpenDCP 0.0.25", "OpenDCP 0.0.25", "2012-07-17T04:45:18+00:00", "Created by libdcp");
+       d.write_xml (dcp::Standard::SMPTE, "OpenDCP 0.0.25", "OpenDCP 0.0.25", "2012-07-17T04:45:18+00:00", "Created by libdcp");
 
        /* build/test/DCP/dcp_test2 is checked against test/ref/DCP/dcp_test2 by run/tests */
 }
@@ -200,7 +198,7 @@ test_rewriting_sound(string name, bool modify)
        reel->add(make_shared<dcp::ReelMonoPictureAsset>(make_shared<dcp::MonoPictureAsset>(path("build") / "test" / name / picture), 0));
 
        auto reader = A_sound->asset()->start_read();
-       auto sound = make_shared<dcp::SoundAsset>(A_sound->asset()->edit_rate(), A_sound->asset()->sampling_rate(), A_sound->asset()->channels(), dcp::LanguageTag("en-US"), dcp::SMPTE);
+       auto sound = make_shared<dcp::SoundAsset>(A_sound->asset()->edit_rate(), A_sound->asset()->sampling_rate(), A_sound->asset()->channels(), dcp::LanguageTag("en-US"), dcp::Standard::SMPTE);
        auto writer = sound->start_write(path("build") / "test" / name / "pcm_8246f87f-e1df-4c42-a290-f3b3069ff021.mxf", {});
 
        bool need_to_modify = modify;
@@ -229,11 +227,11 @@ test_rewriting_sound(string name, bool modify)
        reel->add(make_shared<dcp::ReelSoundAsset>(sound, 0));
        reel->add(simple_markers());
 
-       auto cpl = make_shared<dcp::CPL>("A Test DCP", dcp::TRAILER);
+       auto cpl = make_shared<dcp::CPL>("A Test DCP", dcp::ContentKind::TRAILER);
        cpl->add (reel);
 
        B.add (cpl);
-       B.write_xml (dcp::SMPTE);
+       B.write_xml (dcp::Standard::SMPTE);
 
        dcp::EqualityOptions eq;
        eq.reel_hashes_can_differ = true;
@@ -272,7 +270,7 @@ BOOST_AUTO_TEST_CASE (dcp_test5)
        boost::filesystem::remove_all ("build/test/DCP/dcp_test5");
        boost::filesystem::create_directories ("build/test/DCP/dcp_test5");
        dcp::DCP d ("build/test/DCP/dcp_test5");
-       shared_ptr<dcp::CPL> cpl (new dcp::CPL ("A Test DCP", dcp::FEATURE));
+       auto cpl = make_shared<dcp::CPL>("A Test DCP", dcp::ContentKind::FEATURE);
        cpl->set_content_version (
                dcp::ContentVersion("urn:uri:81fb54df-e1bf-4647-8788-ea7ba154375b_2012-07-17T04:45:18+00:00", "81fb54df-e1bf-4647-8788-ea7ba154375b_2012-07-17T04:45:18+00:00")
                );
@@ -281,7 +279,7 @@ BOOST_AUTO_TEST_CASE (dcp_test5)
        cpl->set_issue_date ("2012-07-17T04:45:18+00:00");
        cpl->set_annotation_text ("A Test DCP");
 
-       shared_ptr<dcp::MonoPictureAsset> mp (new dcp::MonoPictureAsset (dcp::Fraction (24, 1), dcp::SMPTE));
+       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);
        dcp::ArrayData j2c ("test/data/flat_red.j2c");
@@ -290,7 +288,7 @@ BOOST_AUTO_TEST_CASE (dcp_test5)
        }
        picture_writer->finalize ();
 
-       shared_ptr<dcp::SoundAsset> ms (new dcp::SoundAsset(dcp::Fraction(24, 1), 48000, 1, dcp::LanguageTag("en-GB"), dcp::SMPTE));
+       auto ms = make_shared<dcp::SoundAsset>(dcp::Fraction(24, 1), 48000, 1, dcp::LanguageTag("en-GB"), dcp::Standard::SMPTE);
        ms->set_metadata (mxf_meta);
        shared_ptr<dcp::SoundAssetWriter> sound_writer = ms->start_write ("build/test/DCP/dcp_test5/audio.mxf", vector<dcp::Channel>());
 
@@ -325,7 +323,7 @@ BOOST_AUTO_TEST_CASE (dcp_test5)
 
        d.add (cpl);
 
-       d.write_xml (dcp::SMPTE, "OpenDCP 0.0.25", "OpenDCP 0.0.25", "2012-07-17T04:45:18+00:00", "Created by libdcp");
+       d.write_xml (dcp::Standard::SMPTE, "OpenDCP 0.0.25", "OpenDCP 0.0.25", "2012-07-17T04:45:18+00:00", "Created by libdcp");
 
        /* build/test/DCP/dcp_test5 is checked against test/ref/DCP/dcp_test5 by run/tests */
 }
@@ -350,7 +348,7 @@ BOOST_AUTO_TEST_CASE (dcp_test7)
        RNGFixer fix;
 
        make_simple("build/test/DCP/dcp_test7")->write_xml(
-               dcp::INTEROP,  "OpenDCP 0.0.25", "OpenDCP 0.0.25", "2012-07-17T04:45:18+00:00", "Created by libdcp"
+               dcp::Standard::INTEROP, "OpenDCP 0.0.25", "OpenDCP 0.0.25", "2012-07-17T04:45:18+00:00", "Created by libdcp"
                );
 
        /* build/test/DCP/dcp_test7 is checked against test/ref/DCP/dcp_test7 by run/tests */
index 504e9fd1b1689557bfbcb50095f4a0952112217a..4b529be68d44eed0d81a954f56893d3639d6b841 100644 (file)
@@ -47,7 +47,7 @@ BOOST_AUTO_TEST_CASE (dcp_time)
        BOOST_CHECK_EQUAL (t.s, 34);
        BOOST_CHECK_EQUAL (t.m, 18);
        BOOST_CHECK_EQUAL (t.h, 11);
-       BOOST_CHECK_EQUAL (t.as_string(dcp::INTEROP), "11:18:34:073");
+       BOOST_CHECK_EQUAL (t.as_string(dcp::Standard::INTEROP), "11:18:34:073");
 
        /* Use a tcr of 24 so that the editable event is a frame */
        dcp::Time a (3, 2, 3, 4, 24);
@@ -58,7 +58,7 @@ BOOST_AUTO_TEST_CASE (dcp_time)
        BOOST_CHECK_EQUAL (r.m, 58);
        BOOST_CHECK_EQUAL (r.s, 58);
        BOOST_CHECK_EQUAL (r.e, 23);
-       BOOST_CHECK_EQUAL (r.as_string(dcp::INTEROP), "00:58:58:023");
+       BOOST_CHECK_EQUAL (r.as_string(dcp::Standard::INTEROP), "00:58:58:023");
 
        /* Different tcr (25) */
        a = dcp::Time (1, 58, 56, 2, 25);
@@ -68,8 +68,8 @@ BOOST_AUTO_TEST_CASE (dcp_time)
        BOOST_CHECK_EQUAL (r.m, 6);
        BOOST_CHECK_EQUAL (r.s, 8);
        BOOST_CHECK_EQUAL (r.e, 3);
-       BOOST_CHECK_EQUAL (r.as_string(dcp::INTEROP), "03:06:08:003");
-       BOOST_CHECK_EQUAL (r.as_string(dcp::SMPTE), "03:06:08:03");
+       BOOST_CHECK_EQUAL (r.as_string(dcp::Standard::INTEROP), "03:06:08:003");
+       BOOST_CHECK_EQUAL (r.as_string(dcp::Standard::SMPTE), "03:06:08:03");
 
        /* Another arbitrary tcr (30) */
        a = dcp::Time (24, 12, 6, 3, 30);
index bcc0321126579004e60ef9b309c96d7713d164b0..3be4b8f98d544603eb9ed7d71a993b259cd3501f 100644 (file)
 /** Very simple tests of Effect-related stuff */
 BOOST_AUTO_TEST_CASE (effect_test)
 {
-       BOOST_CHECK_EQUAL (dcp::effect_to_string (dcp::NONE), "none");
-       BOOST_CHECK_EQUAL (dcp::effect_to_string (dcp::BORDER), "border");
-       BOOST_CHECK_EQUAL (dcp::effect_to_string (dcp::SHADOW), "shadow");
+       BOOST_CHECK_EQUAL (dcp::effect_to_string(dcp::Effect::NONE), "none");
+       BOOST_CHECK_EQUAL (dcp::effect_to_string(dcp::Effect::BORDER), "border");
+       BOOST_CHECK_EQUAL (dcp::effect_to_string(dcp::Effect::SHADOW), "shadow");
 
-       BOOST_CHECK_THROW (dcp::effect_to_string ((dcp::Effect) 42), dcp::MiscError);
+       BOOST_CHECK_THROW (dcp::effect_to_string((dcp::Effect) 42), dcp::MiscError);
 
-       BOOST_CHECK_EQUAL (dcp::string_to_effect ("none"), dcp::NONE);
-       BOOST_CHECK_EQUAL (dcp::string_to_effect ("border"), dcp::BORDER);
-       BOOST_CHECK_EQUAL (dcp::string_to_effect ("shadow"), dcp::SHADOW);
-       BOOST_CHECK_THROW (dcp::string_to_effect ("fish"), dcp::ReadError);
+       BOOST_CHECK_EQUAL (dcp::string_to_effect("none"), dcp::Effect::NONE);
+       BOOST_CHECK_EQUAL (dcp::string_to_effect("border"), dcp::Effect::BORDER);
+       BOOST_CHECK_EQUAL (dcp::string_to_effect("shadow"), dcp::Effect::SHADOW);
+       BOOST_CHECK_THROW (dcp::string_to_effect("fish"), dcp::ReadError);
 }
index 0cba37fcf67bf2b4dc6da250b14d836d6fc12d8a..becd1df77b17dfd5a2cac4d87719ddcdc29c8919 100644 (file)
@@ -82,11 +82,11 @@ BOOST_AUTO_TEST_CASE (encryption_test)
        signer->add (dcp::Certificate (dcp::file_to_string ("test/ref/crypt/leaf.signed.pem")));
        signer->set_key (dcp::file_to_string ("test/ref/crypt/leaf.key"));
 
-       shared_ptr<dcp::CPL> cpl (new dcp::CPL ("A Test DCP", dcp::FEATURE));
+       shared_ptr<dcp::CPL> cpl (new dcp::CPL ("A Test DCP", dcp::ContentKind::FEATURE));
 
        dcp::Key key;
 
-       shared_ptr<dcp::MonoPictureAsset> mp (new dcp::MonoPictureAsset (dcp::Fraction (24, 1), dcp::SMPTE));
+       shared_ptr<dcp::MonoPictureAsset> mp (new dcp::MonoPictureAsset (dcp::Fraction (24, 1), dcp::Standard::SMPTE));
        mp->set_metadata (mxf_metadata);
        mp->set_key (key);
 
@@ -97,7 +97,7 @@ BOOST_AUTO_TEST_CASE (encryption_test)
        }
        writer->finalize ();
 
-       shared_ptr<dcp::SoundAsset> ms (new dcp::SoundAsset (dcp::Fraction (24, 1), 48000, 1, dcp::LanguageTag("en-GB"), dcp::SMPTE));
+       shared_ptr<dcp::SoundAsset> ms (new dcp::SoundAsset (dcp::Fraction (24, 1), 48000, 1, dcp::LanguageTag("en-GB"), dcp::Standard::SMPTE));
        ms->set_metadata (mxf_metadata);
        ms->set_key (key);
        shared_ptr<dcp::SoundAssetWriter> sound_writer = ms->start_write ("build/test/DCP/encryption_test/audio.mxf", vector<dcp::Channel>());
@@ -134,7 +134,7 @@ BOOST_AUTO_TEST_CASE (encryption_test)
 
        d.add (cpl);
 
-       d.write_xml (dcp::SMPTE, "OpenDCP 0.0.25", "OpenDCP 0.0.25", "2012-07-17T04:45:18+00:00", "Created by libdcp", signer);
+       d.write_xml (dcp::Standard::SMPTE, "OpenDCP 0.0.25", "OpenDCP 0.0.25", "2012-07-17T04:45:18+00:00", "Created by libdcp", signer);
 
        dcp::DecryptedKDM kdm (
                cpl,
@@ -146,7 +146,7 @@ BOOST_AUTO_TEST_CASE (encryption_test)
                "2012-07-17T04:45:18+00:00"
                );
 
-       kdm.encrypt (signer, signer->leaf(), vector<string>(), dcp::MODIFIED_TRANSITIONAL_1, true, 0).as_xml ("build/test/encryption_test.kdm.xml");
+       kdm.encrypt (signer, signer->leaf(), vector<string>(), dcp::Formulation::MODIFIED_TRANSITIONAL_1, true, 0).as_xml("build/test/encryption_test.kdm.xml");
 
        int r = system (
                "xmllint --path schema --nonet --noout --schema schema/SMPTE-430-1-2006-Amd-1-2009-KDM.xsd build/test/encryption_test.kdm.xml "
index e01181d1bb1a1529c26f4f2c1ac2e4f47ff55685..4388cbc078c588f539c10280ed4e384a60f744f1 100644 (file)
@@ -39,6 +39,7 @@
 
 using std::string;
 using std::shared_ptr;
+using std::make_shared;
 
 static void
 check (unsigned int* seed, shared_ptr<dcp::PictureAssetWriter> writer, string hash)
@@ -59,8 +60,8 @@ check (unsigned int* seed, shared_ptr<dcp::PictureAssetWriter> writer, string ha
 /** Test the hashing of data written to JPEG2000 MXFs with some random inputs */
 BOOST_AUTO_TEST_CASE (frame_info_hash_test)
 {
-       shared_ptr<dcp::MonoPictureAsset> mp (new dcp::MonoPictureAsset (dcp::Fraction (24, 1), dcp::SMPTE));
-       shared_ptr<dcp::PictureAssetWriter> writer = mp->start_write ("build/test/frame_info_hash_test.mxf", false);
+       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);
 
        unsigned int seed = 42;
 
index 6e0dcb6766f8c144612eb2b1744c1969eed6ba99..506f6c435643c5e28bc2a416b012784a9aa0899f 100644 (file)
@@ -163,7 +163,7 @@ kdm_forensic_test (cxml::Document& doc, bool picture, optional<int> audio)
        signer->set_key(dcp::file_to_string("test/data/private.key"));
 
        dcp::EncryptedKDM kdm = decrypted.encrypt (
-               signer, signer->leaf(), vector<string>(), dcp::MODIFIED_TRANSITIONAL_1, picture, audio
+               signer, signer->leaf(), vector<string>(), dcp::Formulation::MODIFIED_TRANSITIONAL_1, picture, audio
                );
 
        /* Check that we can pass this through correctly */
@@ -237,14 +237,14 @@ BOOST_AUTO_TEST_CASE (validity_period_test1)
        auto signer = make_shared<dcp::CertificateChain>(dcp::file_to_string("test/data/certificate_chain"));
        signer->set_key(dcp::file_to_string("test/data/private.key"));
 
-       auto asset = make_shared<dcp::MonoPictureAsset>(dcp::Fraction(24, 1), dcp::SMPTE);
+       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);
        dcp::ArrayData frame ("test/data/flat_red.j2c");
        writer->write (frame.data(), frame.size());
        auto reel = make_shared<dcp::Reel>();
        reel->add(make_shared<dcp::ReelMonoPictureAsset>(asset, 0));
-       auto cpl = make_shared<dcp::CPL>("test", dcp::FEATURE);
+       auto cpl = make_shared<dcp::CPL>("test", dcp::ContentKind::FEATURE);
        cpl->add(reel);
 
        /* This certificate_chain is valid from 26/12/2012 to 24/12/2022 */
@@ -253,14 +253,14 @@ BOOST_AUTO_TEST_CASE (validity_period_test1)
        BOOST_CHECK_NO_THROW(
                dcp::DecryptedKDM(
                        cpl, dcp::Key(dcp::file_to_string("test/data/private.key")), dcp::LocalTime("2015-01-01T00:00:00"), dcp::LocalTime("2017-07-31T00:00:00"), "", "", ""
-                       ).encrypt(signer, signer->leaf(), vector<string>(), dcp::MODIFIED_TRANSITIONAL_1, true, optional<int>())
+                       ).encrypt(signer, signer->leaf(), vector<string>(), dcp::Formulation::MODIFIED_TRANSITIONAL_1, true, optional<int>())
                );
 
        /* Starts too early */
        BOOST_CHECK_THROW(
                dcp::DecryptedKDM(
                        cpl, dcp::Key(dcp::file_to_string("test/data/private.key")), dcp::LocalTime("1981-01-01T00:00:00"), dcp::LocalTime("2017-07-31T00:00:00"), "", "", ""
-                       ).encrypt(signer, signer->leaf(), vector<string>(), dcp::MODIFIED_TRANSITIONAL_1, true, optional<int>()),
+                       ).encrypt(signer, signer->leaf(), vector<string>(), dcp::Formulation::MODIFIED_TRANSITIONAL_1, true, optional<int>()),
                dcp::BadKDMDateError
                );
 
@@ -268,7 +268,7 @@ BOOST_AUTO_TEST_CASE (validity_period_test1)
        BOOST_CHECK_THROW(
                dcp::DecryptedKDM(
                        cpl, dcp::Key(dcp::file_to_string("test/data/private.key")), dcp::LocalTime("2015-01-01T00:00:00"), dcp::LocalTime("2035-07-31T00:00:00"), "", "", ""
-                       ).encrypt(signer, signer->leaf(), vector<string>(), dcp::MODIFIED_TRANSITIONAL_1, true, optional<int>()),
+                       ).encrypt(signer, signer->leaf(), vector<string>(), dcp::Formulation::MODIFIED_TRANSITIONAL_1, true, optional<int>()),
                dcp::BadKDMDateError
                );
 
@@ -276,7 +276,7 @@ BOOST_AUTO_TEST_CASE (validity_period_test1)
        BOOST_CHECK_THROW(
                dcp::DecryptedKDM(
                        cpl, dcp::Key(dcp::file_to_string("test/data/private.key")), dcp::LocalTime("1981-01-01T00:00:00"), dcp::LocalTime("2035-07-31T00:00:00"), "", "", ""
-                       ).encrypt(signer, signer->leaf(), vector<string>(), dcp::MODIFIED_TRANSITIONAL_1, true, optional<int>()),
+                       ).encrypt(signer, signer->leaf(), vector<string>(), dcp::Formulation::MODIFIED_TRANSITIONAL_1, true, optional<int>()),
                dcp::BadKDMDateError
                );
 }
index 07ba5a801bd1993c6a789556e6c3c38f0b3015f9..217900c02f5281bcd010884bc45f001c17061c23 100644 (file)
@@ -45,7 +45,7 @@ using std::make_shared;
 
 BOOST_AUTO_TEST_CASE (markers_write_test)
 {
-       dcp::CPL cpl("Markers test", dcp::TEST);
+       dcp::CPL cpl("Markers test", dcp::ContentKind::TEST);
 
        auto asset = make_shared<dcp::ReelMarkersAsset>(dcp::Fraction(24, 1), 432000, 0);
        asset->set (dcp::Marker::FFOC, dcp::Time(1, 1, 9, 16, 24));
@@ -64,7 +64,7 @@ BOOST_AUTO_TEST_CASE (markers_write_test)
 
        cpl.add (reel);
 
-       cpl.write_xml ("build/test/markers_test.xml", dcp::SMPTE, shared_ptr<dcp::CertificateChain>());
+       cpl.write_xml ("build/test/markers_test.xml", dcp::Standard::SMPTE, {});
 }
 
 static void
index faff34390b62d0ae710ea429d1aaf9792469d365..8467b49a04af29fc4de3e68bc84f36622841d835 100644 (file)
@@ -62,13 +62,13 @@ BOOST_AUTO_TEST_CASE (parse_mca_descriptors_from_mxf_test)
                reel->add (black_picture_asset(dcp::String::compose("build/test/parse_mca_descriptors_from_mxf_test%1", i), 24));
                reel->add (reel_sound_asset);
 
-               dcp::CPL cpl("", dcp::FEATURE);
+               dcp::CPL cpl("", dcp::ContentKind::FEATURE);
                cpl.add (reel);
                cpl.set_main_sound_configuration("51/L,R,C,LFE,Ls,Rs");
                cpl.set_main_sound_sample_rate(48000);
                cpl.set_main_picture_stored_area(dcp::Size(1998, 1080));
                cpl.set_main_picture_active_area(dcp::Size(1998, 1080));
-               cpl.write_xml (dcp::String::compose("build/test/parse_mca_descriptors_from_mxf_test%1/cpl.xml", i), dcp::SMPTE, shared_ptr<dcp::CertificateChain>());
+               cpl.write_xml (dcp::String::compose("build/test/parse_mca_descriptors_from_mxf_test%1/cpl.xml", i), dcp::Standard::SMPTE, shared_ptr<dcp::CertificateChain>());
 
                cxml::Document ref("CompositionPlaylist", private_test / dcp::String::compose("51_sound_with_mca_%1.cpl", i));
                cxml::Document check("CompositionPlaylist", dcp::String::compose("build/test/parse_mca_descriptors_from_mxf_test%1/cpl.xml", i));
@@ -91,14 +91,14 @@ BOOST_AUTO_TEST_CASE (parse_mca_descriptors_from_mxf_test)
 /** Reproduce the MCA tags from one of the example files using libdcp */
 BOOST_AUTO_TEST_CASE (write_mca_descriptors_to_mxf_test)
 {
-       shared_ptr<dcp::SoundAsset> sound_asset(new dcp::SoundAsset(dcp::Fraction(24, 1), 48000, 6, dcp::LanguageTag("en-US"), dcp::SMPTE));
+       shared_ptr<dcp::SoundAsset> sound_asset(new dcp::SoundAsset(dcp::Fraction(24, 1), 48000, 6, dcp::LanguageTag("en-US"), dcp::Standard::SMPTE));
        vector<dcp::Channel> channels;
-       channels.push_back (dcp::LEFT);
-       channels.push_back (dcp::RIGHT);
-       channels.push_back (dcp::CENTRE);
-       channels.push_back (dcp::LFE);
-       channels.push_back (dcp::LS);
-       channels.push_back (dcp::RS);
+       channels.push_back (dcp::Channel::LEFT);
+       channels.push_back (dcp::Channel::RIGHT);
+       channels.push_back (dcp::Channel::CENTRE);
+       channels.push_back (dcp::Channel::LFE);
+       channels.push_back (dcp::Channel::LS);
+       channels.push_back (dcp::Channel::RS);
        shared_ptr<dcp::SoundAssetWriter> writer = sound_asset->start_write("build/test/write_mca_descriptors_to_mxf_test.mxf", channels);
 
        float* samples[6];
@@ -122,13 +122,13 @@ BOOST_AUTO_TEST_CASE (write_mca_descriptors_to_mxf_test)
        reel->add (black_picture_asset("build/test/write_mca_descriptors_to_mxf_test", 24));
        reel->add (reel_sound_asset);
 
-       dcp::CPL cpl("", dcp::FEATURE);
+       dcp::CPL cpl("", dcp::ContentKind::FEATURE);
        cpl.add (reel);
        cpl.set_main_sound_configuration("51/L,R,C,LFE,Ls,Rs");
        cpl.set_main_sound_sample_rate(48000);
        cpl.set_main_picture_stored_area(dcp::Size(1998, 1080));
        cpl.set_main_picture_active_area(dcp::Size(1998, 1080));
-       cpl.write_xml ("build/test/write_mca_descriptors_to_mxf_test/cpl.xml", dcp::SMPTE, shared_ptr<dcp::CertificateChain>());
+       cpl.write_xml ("build/test/write_mca_descriptors_to_mxf_test/cpl.xml", dcp::Standard::SMPTE, shared_ptr<dcp::CertificateChain>());
 
        cxml::Document ref("CompositionPlaylist", private_test / "51_sound_with_mca_1.cpl");
        cxml::Document check("CompositionPlaylist", "build/test/write_mca_descriptors_to_mxf_test/cpl.xml");
index c529e5ea3c1c98dfdfe2c54dcd35a1abd5169797..9c5450914a10a12f250684deeae60ca6a50e773b 100644 (file)
@@ -50,9 +50,9 @@ BOOST_AUTO_TEST_CASE (read_dcp_test1)
 
        BOOST_REQUIRE (cpls[0]->annotation_text());
        BOOST_CHECK_EQUAL (cpls[0]->annotation_text().get(), "A Test DCP");
-       BOOST_CHECK_EQUAL (cpls[0]->content_kind(), dcp::TRAILER);
+       BOOST_CHECK_EQUAL (cpls[0]->content_kind(), dcp::ContentKind::TRAILER);
        BOOST_REQUIRE (d.standard());
-       BOOST_CHECK_EQUAL (d.standard(), dcp::SMPTE);
+       BOOST_CHECK_EQUAL (d.standard(), dcp::Standard::SMPTE);
 }
 
 /** Read an Interop DCP that is in git and make sure that basic stuff is read in correctly */
@@ -66,7 +66,7 @@ BOOST_AUTO_TEST_CASE (read_dcp_test2)
 
        BOOST_REQUIRE (cpls[0]->annotation_text());
        BOOST_CHECK_EQUAL (cpls[0]->annotation_text().get(), "Test_FTR-1_F-119_10_2K_20160524_IOP_OV");
-       BOOST_CHECK_EQUAL (cpls[0]->content_kind(), dcp::FEATURE);
+       BOOST_CHECK_EQUAL (cpls[0]->content_kind(), dcp::ContentKind::FEATURE);
        BOOST_REQUIRE (d.standard());
-       BOOST_CHECK_EQUAL (d.standard(), dcp::INTEROP);
+       BOOST_CHECK_EQUAL (d.standard(), dcp::Standard::INTEROP);
 }
index d37e60d4dad577ea54c43762cce1d3a085a45dc9..48892db58b0ff6b81eb36694186fa3718d401b8a 100644 (file)
@@ -74,12 +74,12 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test1)
                                   dcp::Time (0, 0, 5, 198, 250),
                                   dcp::Time (0, 0, 7, 115, 250),
                                   0,
-                                  dcp::HALIGN_CENTER,
+                                  dcp::HAlign::CENTER,
                                   0.15,
-                                  dcp::VALIGN_BOTTOM,
-                                  dcp::DIRECTION_LTR,
+                                  dcp::VAlign::BOTTOM,
+                                  dcp::Direction::LTR,
                                   "My jacket was Idi Amin's",
-                                  dcp::BORDER,
+                                  dcp::Effect::BORDER,
                                   dcp::Colour (0, 0, 0),
                                   dcp::Time (0, 0, 0, 1, 250),
                                   dcp::Time (0, 0, 0, 1, 250)
@@ -99,12 +99,12 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test1)
                                   dcp::Time (0, 0, 7, 177, 250),
                                   dcp::Time (0, 0, 11, 31, 250),
                                   0,
-                                  dcp::HALIGN_CENTER,
+                                  dcp::HAlign::CENTER,
                                   0.21,
-                                  dcp::VALIGN_BOTTOM,
-                                  dcp::DIRECTION_LTR,
+                                  dcp::VAlign::BOTTOM,
+                                  dcp::Direction::LTR,
                                   "My corset was H.M. The Queen's",
-                                  dcp::BORDER,
+                                  dcp::Effect::BORDER,
                                   dcp::Colour (0, 0, 0),
                                   dcp::Time (0, 0, 0, 1, 250),
                                   dcp::Time (0, 0, 0, 1, 250)
@@ -121,12 +121,12 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test1)
                                   dcp::Time (0, 0, 7, 177, 250),
                                   dcp::Time (0, 0, 11, 31, 250),
                                   0,
-                                  dcp::HALIGN_CENTER,
+                                  dcp::HAlign::CENTER,
                                   0.15,
-                                  dcp::VALIGN_BOTTOM,
-                                  dcp::DIRECTION_LTR,
+                                  dcp::VAlign::BOTTOM,
+                                  dcp::Direction::LTR,
                                   "My large wonderbra",
-                                  dcp::BORDER,
+                                  dcp::Effect::BORDER,
                                   dcp::Colour (0, 0, 0),
                                   dcp::Time (0, 0, 0, 1, 250),
                                   dcp::Time (0, 0, 0, 1, 250)
@@ -146,12 +146,12 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test1)
                                   dcp::Time (0, 0, 11, 94, 250),
                                   dcp::Time (0, 0, 13, 63, 250),
                                   0,
-                                  dcp::HALIGN_CENTER,
+                                  dcp::HAlign::CENTER,
                                   0.15,
-                                  dcp::VALIGN_BOTTOM,
-                                  dcp::DIRECTION_LTR,
+                                  dcp::VAlign::BOTTOM,
+                                  dcp::Direction::LTR,
                                   "Once belonged to the Shah",
-                                  dcp::BORDER,
+                                  dcp::Effect::BORDER,
                                   dcp::Colour (0, 0, 0),
                                   dcp::Time (0, 0, 0, 1, 250),
                                   dcp::Time (0, 0, 0, 1, 250)
@@ -171,12 +171,12 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test1)
                                   dcp::Time (0, 0, 13, 104, 250),
                                   dcp::Time (0, 0, 15, 177, 250),
                                   0,
-                                  dcp::HALIGN_CENTER,
+                                  dcp::HAlign::CENTER,
                                   0.15,
-                                  dcp::VALIGN_BOTTOM,
-                                  dcp::DIRECTION_LTR,
+                                  dcp::VAlign::BOTTOM,
+                                  dcp::Direction::LTR,
                                   "And these are Roy Hattersley's jeans",
-                                  dcp::BORDER,
+                                  dcp::Effect::BORDER,
                                   dcp::Colour (0, 0, 0),
                                   dcp::Time (0, 0, 0, 1, 250),
                                   dcp::Time (0, 0, 0, 1, 250)
@@ -202,12 +202,12 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2)
                                   dcp::Time (0, 0, 41, 62, 250),
                                   dcp::Time (0, 0, 43, 52, 250),
                                   0,
-                                  dcp::HALIGN_CENTER,
+                                  dcp::HAlign::CENTER,
                                   0.89,
-                                  dcp::VALIGN_TOP,
-                                  dcp::DIRECTION_LTR,
+                                  dcp::VAlign::TOP,
+                                  dcp::Direction::LTR,
                                   "At afternoon tea with John Peel",
-                                  dcp::BORDER,
+                                  dcp::Effect::BORDER,
                                   dcp::Colour (0, 0, 0),
                                   dcp::Time (0, 0, 0, 0, 250),
                                   dcp::Time (0, 0, 0, 0, 250)
@@ -224,12 +224,12 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2)
                                   dcp::Time (0, 0, 41, 62, 250),
                                   dcp::Time (0, 0, 43, 52, 250),
                                   0,
-                                  dcp::HALIGN_CENTER,
+                                  dcp::HAlign::CENTER,
                                   0.95,
-                                  dcp::VALIGN_TOP,
-                                  dcp::DIRECTION_LTR,
+                                  dcp::VAlign::TOP,
+                                  dcp::Direction::LTR,
                                   "I enquired if his accent was real",
-                                  dcp::BORDER,
+                                  dcp::Effect::BORDER,
                                   dcp::Colour (0, 0, 0),
                                   dcp::Time (0, 0, 0, 0, 250),
                                   dcp::Time (0, 0, 0, 0, 250)
@@ -249,12 +249,12 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2)
                                   dcp::Time (0, 0, 50, 42, 250),
                                   dcp::Time (0, 0, 52, 21, 250),
                                   0,
-                                  dcp::HALIGN_CENTER,
+                                  dcp::HAlign::CENTER,
                                   0.89,
-                                  dcp::VALIGN_TOP,
-                                  dcp::DIRECTION_LTR,
+                                  dcp::VAlign::TOP,
+                                  dcp::Direction::LTR,
                                   "He said \"out of the house",
-                                  dcp::BORDER,
+                                  dcp::Effect::BORDER,
                                   dcp::Colour (0, 0, 0),
                                   dcp::Time (0, 0, 0, 0, 250),
                                   dcp::Time (0, 0, 0, 0, 250)
@@ -271,12 +271,12 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2)
                                   dcp::Time (0, 0, 50, 42, 250),
                                   dcp::Time (0, 0, 52, 21, 250),
                                   0,
-                                  dcp::HALIGN_CENTER,
+                                  dcp::HAlign::CENTER,
                                   0.95,
-                                  dcp::VALIGN_TOP,
-                                  dcp::DIRECTION_LTR,
+                                  dcp::VAlign::TOP,
+                                  dcp::Direction::LTR,
                                   "I'm incredibly scouse",
-                                  dcp::BORDER,
+                                  dcp::Effect::BORDER,
                                   dcp::Colour (0, 0, 0),
                                   dcp::Time (0, 0, 0, 0, 250),
                                   dcp::Time (0, 0, 0, 0, 250)
@@ -286,25 +286,25 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2)
        BOOST_REQUIRE_EQUAL (s.size(), 2);
        BOOST_REQUIRE (dynamic_pointer_cast<const dcp::SubtitleString>(s.front()));
        BOOST_CHECK_EQUAL (*dynamic_pointer_cast<const dcp::SubtitleString>(s.front()), dcp::SubtitleString (
-                                  string ("theFont"),
+                                  string("theFont"),
                                   true,
                                   false,
                                   false,
-                                  dcp::Colour (255, 255, 255),
+                                  dcp::Colour(255, 255, 255),
                                   42,
                                   1.0,
-                                  dcp::Time (0, 1, 2, 208, 250),
-                                  dcp::Time (0, 1, 4, 10, 250),
+                                  dcp::Time(0, 1, 2, 208, 250),
+                                  dcp::Time(0, 1, 4, 10, 250),
                                   0,
-                                  dcp::HALIGN_CENTER,
+                                  dcp::HAlign::CENTER,
                                   0.89,
-                                  dcp::VALIGN_TOP,
-                                  dcp::DIRECTION_LTR,
+                                  dcp::VAlign::TOP,
+                                  dcp::Direction::LTR,
                                   "At home it depends how I feel.\"",
-                                  dcp::BORDER,
-                                  dcp::Colour (0, 0, 0),
-                                  dcp::Time (0, 0, 0, 0, 250),
-                                  dcp::Time (0, 0, 0, 0, 250)
+                                  dcp::Effect::BORDER,
+                                  dcp::Colour(0, 0, 0),
+                                  dcp::Time(0, 0, 0, 0, 250),
+                                  dcp::Time(0, 0, 0, 0, 250)
                                   ));
        BOOST_REQUIRE (dynamic_pointer_cast<const dcp::SubtitleString>(s.back()));
        BOOST_CHECK_EQUAL (*dynamic_pointer_cast<const dcp::SubtitleString>(s.back()), dcp::SubtitleString (
@@ -312,21 +312,21 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2)
                                   true,
                                   false,
                                   false,
-                                  dcp::Colour (255, 255, 255),
+                                  dcp::Colour(255, 255, 255),
                                   42,
                                   1.0,
-                                  dcp::Time (0, 1, 2, 208, 250),
-                                  dcp::Time (0, 1, 4, 10, 250),
+                                  dcp::Time(0, 1, 2, 208, 250),
+                                  dcp::Time(0, 1, 4, 10, 250),
                                   0,
-                                  dcp::HALIGN_CENTER,
+                                  dcp::HAlign::CENTER,
                                   0.95,
-                                  dcp::VALIGN_TOP,
-                                  dcp::DIRECTION_LTR,
+                                  dcp::VAlign::TOP,
+                                  dcp::Direction::LTR,
                                   "I spent a long weekend in Brighton",
-                                  dcp::BORDER,
-                                  dcp::Colour (0, 0, 0),
-                                  dcp::Time (0, 0, 0, 0, 250),
-                                  dcp::Time (0, 0, 0, 0, 250)
+                                  dcp::Effect::BORDER,
+                                  dcp::Colour(0, 0, 0),
+                                  dcp::Time(0, 0, 0, 0, 250),
+                                  dcp::Time(0, 0, 0, 0, 250)
                                   ));
 
        s = subs.subtitles_during (dcp::Time (0, 1, 15, 50, 250), dcp::Time (0, 1, 15, 51, 250), false);
@@ -337,21 +337,21 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2)
                                   true,
                                   false,
                                   false,
-                                  dcp::Colour (255, 255, 255),
+                                  dcp::Colour(255, 255, 255),
                                   42,
                                   1.0,
-                                  dcp::Time (0, 1, 15, 42, 250),
-                                  dcp::Time (0, 1, 16, 42, 250),
+                                  dcp::Time(0, 1, 15, 42, 250),
+                                  dcp::Time(0, 1, 16, 42, 250),
                                   0,
-                                  dcp::HALIGN_CENTER,
+                                  dcp::HAlign::CENTER,
                                   0.89,
-                                  dcp::VALIGN_TOP,
-                                  dcp::DIRECTION_RTL,
+                                  dcp::VAlign::TOP,
+                                  dcp::Direction::RTL,
                                   "With the legendary Miss Enid Blyton",
-                                  dcp::BORDER,
-                                  dcp::Colour (0, 0, 0),
-                                  dcp::Time (0, 0, 0, 0, 250),
-                                  dcp::Time (0, 0, 0, 0, 250)
+                                  dcp::Effect::BORDER,
+                                  dcp::Colour(0, 0, 0),
+                                  dcp::Time(0, 0, 0, 0, 250),
+                                  dcp::Time(0, 0, 0, 0, 250)
                                   ));
        BOOST_REQUIRE (dynamic_pointer_cast<const dcp::SubtitleString>(s.back()));
        BOOST_CHECK_EQUAL (*dynamic_pointer_cast<const dcp::SubtitleString>(s.back()), dcp::SubtitleString (
@@ -359,21 +359,21 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2)
                                   true,
                                   false,
                                   false,
-                                  dcp::Colour (255, 255, 255),
+                                  dcp::Colour(255, 255, 255),
                                   42,
                                   1.0,
-                                  dcp::Time (0, 1, 15, 42, 250),
-                                  dcp::Time (0, 1, 16, 42, 250),
+                                  dcp::Time(0, 1, 15, 42, 250),
+                                  dcp::Time(0, 1, 16, 42, 250),
                                   0,
-                                  dcp::HALIGN_CENTER,
+                                  dcp::HAlign::CENTER,
                                   0.95,
-                                  dcp::VALIGN_TOP,
-                                  dcp::DIRECTION_TTB,
+                                  dcp::VAlign::TOP,
+                                  dcp::Direction::TTB,
                                   "She said \"you be Noddy",
-                                  dcp::BORDER,
-                                  dcp::Colour (0, 0, 0),
-                                  dcp::Time (0, 0, 0, 0, 250),
-                                  dcp::Time (0, 0, 0, 0, 250)
+                                  dcp::Effect::BORDER,
+                                  dcp::Colour(0, 0, 0),
+                                  dcp::Time(0, 0, 0, 0, 250),
+                                  dcp::Time(0, 0, 0, 0, 250)
                                   ));
 
        s = subs.subtitles_during (dcp::Time (0, 1, 27, 200, 250), dcp::Time (0, 1, 27, 201, 250), false);
@@ -384,21 +384,21 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2)
                                   true,
                                   false,
                                   false,
-                                  dcp::Colour (255, 255, 255),
+                                  dcp::Colour(255, 255, 255),
                                   42,
                                   1.0,
-                                  dcp::Time (0, 1, 27, 115, 250),
-                                  dcp::Time (0, 1, 28, 208, 250),
+                                  dcp::Time(0, 1, 27, 115, 250),
+                                  dcp::Time(0, 1, 28, 208, 250),
                                   0,
-                                  dcp::HALIGN_CENTER,
+                                  dcp::HAlign::CENTER,
                                   0.89,
-                                  dcp::VALIGN_TOP,
-                                  dcp::DIRECTION_BTT,
+                                  dcp::VAlign::TOP,
+                                  dcp::Direction::BTT,
                                   "That curious creature the Sphinx",
-                                  dcp::BORDER,
-                                  dcp::Colour (0, 0, 0),
-                                  dcp::Time (0, 0, 0, 0, 250),
-                                  dcp::Time (0, 0, 0, 0, 250)
+                                  dcp::Effect::BORDER,
+                                  dcp::Colour(0, 0, 0),
+                                  dcp::Time(0, 0, 0, 0, 250),
+                                  dcp::Time(0, 0, 0, 0, 250)
                                   ));
        BOOST_REQUIRE (dynamic_pointer_cast<const dcp::SubtitleString>(s.back()));
        BOOST_CHECK_EQUAL (*dynamic_pointer_cast<const dcp::SubtitleString>(s.back()), dcp::SubtitleString (
@@ -406,21 +406,21 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2)
                                   true,
                                   false,
                                   false,
-                                  dcp::Colour (255, 255, 255),
+                                  dcp::Colour(255, 255, 255),
                                   42,
                                   1.0,
-                                  dcp::Time (0, 1, 27, 115, 250),
-                                  dcp::Time (0, 1, 28, 208, 250),
+                                  dcp::Time(0, 1, 27, 115, 250),
+                                  dcp::Time(0, 1, 28, 208, 250),
                                   0,
-                                  dcp::HALIGN_CENTER,
+                                  dcp::HAlign::CENTER,
                                   0.95,
-                                  dcp::VALIGN_TOP,
-                                  dcp::DIRECTION_LTR,
+                                  dcp::VAlign::TOP,
+                                  dcp::Direction::LTR,
                                   "Is smarter than anyone thinks",
-                                  dcp::BORDER,
-                                  dcp::Colour (0, 0, 0),
-                                  dcp::Time (0, 0, 0, 0, 250),
-                                  dcp::Time (0, 0, 0, 0, 250)
+                                  dcp::Effect::BORDER,
+                                  dcp::Colour(0, 0, 0),
+                                  dcp::Time(0, 0, 0, 0, 250),
+                                  dcp::Time(0, 0, 0, 0, 250)
                                   ));
 
        s = subs.subtitles_during (dcp::Time (0, 1, 42, 300, 250), dcp::Time (0, 1, 42, 301, 250), false);
@@ -437,15 +437,15 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2)
                                   dcp::Time (0, 1, 42, 229, 250),
                                   dcp::Time (0, 1, 45, 62, 250),
                                   0,
-                                  dcp::HALIGN_CENTER,
+                                  dcp::HAlign::CENTER,
                                   0.89,
-                                  dcp::VALIGN_TOP,
-                                  dcp::DIRECTION_LTR,
+                                  dcp::VAlign::TOP,
+                                  dcp::Direction::LTR,
                                   "It sits there and smirks",
-                                  dcp::BORDER,
-                                  dcp::Colour (0, 0, 0),
-                                  dcp::Time (0, 0, 0, 0, 250),
-                                  dcp::Time (0, 0, 0, 0, 250)
+                                  dcp::Effect::BORDER,
+                                  dcp::Colour(0, 0, 0),
+                                  dcp::Time(0, 0, 0, 0, 250),
+                                  dcp::Time(0, 0, 0, 0, 250)
                                   ));
        BOOST_REQUIRE (dynamic_pointer_cast<const dcp::SubtitleString>(s.back()));
        BOOST_CHECK_EQUAL (*dynamic_pointer_cast<const dcp::SubtitleString>(s.back()), dcp::SubtitleString (
@@ -459,40 +459,40 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2)
                                   dcp::Time (0, 1, 42, 229, 250),
                                   dcp::Time (0, 1, 45, 62, 250),
                                   0,
-                                  dcp::HALIGN_CENTER,
+                                  dcp::HAlign::CENTER,
                                   0.95,
-                                  dcp::VALIGN_TOP,
-                                  dcp::DIRECTION_LTR,
+                                  dcp::VAlign::TOP,
+                                  dcp::Direction::LTR,
                                   "And you don't think it works",
-                                  dcp::BORDER,
-                                  dcp::Colour (0, 0, 0),
-                                  dcp::Time (0, 0, 0, 0, 250),
-                                  dcp::Time (0, 0, 0, 0, 250)
+                                  dcp::Effect::BORDER,
+                                  dcp::Colour(0, 0, 0),
+                                  dcp::Time(0, 0, 0, 0, 250),
+                                  dcp::Time(0, 0, 0, 0, 250)
                                   ));
 
        s = subs.subtitles_during (dcp::Time (0, 1, 45, 200, 250), dcp::Time (0, 1, 45, 201, 250), false);
        BOOST_REQUIRE_EQUAL (s.size(), 2);
        BOOST_REQUIRE (dynamic_pointer_cast<const dcp::SubtitleString>(s.front()));
        BOOST_CHECK_EQUAL (*dynamic_pointer_cast<const dcp::SubtitleString>(s.front()), dcp::SubtitleString (
-                                  string ("theFont"),
+                                  string("theFont"),
                                   false,
                                   false,
                                   false,
-                                  dcp::Colour (255, 255, 255),
+                                  dcp::Colour(255, 255, 255),
                                   42,
                                   1.0,
-                                  dcp::Time (0, 1, 45, 146, 250),
-                                  dcp::Time (0, 1, 47, 94, 250),
+                                  dcp::Time(0, 1, 45, 146, 250),
+                                  dcp::Time(0, 1, 47, 94, 250),
                                   0,
-                                  dcp::HALIGN_CENTER,
+                                  dcp::HAlign::CENTER,
                                   0.89,
-                                  dcp::VALIGN_TOP,
-                                  dcp::DIRECTION_LTR,
+                                  dcp::VAlign::TOP,
+                                  dcp::Direction::LTR,
                                   "Then when you're not looking, it winks.",
-                                  dcp::BORDER,
-                                  dcp::Colour (0, 0, 0),
-                                  dcp::Time (0, 0, 0, 0, 250),
-                                  dcp::Time (0, 0, 0, 0, 250)
+                                  dcp::Effect::BORDER,
+                                  dcp::Colour(0, 0, 0),
+                                  dcp::Time(0, 0, 0, 0, 250),
+                                  dcp::Time(0, 0, 0, 0, 250)
                                   ));
        BOOST_REQUIRE (dynamic_pointer_cast<const dcp::SubtitleString>(s.back()));
        BOOST_CHECK_EQUAL (*dynamic_pointer_cast<const dcp::SubtitleString>(s.back()), dcp::SubtitleString (
@@ -506,15 +506,15 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2)
                                   dcp::Time (0, 1, 45, 146, 250),
                                   dcp::Time (0, 1, 47, 94, 250),
                                   0,
-                                  dcp::HALIGN_CENTER,
+                                  dcp::HAlign::CENTER,
                                   0.95,
-                                  dcp::VALIGN_TOP,
-                                  dcp::DIRECTION_LTR,
+                                  dcp::VAlign::TOP,
+                                  dcp::Direction::LTR,
                                   "When it snows you will find Sister Sledge",
-                                  dcp::BORDER,
-                                  dcp::Colour (0, 0, 0),
-                                  dcp::Time (0, 0, 0, 0, 250),
-                                  dcp::Time (0, 0, 0, 0, 250)
+                                  dcp::Effect::BORDER,
+                                  dcp::Colour(0, 0, 0),
+                                  dcp::Time(0, 0, 0, 0, 250),
+                                  dcp::Time(0, 0, 0, 0, 250)
                                   ));
 
        s = subs.subtitles_during (dcp::Time (0, 1, 47, 249, 250), dcp::Time (0, 1, 47, 250, 250), false);
@@ -525,21 +525,21 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2)
                                   false,
                                   false,
                                   false,
-                                  dcp::Colour (255, 255, 255),
+                                  dcp::Colour(255, 255, 255),
                                   42,
                                   1.0,
-                                  dcp::Time (0, 1, 47, 146, 250),
-                                  dcp::Time (0, 1, 48, 167, 250),
+                                  dcp::Time(0, 1, 47, 146, 250),
+                                  dcp::Time(0, 1, 48, 167, 250),
                                   0,
-                                  dcp::HALIGN_CENTER,
+                                  dcp::HAlign::CENTER,
                                   0.89,
-                                  dcp::VALIGN_TOP,
-                                  dcp::DIRECTION_LTR,
+                                  dcp::VAlign::TOP,
+                                  dcp::Direction::LTR,
                                   "Out mooning, at night, on the ledge",
-                                  dcp::BORDER,
-                                  dcp::Colour (0, 0, 0),
-                                  dcp::Time (0, 0, 0, 0, 250),
-                                  dcp::Time (0, 0, 0, 0, 250)
+                                  dcp::Effect::BORDER,
+                                  dcp::Colour(0, 0, 0),
+                                  dcp::Time(0, 0, 0, 0, 250),
+                                  dcp::Time(0, 0, 0, 0, 250)
                                   ));
        BOOST_REQUIRE (dynamic_pointer_cast<const dcp::SubtitleString>(s.back()));
        BOOST_CHECK_EQUAL (*dynamic_pointer_cast<const dcp::SubtitleString>(s.back()), dcp::SubtitleString (
@@ -547,21 +547,21 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2)
                                   false,
                                   false,
                                   false,
-                                  dcp::Colour (255, 255, 255),
+                                  dcp::Colour(255, 255, 255),
                                   42,
                                   1.0,
-                                  dcp::Time (0, 1, 47, 146, 250),
-                                  dcp::Time (0, 1, 48, 167, 250),
+                                  dcp::Time(0, 1, 47, 146, 250),
+                                  dcp::Time(0, 1, 48, 167, 250),
                                   0,
-                                  dcp::HALIGN_CENTER,
+                                  dcp::HAlign::CENTER,
                                   0.95,
-                                  dcp::VALIGN_TOP,
-                                  dcp::DIRECTION_LTR,
+                                  dcp::VAlign::TOP,
+                                  dcp::Direction::LTR,
                                   "One storey down",
-                                  dcp::BORDER,
-                                  dcp::Colour (0, 0, 0),
-                                  dcp::Time (0, 0, 0, 0, 250),
-                                  dcp::Time (0, 0, 0, 0, 250)
+                                  dcp::Effect::BORDER,
+                                  dcp::Colour(0, 0, 0),
+                                  dcp::Time(0, 0, 0, 0, 250),
+                                  dcp::Time(0, 0, 0, 0, 250)
                                   ));
 
        s = subs.subtitles_during (dcp::Time (0, 2, 6, 210, 250), dcp::Time (0, 2, 6, 211, 250), false);
@@ -578,15 +578,15 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2)
                                   dcp::Time (0, 2, 5, 208, 250),
                                   dcp::Time (0, 2, 7, 31, 250),
                                   0,
-                                  dcp::HALIGN_CENTER,
+                                  dcp::HAlign::CENTER,
                                   0.89,
-                                  dcp::VALIGN_TOP,
-                                  dcp::DIRECTION_LTR,
+                                  dcp::VAlign::TOP,
+                                  dcp::Direction::LTR,
                                   "HELLO",
-                                  dcp::BORDER,
-                                  dcp::Colour (0, 0, 0),
-                                  dcp::Time (0, 0, 0, 0, 250),
-                                  dcp::Time (0, 0, 0, 0, 250)
+                                  dcp::Effect::BORDER,
+                                  dcp::Colour(0, 0, 0),
+                                  dcp::Time(0, 0, 0, 0, 250),
+                                  dcp::Time(0, 0, 0, 0, 250)
                                   ));
        BOOST_REQUIRE (dynamic_pointer_cast<const dcp::SubtitleString>(s.back()));
        BOOST_CHECK_EQUAL (*dynamic_pointer_cast<const dcp::SubtitleString>(s.back()), dcp::SubtitleString (
@@ -594,21 +594,21 @@ BOOST_AUTO_TEST_CASE (read_interop_subtitle_test2)
                                   true,
                                   false,
                                   false,
-                                  dcp::Colour (255, 255, 255),
+                                  dcp::Colour(255, 255, 255),
                                   42,
                                   1.0,
-                                  dcp::Time (0, 2, 5, 208, 250),
-                                  dcp::Time (0, 2, 7, 31, 250),
+                                  dcp::Time(0, 2, 5, 208, 250),
+                                  dcp::Time(0, 2, 7, 31, 250),
                                   0,
-                                  dcp::HALIGN_CENTER,
+                                  dcp::HAlign::CENTER,
                                   0.95,
-                                  dcp::VALIGN_TOP,
-                                  dcp::DIRECTION_LTR,
+                                  dcp::VAlign::TOP,
+                                  dcp::Direction::LTR,
                                   "WORLD",
-                                  dcp::BORDER,
-                                  dcp::Colour (0, 0, 0),
-                                  dcp::Time (0, 0, 0, 0, 250),
-                                  dcp::Time (0, 0, 0, 0, 250)
+                                  dcp::Effect::BORDER,
+                                  dcp::Colour(0, 0, 0),
+                                  dcp::Time(0, 0, 0, 0, 250),
+                                  dcp::Time(0, 0, 0, 0, 250)
                                   ));
 }
 
index dcaecb140e61b86fa465e7cb6b07d065647ec3ba..59e477a305ccadd4a69d027651361a875bc5ae02 100644 (file)
@@ -40,6 +40,7 @@
 
 using std::string;
 using std::shared_ptr;
+using std::make_shared;
 
 /** Check that recovery from a partially-written MXF works */
 BOOST_AUTO_TEST_CASE (recovery)
@@ -51,7 +52,7 @@ BOOST_AUTO_TEST_CASE (recovery)
 
        boost::filesystem::remove_all ("build/test/baz");
        boost::filesystem::create_directories ("build/test/baz");
-       shared_ptr<dcp::MonoPictureAsset> mp (new dcp::MonoPictureAsset (dcp::Fraction (24, 1), dcp::SMPTE));
+       shared_ptr<dcp::MonoPictureAsset> mp (new dcp::MonoPictureAsset (dcp::Fraction (24, 1), dcp::Standard::SMPTE));
        shared_ptr<dcp::PictureAssetWriter> writer = mp->start_write ("build/test/baz/video1.mxf", false);
 
        int written_size = 0;
@@ -80,7 +81,7 @@ BOOST_AUTO_TEST_CASE (recovery)
        Kumu::ResetTestRNG ();
 #endif
 
-       mp.reset (new dcp::MonoPictureAsset (dcp::Fraction (24, 1), dcp::SMPTE));
+       mp = make_shared<dcp::MonoPictureAsset>(dcp::Fraction (24, 1), dcp::Standard::SMPTE);
        writer = mp->start_write ("build/test/baz/video2.mxf", true);
 
        writer->write (data.data(), data.size());
index af79b1e3c49c34ea8c136e50ff7d0d023d048a87..54f6174ca61a77d5be608e98b37f3d7f0da21783 100644 (file)
@@ -43,6 +43,7 @@ using std::list;
 using std::string;
 using std::cout;
 using std::shared_ptr;
+using std::make_shared;
 using boost::optional;
 using boost::scoped_array;
 
@@ -64,7 +65,7 @@ BOOST_AUTO_TEST_CASE (rgb_xyz_test)
                }
        }
 
-       shared_ptr<dcp::OpenJPEGImage> xyz = dcp::rgb_to_xyz (rgb.get(), size, size.width * 6, dcp::ColourConversion::srgb_to_xyz ());
+       auto xyz = dcp::rgb_to_xyz (rgb.get(), size, size.width * 6, dcp::ColourConversion::srgb_to_xyz());
 
        for (int y = 0; y < size.height; ++y) {
                uint16_t* p = reinterpret_cast<uint16_t*> (rgb.get() + y * size.width * 6);
@@ -124,14 +125,14 @@ static list<string> notes;
 static void
 note_handler (dcp::NoteType n, string s)
 {
-       BOOST_REQUIRE_EQUAL (n, dcp::DCP_NOTE);
+       BOOST_REQUIRE_EQUAL (n, dcp::NoteType::NOTE);
        notes.push_back (s);
 }
 
 /** Check that xyz_to_rgb clamps XYZ values correctly */
 BOOST_AUTO_TEST_CASE (xyz_rgb_range_test)
 {
-       shared_ptr<dcp::OpenJPEGImage> xyz (new dcp::OpenJPEGImage (dcp::Size (2, 2)));
+       auto xyz = make_shared<dcp::OpenJPEGImage>(dcp::Size(2, 2));
 
        xyz->data(0)[0] = -4;
        xyz->data(0)[1] = 6901;
@@ -155,7 +156,7 @@ BOOST_AUTO_TEST_CASE (xyz_rgb_range_test)
 
        /* The 6 out-of-range samples should have been noted */
        BOOST_REQUIRE_EQUAL (notes.size(), 6);
-       list<string>::const_iterator i = notes.begin ();
+       auto i = notes.begin ();
        BOOST_REQUIRE_EQUAL (*i++, "XYZ value -4 out of range");
        BOOST_REQUIRE_EQUAL (*i++, "XYZ value -4 out of range");
        BOOST_REQUIRE_EQUAL (*i++, "XYZ value -4 out of range");
@@ -167,7 +168,7 @@ BOOST_AUTO_TEST_CASE (xyz_rgb_range_test)
           as inputs at the extremes (0 and 4095).
        */
 
-       uint16_t* buffer = reinterpret_cast<uint16_t*> (rgb.get ());
+       auto buffer = reinterpret_cast<uint16_t*> (rgb.get ());
        BOOST_REQUIRE_EQUAL (buffer[0 * 3 + 0], buffer[2 * 3 + 1]);
        BOOST_REQUIRE_EQUAL (buffer[0 * 3 + 1], buffer[2 * 3 + 1]);
        BOOST_REQUIRE_EQUAL (buffer[0 * 3 + 2], buffer[2 * 3 + 2]);
index f730485bc65adb72783ebd4d572282b7d3578753..a9037114eef3700749f6b4f8abb81fd0241b60c5 100644 (file)
@@ -67,7 +67,7 @@ BOOST_AUTO_TEST_CASE (round_trip_test)
        boost::filesystem::path work_dir = "build/test/round_trip_test";
        boost::filesystem::create_directory (work_dir);
 
-       shared_ptr<dcp::MonoPictureAsset> asset_A (new dcp::MonoPictureAsset (dcp::Fraction (24, 1), dcp::SMPTE));
+       shared_ptr<dcp::MonoPictureAsset> asset_A (new dcp::MonoPictureAsset (dcp::Fraction (24, 1), dcp::Standard::SMPTE));
        shared_ptr<dcp::PictureAssetWriter> writer = asset_A->start_write (work_dir / "video.mxf", false);
        dcp::ArrayData j2c ("test/data/flat_red.j2c");
        for (int i = 0; i < 24; ++i) {
@@ -79,7 +79,7 @@ BOOST_AUTO_TEST_CASE (round_trip_test)
 
        asset_A->set_key (key);
 
-       shared_ptr<dcp::CPL> cpl (new dcp::CPL ("A Test DCP", dcp::FEATURE));
+       shared_ptr<dcp::CPL> cpl (new dcp::CPL ("A Test DCP", dcp::ContentKind::FEATURE));
        shared_ptr<dcp::Reel> reel (new dcp::Reel ());
        reel->add (shared_ptr<dcp::ReelMonoPictureAsset> (new dcp::ReelMonoPictureAsset (asset_A, 0)));
        cpl->add (reel);
@@ -102,7 +102,7 @@ BOOST_AUTO_TEST_CASE (round_trip_test)
 
        boost::filesystem::path const kdm_file = work_dir / "kdm.xml";
 
-       kdm_A.encrypt(signer, signer->leaf(), vector<string>(), dcp::MODIFIED_TRANSITIONAL_1, true, 0).as_xml (kdm_file);
+       kdm_A.encrypt(signer, signer->leaf(), vector<string>(), dcp::Formulation::MODIFIED_TRANSITIONAL_1, true, 0).as_xml (kdm_file);
 
        /* Reload the KDM, using our private key to decrypt it */
        dcp::DecryptedKDM kdm_B (dcp::EncryptedKDM (dcp::file_to_string (kdm_file)), signer->key().get ());
index 6f72511e299c5cbcc379242d308adc30a3b158b4..2af7669605ee5a7fb2dd753476bb099c48e30486 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2018 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2018-2021 Carl Hetherington <cth@carlh.net>
 
     This file is part of libdcp.
 
 #include <boost/test/unit_test.hpp>
 #include "smpte_subtitle_asset.h"
 
+using std::make_shared;
 using std::string;
-using boost::optional;
 using std::shared_ptr;
+using boost::optional;
 
 BOOST_AUTO_TEST_CASE (smpte_subtitle_id_test)
 {
        dcp::SMPTESubtitleAsset subs;
        subs.add(
-               shared_ptr<dcp::Subtitle> (
-                       new dcp::SubtitleString(
-                               optional<string>(),
-                               false, false, false,
-                               dcp::Colour(),
-                               64,
-                               1,
-                               dcp::Time(0, 1, 2, 3, 24),
-                               dcp::Time(0, 2, 2, 3, 24),
-                               0.5,
-                               dcp::HALIGN_CENTER,
-                               0.5,
-                               dcp::VALIGN_CENTER,
-                               dcp::DIRECTION_LTR,
-                               "Hello",
-                               dcp::NONE,
-                               dcp::Colour(),
-                               dcp::Time(0, 0, 0, 0, 24),
-                               dcp::Time(0, 0, 0, 0, 24)
-                               )
+               make_shared<dcp::SubtitleString>(
+                       optional<string>(),
+                       false, false, false,
+                       dcp::Colour(),
+                       64,
+                       1,
+                       dcp::Time(0, 1, 2, 3, 24),
+                       dcp::Time(0, 2, 2, 3, 24),
+                       0.5,
+                       dcp::HAlign::CENTER,
+                       0.5,
+                       dcp::VAlign::CENTER,
+                       dcp::Direction::LTR,
+                       "Hello",
+                       dcp::Effect::NONE,
+                       dcp::Colour(),
+                       dcp::Time(0, 0, 0, 0, 24),
+                       dcp::Time(0, 0, 0, 0, 24)
                        )
                );
        subs.write("build/test/smpte_subtitle_id_test.mxf");
index cbfd74007fac19c58af25cae5f5f5c8721bef669..3d6570b7cead7de32626c9f2c2630de7c4bbf825 100644 (file)
@@ -120,7 +120,7 @@ BOOST_AUTO_TEST_CASE (sync_test2)
 {
        /* Make a MXF with the same ID as atmos_pcm.mxf and write a frame of random stuff */
        int const channels = 14;
-       dcp::SoundAsset asset (dcp::Fraction(24, 1), 48000, channels, dcp::LanguageTag("en-GB"), dcp::SMPTE);
+       dcp::SoundAsset asset (dcp::Fraction(24, 1), 48000, channels, dcp::LanguageTag("en-GB"), dcp::Standard::SMPTE);
        asset._id = "e004046e09234f90a4ae4355e7e83506";
        boost::system::error_code ec;
        boost::filesystem::remove ("build/test/foo.mxf", ec);
index 91ecfcf71592c11b0ec5a13b20b2c7ffde01a899..196827fc1213338055ea480c0a960c2b7e08e0fd 100644 (file)
@@ -264,7 +264,7 @@ simple_picture (boost::filesystem::path path, string suffix, int frames)
        mxf_meta.product_name = "OpenDCP";
        mxf_meta.product_version = "0.0.25";
 
-       shared_ptr<dcp::MonoPictureAsset> mp (new dcp::MonoPictureAsset (dcp::Fraction (24, 1), dcp::SMPTE));
+       shared_ptr<dcp::MonoPictureAsset> mp (new dcp::MonoPictureAsset (dcp::Fraction (24, 1), dcp::Standard::SMPTE));
        mp->set_metadata (mxf_meta);
        shared_ptr<dcp::PictureAssetWriter> picture_writer = mp->start_write (path / dcp::String::compose("video%1.mxf", suffix), false);
        dcp::ArrayData j2c ("test/data/flat_red.j2c");
@@ -283,11 +283,11 @@ simple_sound (boost::filesystem::path path, string suffix, dcp::MXFMetadata mxf_
        int const channels = 6;
 
        /* Set a valid language, then overwrite it, so that the language parameter can be badly formed */
-       shared_ptr<dcp::SoundAsset> ms (new dcp::SoundAsset(dcp::Fraction(24, 1), sample_rate, channels, dcp::LanguageTag("en-US"), dcp::SMPTE));
+       shared_ptr<dcp::SoundAsset> ms (new dcp::SoundAsset(dcp::Fraction(24, 1), sample_rate, channels, dcp::LanguageTag("en-US"), dcp::Standard::SMPTE));
        ms->_language = language;
        ms->set_metadata (mxf_meta);
        vector<dcp::Channel> active_channels;
-       active_channels.push_back (dcp::LEFT);
+       active_channels.push_back (dcp::Channel::LEFT);
        shared_ptr<dcp::SoundAssetWriter> sound_writer = ms->start_write (path / dcp::String::compose("audio%1.mxf", suffix), active_channels);
 
        int const samples_per_frame = sample_rate / 24;
@@ -323,8 +323,8 @@ make_simple (boost::filesystem::path path, int reels, int frames)
 
        boost::filesystem::remove_all (path);
        boost::filesystem::create_directories (path);
-       shared_ptr<dcp::DCP> d (new dcp::DCP (path));
-       shared_ptr<dcp::CPL> cpl (new dcp::CPL ("A Test DCP", dcp::TRAILER));
+       auto d = make_shared<dcp::DCP>(path);
+       auto cpl = make_shared<dcp::CPL>("A Test DCP", dcp::ContentKind::TRAILER);
        cpl->set_annotation_text ("A Test DCP");
        cpl->set_issuer ("OpenDCP 0.0.25");
        cpl->set_creator ("OpenDCP 0.0.25");
@@ -369,28 +369,26 @@ make_simple (boost::filesystem::path path, int reels, int frames)
 shared_ptr<dcp::Subtitle>
 simple_subtitle ()
 {
-       return shared_ptr<dcp::Subtitle>(
-               new dcp::SubtitleString(
-                       optional<string>(),
-                       false,
-                       false,
-                       false,
-                       dcp::Colour(255, 255, 255),
-                       42,
-                       1,
-                       dcp::Time(0, 0, 4, 0, 24),
-                       dcp::Time(0, 0, 8, 0, 24),
-                       0.5,
-                       dcp::HALIGN_CENTER,
-                       0.8,
-                       dcp::VALIGN_TOP,
-                       dcp::DIRECTION_LTR,
-                       "Hello world",
-                       dcp::NONE,
-                       dcp::Colour(255, 255, 255),
-                       dcp::Time(),
-                       dcp::Time()
-                       )
+       return make_shared<dcp::SubtitleString>(
+               optional<string>(),
+               false,
+               false,
+               false,
+               dcp::Colour(255, 255, 255),
+               42,
+               1,
+               dcp::Time(0, 0, 4, 0, 24),
+               dcp::Time(0, 0, 8, 0, 24),
+               0.5,
+               dcp::HAlign::CENTER,
+               0.8,
+               dcp::VAlign::TOP,
+               dcp::Direction::LTR,
+               "Hello world",
+               dcp::Effect::NONE,
+               dcp::Colour(255, 255, 255),
+               dcp::Time(),
+               dcp::Time()
                );
 }
 
@@ -497,7 +495,7 @@ black_picture_asset (boost::filesystem::path dir, int frames)
        dcp::ArrayData frame = dcp::compress_j2k (image, 100000000, 24, false, false);
        BOOST_REQUIRE (frame.size() < 230000000 / (24 * 8));
 
-       shared_ptr<dcp::MonoPictureAsset> asset(new dcp::MonoPictureAsset(dcp::Fraction(24, 1), dcp::SMPTE));
+       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);
        shared_ptr<dcp::PictureAssetWriter> writer = asset->start_write (dir / "pic.mxf", true);
index 21a0d7bc64688d0a0f739cc86b41c6f1d4ca5cab..51a5dab68fbb3b6bdaba8433e6dd043ef53aa804 100644 (file)
@@ -75,18 +75,18 @@ BOOST_AUTO_TEST_CASE (base64_decode_test)
 /** Test dcp::content_kind_from_string */
 BOOST_AUTO_TEST_CASE (content_kind_test)
 {
-       BOOST_CHECK_EQUAL (dcp::content_kind_from_string ("feature"), dcp::FEATURE);
-       BOOST_CHECK_EQUAL (dcp::content_kind_from_string ("Feature"), dcp::FEATURE);
-       BOOST_CHECK_EQUAL (dcp::content_kind_from_string ("FeaturE"), dcp::FEATURE);
-       BOOST_CHECK_EQUAL (dcp::content_kind_from_string ("Short"), dcp::SHORT);
-       BOOST_CHECK_EQUAL (dcp::content_kind_from_string ("trailer"), dcp::TRAILER);
-       BOOST_CHECK_EQUAL (dcp::content_kind_from_string ("test"), dcp::TEST);
-       BOOST_CHECK_EQUAL (dcp::content_kind_from_string ("transitional"), dcp::TRANSITIONAL);
-       BOOST_CHECK_EQUAL (dcp::content_kind_from_string ("rating"), dcp::RATING);
-       BOOST_CHECK_EQUAL (dcp::content_kind_from_string ("teaser"), dcp::TEASER);
-       BOOST_CHECK_EQUAL (dcp::content_kind_from_string ("policy"), dcp::POLICY);
-       BOOST_CHECK_EQUAL (dcp::content_kind_from_string ("psa"), dcp::PUBLIC_SERVICE_ANNOUNCEMENT);
-       BOOST_CHECK_EQUAL (dcp::content_kind_from_string ("advertisement"), dcp::ADVERTISEMENT);
+       BOOST_CHECK_EQUAL (dcp::content_kind_from_string ("feature"), dcp::ContentKind::FEATURE);
+       BOOST_CHECK_EQUAL (dcp::content_kind_from_string ("Feature"), dcp::ContentKind::FEATURE);
+       BOOST_CHECK_EQUAL (dcp::content_kind_from_string ("FeaturE"), dcp::ContentKind::FEATURE);
+       BOOST_CHECK_EQUAL (dcp::content_kind_from_string ("Short"), dcp::ContentKind::SHORT);
+       BOOST_CHECK_EQUAL (dcp::content_kind_from_string ("trailer"), dcp::ContentKind::TRAILER);
+       BOOST_CHECK_EQUAL (dcp::content_kind_from_string ("test"), dcp::ContentKind::TEST);
+       BOOST_CHECK_EQUAL (dcp::content_kind_from_string ("transitional"), dcp::ContentKind::TRANSITIONAL);
+       BOOST_CHECK_EQUAL (dcp::content_kind_from_string ("rating"), dcp::ContentKind::RATING);
+       BOOST_CHECK_EQUAL (dcp::content_kind_from_string ("teaser"), dcp::ContentKind::TEASER);
+       BOOST_CHECK_EQUAL (dcp::content_kind_from_string ("policy"), dcp::ContentKind::POLICY);
+       BOOST_CHECK_EQUAL (dcp::content_kind_from_string ("psa"), dcp::ContentKind::PUBLIC_SERVICE_ANNOUNCEMENT);
+       BOOST_CHECK_EQUAL (dcp::content_kind_from_string ("advertisement"), dcp::ContentKind::ADVERTISEMENT);
 }
 
 /** Test dcp::relative_to_root */
index 32550c329ec46a1724b2d5f5c719bec3a28fd229..78480956ca9358fa8caec06b46f20f7b3157faae 100644 (file)
@@ -110,13 +110,13 @@ setup (int reference_number, string verify_test_suffix)
 
 static
 shared_ptr<dcp::CPL>
-write_dcp_with_single_asset (path dir, shared_ptr<dcp::ReelAsset> reel_asset, dcp::Standard standard = dcp::SMPTE)
+write_dcp_with_single_asset (path dir, shared_ptr<dcp::ReelAsset> reel_asset, dcp::Standard standard = dcp::Standard::SMPTE)
 {
        auto reel = make_shared<dcp::Reel>();
        reel->add (reel_asset);
        reel->add (simple_markers());
 
-       auto cpl = make_shared<dcp::CPL>("hello", dcp::TRAILER);
+       auto cpl = make_shared<dcp::CPL>("hello", dcp::ContentKind::TRAILER);
        cpl->add (reel);
        auto dcp = make_shared<dcp::DCP>(dir);
        dcp->add (cpl);
@@ -543,7 +543,7 @@ static
 shared_ptr<dcp::CPL>
 dcp_from_frame (dcp::ArrayData const& frame, path dir)
 {
-       auto asset = make_shared<dcp::MonoPictureAsset>(dcp::Fraction(24, 1), dcp::SMPTE);
+       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);
        for (int i = 0; i < 24; ++i) {
@@ -632,7 +632,7 @@ BOOST_AUTO_TEST_CASE (verify_valid_interop_subtitles)
        copy_file ("test/data/subs1.xml", dir / "subs.xml");
        auto asset = make_shared<dcp::InteropSubtitleAsset>(dir / "subs.xml");
        auto reel_asset = make_shared<dcp::ReelSubtitleAsset>(asset, dcp::Fraction(24, 1), 16 * 24, 0);
-       write_dcp_with_single_asset (dir, reel_asset, dcp::INTEROP);
+       write_dcp_with_single_asset (dir, reel_asset, dcp::Standard::INTEROP);
 
        check_verify_result ({dir}, {{ dcp::VerificationNote::VERIFY_BV21_ERROR, dcp::VerificationNote::INVALID_STANDARD }});
 }
@@ -647,7 +647,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_interop_subtitles)
        copy_file ("test/data/subs1.xml", dir / "subs.xml");
        auto asset = make_shared<dcp::InteropSubtitleAsset>(dir / "subs.xml");
        auto reel_asset = make_shared<dcp::ReelSubtitleAsset>(asset, dcp::Fraction(24, 1), 16 * 24, 0);
-       write_dcp_with_single_asset (dir, reel_asset, dcp::INTEROP);
+       write_dcp_with_single_asset (dir, reel_asset, dcp::Standard::INTEROP);
 
        {
                Editor e (dir / "subs.xml");
@@ -754,7 +754,7 @@ BOOST_AUTO_TEST_CASE (verify_valid_cpl_metadata)
        reel->add (make_shared<dcp::ReelMonoPictureAsset>(simple_picture(dir, "", 16 * 24), 0));
        reel->add (simple_markers(16 * 24));
 
-       auto cpl = make_shared<dcp::CPL>("hello", dcp::TRAILER);
+       auto cpl = make_shared<dcp::CPL>("hello", dcp::ContentKind::TRAILER);
        cpl->add (reel);
        cpl->set_main_sound_configuration ("L,C,R,Lfe,-,-");
        cpl->set_main_sound_sample_rate (48000);
@@ -765,7 +765,7 @@ BOOST_AUTO_TEST_CASE (verify_valid_cpl_metadata)
        dcp::DCP dcp (dir);
        dcp.add (cpl);
        dcp.write_xml (
-               dcp::SMPTE,
+               dcp::Standard::SMPTE,
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::LocalTime().as_string(),
@@ -797,7 +797,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_cpl_metadata_bad_tag)
 
        auto reel = make_shared<dcp::Reel>();
        reel->add (black_picture_asset(dir));
-       auto cpl = make_shared<dcp::CPL>("hello", dcp::TRAILER);
+       auto cpl = make_shared<dcp::CPL>("hello", dcp::ContentKind::TRAILER);
        cpl->add (reel);
        cpl->set_main_sound_configuration ("L,C,R,Lfe,-,-");
        cpl->set_main_sound_sample_rate (48000);
@@ -810,7 +810,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_cpl_metadata_bad_tag)
        dcp::DCP dcp (dir);
        dcp.add (cpl);
        dcp.write_xml (
-               dcp::SMPTE,
+               dcp::Standard::SMPTE,
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::LocalTime().as_string(),
@@ -852,7 +852,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_cpl_metadata_missing_tag)
 
        auto reel = make_shared<dcp::Reel>();
        reel->add (black_picture_asset(dir));
-       auto cpl = make_shared<dcp::CPL>("hello", dcp::TRAILER);
+       auto cpl = make_shared<dcp::CPL>("hello", dcp::ContentKind::TRAILER);
        cpl->add (reel);
        cpl->set_main_sound_configuration ("L,C,R,Lfe,-,-");
        cpl->set_main_sound_sample_rate (48000);
@@ -862,7 +862,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_cpl_metadata_missing_tag)
        dcp::DCP dcp (dir);
        dcp.add (cpl);
        dcp.write_xml (
-               dcp::SMPTE,
+               dcp::Standard::SMPTE,
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::LocalTime().as_string(),
@@ -943,7 +943,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_language3)
        reel->add (reel_sound);
        reel->add (simple_markers());
 
-       auto cpl = make_shared<dcp::CPL>("hello", dcp::TRAILER);
+       auto cpl = make_shared<dcp::CPL>("hello", dcp::ContentKind::TRAILER);
        cpl->add (reel);
        cpl->_additional_subtitle_languages.push_back("this-is-wrong");
        cpl->_additional_subtitle_languages.push_back("andso-is-this");
@@ -956,7 +956,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_language3)
        auto dcp = make_shared<dcp::DCP>(dir);
        dcp->add (cpl);
        dcp->write_xml (
-               dcp::SMPTE,
+               dcp::Standard::SMPTE,
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::LocalTime().as_string(),
@@ -985,9 +985,9 @@ check_picture_size (int width, int height, int frame_rate, bool three_d)
 
        shared_ptr<dcp::PictureAsset> mp;
        if (three_d) {
-               mp = make_shared<dcp::StereoPictureAsset>(dcp::Fraction(frame_rate, 1), dcp::SMPTE);
+               mp = make_shared<dcp::StereoPictureAsset>(dcp::Fraction(frame_rate, 1), dcp::Standard::SMPTE);
        } else {
-               mp = make_shared<dcp::MonoPictureAsset>(dcp::Fraction(frame_rate, 1), dcp::SMPTE);
+               mp = make_shared<dcp::MonoPictureAsset>(dcp::Fraction(frame_rate, 1), dcp::Standard::SMPTE);
        }
        auto picture_writer = mp->start_write (dcp_path / "video.mxf", false);
 
@@ -1000,7 +1000,7 @@ check_picture_size (int width, int height, int frame_rate, bool three_d)
        picture_writer->finalize ();
 
        auto d = make_shared<dcp::DCP>(dcp_path);
-       auto cpl = make_shared<dcp::CPL>("A Test DCP", dcp::TRAILER);
+       auto cpl = make_shared<dcp::CPL>("A Test DCP", dcp::ContentKind::TRAILER);
        cpl->set_annotation_text ("A Test DCP");
        cpl->set_issue_date ("2012-07-17T04:45:18+00:00");
        cpl->set_main_sound_configuration ("L,C,R,Lfe,-,-");
@@ -1023,7 +1023,7 @@ check_picture_size (int width, int height, int frame_rate, bool three_d)
 
        d->add (cpl);
        d->write_xml (
-               dcp::SMPTE,
+               dcp::Standard::SMPTE,
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::LocalTime().as_string(),
@@ -1142,12 +1142,12 @@ add_test_subtitle (shared_ptr<dcp::SubtitleAsset> asset, int start_frame, int en
                        dcp::Time(start_frame, 24, 24),
                        dcp::Time(end_frame, 24, 24),
                        0,
-                       dcp::HALIGN_CENTER,
+                       dcp::HAlign::CENTER,
                        v_position,
-                       dcp::VALIGN_CENTER,
-                       dcp::DIRECTION_LTR,
+                       dcp::VAlign::CENTER,
+                       dcp::Direction::LTR,
                        text,
-                       dcp::NONE,
+                       dcp::Effect::NONE,
                        dcp::Colour(),
                        dcp::Time(),
                        dcp::Time()
@@ -1270,7 +1270,7 @@ BOOST_AUTO_TEST_CASE (verify_missing_subtitle_language)
        auto reel_subs = make_shared<dcp::ReelSubtitleAsset>(subs, dcp::Fraction(24, 1), 240, 0);
        dcp->cpls().front()->reels().front()->add(reel_subs);
        dcp->write_xml (
-               dcp::SMPTE,
+               dcp::Standard::SMPTE,
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::LocalTime().as_string(),
@@ -1311,7 +1311,7 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_subtitle_languages)
        }
 
        dcp->write_xml (
-               dcp::SMPTE,
+               dcp::Standard::SMPTE,
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::LocalTime().as_string(),
@@ -1365,7 +1365,7 @@ BOOST_AUTO_TEST_CASE (verify_missing_subtitle_start_time)
        auto reel_subs = make_shared<dcp::ReelSubtitleAsset>(subs, dcp::Fraction(24, 1), 240, 0);
        dcp->cpls().front()->reels().front()->add(reel_subs);
        dcp->write_xml (
-               dcp::SMPTE,
+               dcp::Standard::SMPTE,
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::LocalTime().as_string(),
@@ -1419,7 +1419,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_subtitle_start_time)
        auto reel_subs = make_shared<dcp::ReelSubtitleAsset>(subs, dcp::Fraction(24, 1), 240, 0);
        dcp->cpls().front()->reels().front()->add(reel_subs);
        dcp->write_xml (
-               dcp::SMPTE,
+               dcp::Standard::SMPTE,
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::LocalTime().as_string(),
@@ -1525,13 +1525,13 @@ BOOST_AUTO_TEST_CASE (verify_valid_subtitle_first_text_time_on_second_reel)
        markers2->set (dcp::Marker::LFOC, dcp::Time(16 * 24 - 1, 24, 24));
        reel2->add (markers2);
 
-       auto cpl = make_shared<dcp::CPL>("hello", dcp::TRAILER);
+       auto cpl = make_shared<dcp::CPL>("hello", dcp::ContentKind::TRAILER);
        cpl->add (reel1);
        cpl->add (reel2);
        auto dcp = make_shared<dcp::DCP>(dir);
        dcp->add (cpl);
        dcp->write_xml (
-               dcp::SMPTE,
+               dcp::Standard::SMPTE,
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::LocalTime().as_string(),
@@ -1797,12 +1797,12 @@ BOOST_AUTO_TEST_CASE (verify_invalid_sound_frame_rate)
        auto reel_sound = make_shared<dcp::ReelSoundAsset>(sound, 0);
        reel->add (reel_sound);
        reel->add (simple_markers());
-       auto cpl = make_shared<dcp::CPL>("hello", dcp::TRAILER);
+       auto cpl = make_shared<dcp::CPL>("hello", dcp::ContentKind::TRAILER);
        cpl->add (reel);
        auto dcp = make_shared<dcp::DCP>(dir);
        dcp->add (cpl);
        dcp->write_xml (
-               dcp::SMPTE,
+               dcp::Standard::SMPTE,
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::LocalTime().as_string(),
@@ -1823,7 +1823,7 @@ BOOST_AUTO_TEST_CASE (verify_missing_cpl_annotation_text)
        path const dir("build/test/verify_missing_cpl_annotation_text");
        auto dcp = make_simple (dir);
        dcp->write_xml (
-               dcp::SMPTE,
+               dcp::Standard::SMPTE,
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::LocalTime().as_string(),
@@ -1854,7 +1854,7 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_cpl_annotation_text)
        path const dir("build/test/verify_mismatched_cpl_annotation_text");
        auto dcp = make_simple (dir);
        dcp->write_xml (
-               dcp::SMPTE,
+               dcp::Standard::SMPTE,
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::LocalTime().as_string(),
@@ -1884,7 +1884,7 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_asset_duration)
        path const dir("build/test/verify_mismatched_asset_duration");
        prepare_directory (dir);
        shared_ptr<dcp::DCP> dcp (new dcp::DCP(dir));
-       shared_ptr<dcp::CPL> cpl (new dcp::CPL("A Test DCP", dcp::TRAILER));
+       shared_ptr<dcp::CPL> cpl (new dcp::CPL("A Test DCP", dcp::ContentKind::TRAILER));
 
        shared_ptr<dcp::MonoPictureAsset> mp = simple_picture (dir, "", 24);
        shared_ptr<dcp::SoundAsset> ms = simple_sound (dir, "", dcp::MXFMetadata(), "en-US", 25);
@@ -1899,7 +1899,7 @@ BOOST_AUTO_TEST_CASE (verify_mismatched_asset_duration)
 
        dcp->add (cpl);
        dcp->write_xml (
-               dcp::SMPTE,
+               dcp::Standard::SMPTE,
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::LocalTime().as_string(),
@@ -1922,7 +1922,7 @@ verify_subtitles_must_be_in_all_reels_check (path dir, bool add_to_reel1, bool a
 {
        prepare_directory (dir);
        auto dcp = make_shared<dcp::DCP>(dir);
-       auto cpl = make_shared<dcp::CPL>("A Test DCP", dcp::TRAILER);
+       auto cpl = make_shared<dcp::CPL>("A Test DCP", dcp::ContentKind::TRAILER);
 
        auto subs = make_shared<dcp::SMPTESubtitleAsset>();
        subs->set_language (dcp::LanguageTag("de-DE"));
@@ -1963,7 +1963,7 @@ verify_subtitles_must_be_in_all_reels_check (path dir, bool add_to_reel1, bool a
 
        dcp->add (cpl);
        dcp->write_xml (
-               dcp::SMPTE,
+               dcp::Standard::SMPTE,
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::LocalTime().as_string(),
@@ -2008,7 +2008,7 @@ verify_closed_captions_must_be_in_all_reels_check (path dir, int caps_in_reel1,
 {
        prepare_directory (dir);
        auto dcp = make_shared<dcp::DCP>(dir);
-       auto cpl = make_shared<dcp::CPL>("A Test DCP", dcp::TRAILER);
+       auto cpl = make_shared<dcp::CPL>("A Test DCP", dcp::ContentKind::TRAILER);
 
        auto subs = make_shared<dcp::SMPTESubtitleAsset>();
        subs->set_language (dcp::LanguageTag("de-DE"));
@@ -2048,7 +2048,7 @@ verify_closed_captions_must_be_in_all_reels_check (path dir, int caps_in_reel1,
 
        dcp->add (cpl);
        dcp->write_xml (
-               dcp::SMPTE,
+               dcp::Standard::SMPTE,
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::LocalTime().as_string(),
@@ -2092,7 +2092,7 @@ verify_text_entry_point_check (path dir, dcp::VerificationNote::Code code, boost
 {
        prepare_directory (dir);
        auto dcp = make_shared<dcp::DCP>(dir);
-       auto cpl = make_shared<dcp::CPL>("A Test DCP", dcp::TRAILER);
+       auto cpl = make_shared<dcp::CPL>("A Test DCP", dcp::ContentKind::TRAILER);
 
        auto subs = make_shared<dcp::SMPTESubtitleAsset>();
        subs->set_language (dcp::LanguageTag("de-DE"));
@@ -2115,7 +2115,7 @@ verify_text_entry_point_check (path dir, dcp::VerificationNote::Code code, boost
 
        dcp->add (cpl);
        dcp->write_xml (
-               dcp::SMPTE,
+               dcp::Standard::SMPTE,
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::LocalTime().as_string(),
@@ -2174,7 +2174,7 @@ BOOST_AUTO_TEST_CASE (verify_missing_hash)
        path const dir("build/test/verify_missing_hash");
        auto dcp = make_simple (dir);
        dcp->write_xml (
-               dcp::SMPTE,
+               dcp::Standard::SMPTE,
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::LocalTime().as_string(),
@@ -2208,14 +2208,14 @@ verify_markers_test (
        )
 {
        auto dcp = make_simple (dir);
-       dcp->cpls()[0]->set_content_kind (dcp::FEATURE);
+       dcp->cpls()[0]->set_content_kind (dcp::ContentKind::FEATURE);
        auto markers_asset = make_shared<dcp::ReelMarkersAsset>(dcp::Fraction(24, 1), 24, 0);
        for (auto const& i: markers) {
                markers_asset->set (i.first, i.second);
        }
        dcp->cpls()[0]->reels()[0]->add(markers_asset);
        dcp->write_xml (
-               dcp::SMPTE,
+               dcp::Standard::SMPTE,
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::LocalTime().as_string(),
@@ -2317,7 +2317,7 @@ BOOST_AUTO_TEST_CASE (verify_missing_cpl_metadata_version_number)
        auto cpl = dcp->cpls()[0];
        cpl->unset_version_number();
        dcp->write_xml (
-               dcp::SMPTE,
+               dcp::Standard::SMPTE,
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::LocalTime().as_string(),
@@ -2333,7 +2333,7 @@ BOOST_AUTO_TEST_CASE (verify_missing_extension_metadata1)
        path dir = "build/test/verify_missing_extension_metadata1";
        auto dcp = make_simple (dir);
        dcp->write_xml (
-               dcp::SMPTE,
+               dcp::Standard::SMPTE,
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::LocalTime().as_string(),
@@ -2361,7 +2361,7 @@ BOOST_AUTO_TEST_CASE (verify_missing_extension_metadata2)
        path dir = "build/test/verify_missing_extension_metadata2";
        auto dcp = make_simple (dir);
        dcp->write_xml (
-               dcp::SMPTE,
+               dcp::Standard::SMPTE,
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::LocalTime().as_string(),
@@ -2389,7 +2389,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_cpl_extension_metadata3)
        path dir = "build/test/verify_invalid_xml_cpl_extension_metadata3";
        auto dcp = make_simple (dir);
        dcp->write_xml (
-               dcp::SMPTE,
+               dcp::Standard::SMPTE,
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::LocalTime().as_string(),
@@ -2419,7 +2419,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_extension_metadata1)
        path dir = "build/test/verify_invalid_extension_metadata1";
        auto dcp = make_simple (dir);
        dcp->write_xml (
-               dcp::SMPTE,
+               dcp::Standard::SMPTE,
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::LocalTime().as_string(),
@@ -2447,7 +2447,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_extension_metadata2)
        path dir = "build/test/verify_invalid_extension_metadata2";
        auto dcp = make_simple (dir);
        dcp->write_xml (
-               dcp::SMPTE,
+               dcp::Standard::SMPTE,
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::LocalTime().as_string(),
@@ -2475,7 +2475,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_cpl_extension_metadata6)
        path dir = "build/test/verify_invalid_xml_cpl_extension_metadata6";
        auto dcp = make_simple (dir);
        dcp->write_xml (
-               dcp::SMPTE,
+               dcp::Standard::SMPTE,
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::LocalTime().as_string(),
@@ -2505,7 +2505,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_cpl_extension_metadata7)
        path dir = "build/test/verify_invalid_xml_cpl_extension_metadata7";
        auto dcp = make_simple (dir);
        dcp->write_xml (
-               dcp::SMPTE,
+               dcp::Standard::SMPTE,
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::LocalTime().as_string(),
@@ -2533,7 +2533,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_cpl_extension_metadata8)
        path dir = "build/test/verify_invalid_xml_cpl_extension_metadata8";
        auto dcp = make_simple (dir);
        dcp->write_xml (
-               dcp::SMPTE,
+               dcp::Standard::SMPTE,
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::LocalTime().as_string(),
@@ -2563,7 +2563,7 @@ BOOST_AUTO_TEST_CASE (verify_invalid_xml_cpl_extension_metadata9)
        path dir = "build/test/verify_invalid_xml_cpl_extension_metadata9";
        auto dcp = make_simple (dir);
        dcp->write_xml (
-               dcp::SMPTE,
+               dcp::Standard::SMPTE,
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::String::compose("libdcp %1", dcp::version),
                dcp::LocalTime().as_string(),
@@ -2683,11 +2683,11 @@ BOOST_AUTO_TEST_CASE (verify_partially_encrypted)
        signer->add (dcp::Certificate(dcp::file_to_string("test/ref/crypt/leaf.signed.pem")));
        signer->set_key (dcp::file_to_string("test/ref/crypt/leaf.key"));
 
-       auto cpl = make_shared<dcp::CPL>("A Test DCP", dcp::TRAILER);
+       auto cpl = make_shared<dcp::CPL>("A Test DCP", dcp::ContentKind::TRAILER);
 
        dcp::Key key;
 
-       auto mp = make_shared<dcp::MonoPictureAsset>(dcp::Fraction (24, 1), dcp::SMPTE);
+       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);
@@ -2723,7 +2723,7 @@ BOOST_AUTO_TEST_CASE (verify_partially_encrypted)
 
        d.add (cpl);
 
-       d.write_xml (dcp::SMPTE, "OpenDCP 0.0.25", "OpenDCP 0.0.25", "2012-07-17T04:45:18+00:00", "A Test DCP", signer);
+       d.write_xml (dcp::Standard::SMPTE, "OpenDCP 0.0.25", "OpenDCP 0.0.25", "2012-07-17T04:45:18+00:00", "A Test DCP", signer);
 
        check_verify_result ({dir}, {{dcp::VerificationNote::VERIFY_BV21_ERROR, dcp::VerificationNote::PARTIALLY_ENCRYPTED}});
 }
index fee2d84176248cbc31c2ac022ade79873104fe38..10d39f11b841f503fc89e2b74982351ad13076e3 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2015-2019 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2015-2021 Carl Hetherington <cth@carlh.net>
 
     This file is part of libdcp.
 
@@ -47,6 +47,7 @@
 using std::string;
 using std::shared_ptr;
 using std::vector;
+using std::make_shared;
 using boost::optional;
 
 /** Test dcp::order::Font::take_intersection */
@@ -96,10 +97,10 @@ BOOST_AUTO_TEST_CASE (take_difference_test)
 /** Test dcp::order::Subtitle::pull_fonts */
 BOOST_AUTO_TEST_CASE (pull_fonts_test1)
 {
-       shared_ptr<dcp::order::Part> root (new dcp::order::Part (shared_ptr<dcp::order::Part> ()));
-       shared_ptr<dcp::order::Subtitle> sub1 (new dcp::order::Subtitle (root, dcp::Time(), dcp::Time(), dcp::Time(), dcp::Time()));
+       auto root = make_shared<dcp::order::Part>(shared_ptr<dcp::order::Part>());
+       auto sub1 = make_shared<dcp::order::Subtitle>(root, dcp::Time(), dcp::Time(), dcp::Time(), dcp::Time());
        root->children.push_back (sub1);
-       shared_ptr<dcp::order::Text> text1 (new dcp::order::Text (sub1, dcp::HALIGN_CENTER, 0, dcp::VALIGN_TOP, 0, dcp::DIRECTION_LTR));
+       auto text1 = make_shared<dcp::order::Text>(sub1, dcp::HAlign::CENTER, 0, dcp::VAlign::TOP, 0, dcp::Direction::LTR);
        sub1->children.push_back (text1);
        text1->font._values["font"] = "Inconsolata";
        text1->font._values["size"] = "42";
@@ -118,11 +119,11 @@ BOOST_AUTO_TEST_CASE (pull_fonts_test2)
        shared_ptr<dcp::order::Part> root (new dcp::order::Part (shared_ptr<dcp::order::Part> ()));
        shared_ptr<dcp::order::Subtitle> sub1 (new dcp::order::Subtitle (root, dcp::Time(), dcp::Time(), dcp::Time(), dcp::Time()));
        root->children.push_back (sub1);
-       shared_ptr<dcp::order::Text> text1 (new dcp::order::Text (sub1, dcp::HALIGN_CENTER, 0, dcp::VALIGN_TOP, 0, dcp::DIRECTION_LTR));
+       shared_ptr<dcp::order::Text> text1 (new dcp::order::Text (sub1, dcp::HAlign::CENTER, 0, dcp::VAlign::TOP, 0, dcp::Direction::LTR));
        sub1->children.push_back (text1);
        text1->font._values["font"] = "Inconsolata";
        text1->font._values["size"] = "42";
-       shared_ptr<dcp::order::Text> text2 (new dcp::order::Text (sub1, dcp::HALIGN_CENTER, 0, dcp::VALIGN_TOP, 0, dcp::DIRECTION_LTR));
+       shared_ptr<dcp::order::Text> text2 (new dcp::order::Text (sub1, dcp::HAlign::CENTER, 0, dcp::VAlign::TOP, 0, dcp::Direction::LTR));
        sub1->children.push_back (text2);
        text2->font._values["font"] = "Inconsolata";
        text2->font._values["size"] = "48";
@@ -143,7 +144,7 @@ BOOST_AUTO_TEST_CASE (pull_fonts_test3)
        shared_ptr<dcp::order::Part> root (new dcp::order::Part (shared_ptr<dcp::order::Part> ()));
        shared_ptr<dcp::order::Subtitle> sub1 (new dcp::order::Subtitle (root, dcp::Time(), dcp::Time(), dcp::Time(), dcp::Time()));
        root->children.push_back (sub1);
-       shared_ptr<dcp::order::Text> text1 (new dcp::order::Text (sub1, dcp::HALIGN_CENTER, 0, dcp::VALIGN_TOP, 0, dcp::DIRECTION_LTR));
+       shared_ptr<dcp::order::Text> text1 (new dcp::order::Text (sub1, dcp::HAlign::CENTER, 0, dcp::VAlign::TOP, 0, dcp::Direction::LTR));
        sub1->children.push_back (text1);
        dcp::order::Font font;
        font._values["font"] = "Inconsolata";
@@ -179,12 +180,12 @@ BOOST_AUTO_TEST_CASE (write_interop_subtitle_test)
                                dcp::Time (0, 4,  9, 22, 24),
                                dcp::Time (0, 4, 11, 22, 24),
                                0,
-                               dcp::HALIGN_CENTER,
+                               dcp::HAlign::CENTER,
                                0.8,
-                               dcp::VALIGN_TOP,
-                               dcp::DIRECTION_LTR,
+                               dcp::VAlign::TOP,
+                               dcp::Direction::LTR,
                                "Hello world",
-                               dcp::NONE,
+                               dcp::Effect::NONE,
                                dcp::Colour (0, 0, 0),
                                dcp::Time (0, 0, 0, 0, 24),
                                dcp::Time (0, 0, 0, 0, 24)
@@ -205,12 +206,12 @@ BOOST_AUTO_TEST_CASE (write_interop_subtitle_test)
                                dcp::Time (5, 41,  0, 21, 24),
                                dcp::Time (6, 12, 15, 21, 24),
                                0,
-                               dcp::HALIGN_CENTER,
+                               dcp::HAlign::CENTER,
                                0.4,
-                               dcp::VALIGN_BOTTOM,
-                               dcp::DIRECTION_LTR,
+                               dcp::VAlign::BOTTOM,
+                               dcp::Direction::LTR,
                                "What's going on",
-                               dcp::BORDER,
+                               dcp::Effect::BORDER,
                                dcp::Colour (1, 2, 3),
                                dcp::Time (1, 2, 3, 4, 24),
                                dcp::Time (5, 6, 7, 8, 24)
@@ -265,12 +266,12 @@ BOOST_AUTO_TEST_CASE (write_interop_subtitle_test2)
                                dcp::Time (0, 4,  9, 22, 24),
                                dcp::Time (0, 4, 11, 22, 24),
                                -0.2,
-                               dcp::HALIGN_CENTER,
+                               dcp::HAlign::CENTER,
                                0.8,
-                               dcp::VALIGN_TOP,
-                               dcp::DIRECTION_LTR,
+                               dcp::VAlign::TOP,
+                               dcp::Direction::LTR,
                                "Hello world",
-                               dcp::NONE,
+                               dcp::Effect::NONE,
                                dcp::Colour (0, 0, 0),
                                dcp::Time (0, 0, 0, 0, 24),
                                dcp::Time (0, 0, 0, 0, 24)
@@ -291,12 +292,12 @@ BOOST_AUTO_TEST_CASE (write_interop_subtitle_test2)
                                dcp::Time (5, 41,  0, 21, 24),
                                dcp::Time (6, 12, 15, 21, 24),
                                -0.2,
-                               dcp::HALIGN_CENTER,
+                               dcp::HAlign::CENTER,
                                0.4,
-                               dcp::VALIGN_BOTTOM,
-                               dcp::DIRECTION_LTR,
+                               dcp::VAlign::BOTTOM,
+                               dcp::Direction::LTR,
                                "What's going on",
-                               dcp::BORDER,
+                               dcp::Effect::BORDER,
                                dcp::Colour (1, 2, 3),
                                dcp::Time (1, 2, 3, 4, 24),
                                dcp::Time (5, 6, 7, 8, 24)
@@ -345,9 +346,9 @@ BOOST_AUTO_TEST_CASE (write_interop_subtitle_test3)
                                dcp::Time (0, 4,  9, 22, 24),
                                dcp::Time (0, 4, 11, 22, 24),
                                0,
-                               dcp::HALIGN_CENTER,
+                               dcp::HAlign::CENTER,
                                0.8,
-                               dcp::VALIGN_TOP,
+                               dcp::VAlign::TOP,
                                dcp::Time (0, 0, 0, 0, 24),
                                dcp::Time (0, 0, 0, 0, 24)
                                )
@@ -367,20 +368,20 @@ BOOST_AUTO_TEST_CASE (write_interop_subtitle_test3)
        string const creator = "libdcp";
        string const annotation_text = "Created by libdcp";
 
-       shared_ptr<dcp::CPL> cpl (new dcp::CPL ("My film", dcp::FEATURE));
+       auto cpl = make_shared<dcp::CPL>("My film", dcp::ContentKind::FEATURE);
        cpl->add (reel);
        cpl->set_issuer (issuer);
        cpl->set_creator (creator);
        cpl->set_issue_date (issue_date);
        cpl->set_annotation_text (annotation_text);
-       optional<dcp::ContentVersion> cv = cpl->content_version();
+       auto cv = cpl->content_version();
        BOOST_REQUIRE (cv);
        cv->label_text = "foo";
        cpl->set_content_version (*cv);
 
        dcp::DCP dcp ("build/test/write_interop_subtitle_test3");
        dcp.add (cpl);
-       dcp.write_xml (dcp::INTEROP, issuer, creator, issue_date, annotation_text);
+       dcp.write_xml (dcp::Standard::INTEROP, issuer, creator, issue_date, annotation_text);
 
        check_xml (
                dcp::file_to_string("test/ref/write_interop_subtitle_test3/subs.xml"),
@@ -412,54 +413,50 @@ BOOST_AUTO_TEST_CASE (write_smpte_subtitle_test)
        c.set_issue_date (dcp::LocalTime ("2016-04-01T03:52:00+00:00"));
 
        c.add (
-               shared_ptr<dcp::Subtitle> (
-                       new dcp::SubtitleString (
-                               string ("Frutiger"),
-                               false,
-                               false,
-                               false,
-                               dcp::Colour (255, 255, 255),
-                               48,
-                               1.0,
-                               dcp::Time (0, 4,  9, 22, 24),
-                               dcp::Time (0, 4, 11, 22, 24),
-                               0,
-                               dcp::HALIGN_CENTER,
-                               0.8,
-                               dcp::VALIGN_TOP,
-                               dcp::DIRECTION_LTR,
-                               "Hello world",
-                               dcp::NONE,
-                               dcp::Colour (0, 0, 0),
-                               dcp::Time (0, 0, 0, 0, 24),
-                               dcp::Time (0, 0, 0, 0, 24)
-                               )
+               make_shared<dcp::SubtitleString> (
+                       string ("Frutiger"),
+                       false,
+                       false,
+                       false,
+                       dcp::Colour (255, 255, 255),
+                       48,
+                       1.0,
+                       dcp::Time (0, 4,  9, 22, 24),
+                       dcp::Time (0, 4, 11, 22, 24),
+                       0,
+                       dcp::HAlign::CENTER,
+                       0.8,
+                       dcp::VAlign::TOP,
+                       dcp::Direction::LTR,
+                       "Hello world",
+                       dcp::Effect::NONE,
+                       dcp::Colour (0, 0, 0),
+                       dcp::Time (0, 0, 0, 0, 24),
+                       dcp::Time (0, 0, 0, 0, 24)
                        )
                );
 
        c.add (
-               shared_ptr<dcp::Subtitle> (
-                       new dcp::SubtitleString (
-                               boost::optional<string> (),
-                               true,
-                               true,
-                               true,
-                               dcp::Colour (128, 0, 64),
-                               91,
-                               1.0,
-                               dcp::Time (5, 41,  0, 21, 24),
-                               dcp::Time (6, 12, 15, 21, 24),
-                               0,
-                               dcp::HALIGN_CENTER,
-                               0.4,
-                               dcp::VALIGN_BOTTOM,
-                               dcp::DIRECTION_RTL,
-                               "What's going on",
-                               dcp::BORDER,
-                               dcp::Colour (1, 2, 3),
-                               dcp::Time (1, 2, 3, 4, 24),
-                               dcp::Time (5, 6, 7, 8, 24)
-                               )
+               make_shared<dcp::SubtitleString>(
+                       boost::optional<string> (),
+                       true,
+                       true,
+                       true,
+                       dcp::Colour (128, 0, 64),
+                       91,
+                       1.0,
+                       dcp::Time (5, 41,  0, 21, 24),
+                       dcp::Time (6, 12, 15, 21, 24),
+                       0,
+                       dcp::HAlign::CENTER,
+                       0.4,
+                       dcp::VAlign::BOTTOM,
+                       dcp::Direction::RTL,
+                       "What's going on",
+                       dcp::Effect::BORDER,
+                       dcp::Colour (1, 2, 3),
+                       dcp::Time (1, 2, 3, 4, 24),
+                       dcp::Time (5, 6, 7, 8, 24)
                        )
                );
 
@@ -505,165 +502,153 @@ BOOST_AUTO_TEST_CASE (write_smpte_subtitle_test2)
        c.set_issue_date (dcp::LocalTime ("2016-04-01T03:52:00+00:00"));
 
        c.add (
-               shared_ptr<dcp::Subtitle> (
-                       new dcp::SubtitleString (
-                               string ("Arial"),
-                               false,
-                               false,
-                               false,
-                               dcp::Colour (255, 255, 255),
-                               48,
-                               1.0,
-                               dcp::Time (0, 0, 1, 0, 24),
-                               dcp::Time (0, 0, 9, 0, 24),
-                               0,
-                               dcp::HALIGN_CENTER,
-                               0.8,
-                               dcp::VALIGN_TOP,
-                               dcp::DIRECTION_LTR,
-                               "Testing is ",
-                               dcp::NONE,
-                               dcp::Colour (0, 0, 0),
-                               dcp::Time (0, 0, 0, 0, 24),
-                               dcp::Time (0, 0, 0, 0, 24)
-                               )
+               make_shared<dcp::SubtitleString>(
+                       string ("Arial"),
+                       false,
+                       false,
+                       false,
+                       dcp::Colour (255, 255, 255),
+                       48,
+                       1.0,
+                       dcp::Time (0, 0, 1, 0, 24),
+                       dcp::Time (0, 0, 9, 0, 24),
+                       0,
+                       dcp::HAlign::CENTER,
+                       0.8,
+                       dcp::VAlign::TOP,
+                       dcp::Direction::LTR,
+                       "Testing is ",
+                       dcp::Effect::NONE,
+                       dcp::Colour (0, 0, 0),
+                       dcp::Time (0, 0, 0, 0, 24),
+                       dcp::Time (0, 0, 0, 0, 24)
                        )
                );
 
        c.add (
-               shared_ptr<dcp::Subtitle> (
-                       new dcp::SubtitleString (
-                               string ("Arial"),
-                               true,
-                               false,
-                               false,
-                               dcp::Colour (255, 255, 255),
-                               48,
-                               1.0,
-                               dcp::Time (0, 0, 1, 0, 24),
-                               dcp::Time (0, 0, 9, 0, 24),
-                               0,
-                               dcp::HALIGN_CENTER,
-                               0.8,
-                               dcp::VALIGN_TOP,
-                               dcp::DIRECTION_LTR,
-                               "really",
-                               dcp::NONE,
-                               dcp::Colour (0, 0, 0),
-                               dcp::Time (0, 0, 0, 0, 24),
-                               dcp::Time (0, 0, 0, 0, 24)
-                               )
+               make_shared<dcp::SubtitleString>(
+                       string ("Arial"),
+                       true,
+                       false,
+                       false,
+                       dcp::Colour (255, 255, 255),
+                       48,
+                       1.0,
+                       dcp::Time (0, 0, 1, 0, 24),
+                       dcp::Time (0, 0, 9, 0, 24),
+                       0,
+                       dcp::HAlign::CENTER,
+                       0.8,
+                       dcp::VAlign::TOP,
+                       dcp::Direction::LTR,
+                       "really",
+                       dcp::Effect::NONE,
+                       dcp::Colour (0, 0, 0),
+                       dcp::Time (0, 0, 0, 0, 24),
+                       dcp::Time (0, 0, 0, 0, 24)
                        )
                );
 
        c.add (
-               shared_ptr<dcp::Subtitle> (
-                       new dcp::SubtitleString (
-                               string ("Arial"),
-                               false,
-                               false,
-                               false,
-                               dcp::Colour (255, 255, 255),
-                               48,
-                               1.0,
-                               dcp::Time (0, 0, 1, 0, 24),
-                               dcp::Time (0, 0, 9, 0, 24),
-                               0,
-                               dcp::HALIGN_CENTER,
-                               0.8,
-                               dcp::VALIGN_TOP,
-                               dcp::DIRECTION_LTR,
-                               " fun",
-                               dcp::NONE,
-                               dcp::Colour (0, 0, 0),
-                               dcp::Time (0, 0, 0, 0, 24),
-                               dcp::Time (0, 0, 0, 0, 24)
-                               )
+               make_shared<dcp::SubtitleString>(
+                       string ("Arial"),
+                       false,
+                       false,
+                       false,
+                       dcp::Colour (255, 255, 255),
+                       48,
+                       1.0,
+                       dcp::Time (0, 0, 1, 0, 24),
+                       dcp::Time (0, 0, 9, 0, 24),
+                       0,
+                       dcp::HAlign::CENTER,
+                       0.8,
+                       dcp::VAlign::TOP,
+                       dcp::Direction::LTR,
+                       " fun",
+                       dcp::Effect::NONE,
+                       dcp::Colour (0, 0, 0),
+                       dcp::Time (0, 0, 0, 0, 24),
+                       dcp::Time (0, 0, 0, 0, 24)
                        )
                );
 
        c.add (
-               shared_ptr<dcp::Subtitle> (
-                       new dcp::SubtitleString (
-                               string ("Arial"),
-                               false,
-                               false,
-                               false,
-                               dcp::Colour (255, 255, 255),
-                               48,
-                               1.0,
-                               dcp::Time (0, 0, 1, 0, 24),
-                               dcp::Time (0, 0, 9, 0, 24),
-                               0,
-                               dcp::HALIGN_CENTER,
-                               0.9,
-                               dcp::VALIGN_TOP,
-                               dcp::DIRECTION_LTR,
-                               "This is the ",
-                               dcp::NONE,
-                               dcp::Colour (0, 0, 0),
-                               dcp::Time (0, 0, 0, 0, 24),
-                               dcp::Time (0, 0, 0, 0, 24)
-                               )
+               make_shared<dcp::SubtitleString>(
+                       string ("Arial"),
+                       false,
+                       false,
+                       false,
+                       dcp::Colour (255, 255, 255),
+                       48,
+                       1.0,
+                       dcp::Time (0, 0, 1, 0, 24),
+                       dcp::Time (0, 0, 9, 0, 24),
+                       0,
+                       dcp::HAlign::CENTER,
+                       0.9,
+                       dcp::VAlign::TOP,
+                       dcp::Direction::LTR,
+                       "This is the ",
+                       dcp::Effect::NONE,
+                       dcp::Colour (0, 0, 0),
+                       dcp::Time (0, 0, 0, 0, 24),
+                       dcp::Time (0, 0, 0, 0, 24)
                        )
                );
 
        c.add (
-               shared_ptr<dcp::Subtitle> (
-                       new dcp::SubtitleString (
-                               string ("Arial"),
-                               true,
-                               false,
-                               false,
-                               dcp::Colour (255, 255, 255),
-                               48,
-                               1.0,
-                               dcp::Time (0, 0, 1, 0, 24),
-                               dcp::Time (0, 0, 9, 0, 24),
-                               0,
-                               dcp::HALIGN_CENTER,
-                               0.9,
-                               dcp::VALIGN_TOP,
-                               dcp::DIRECTION_LTR,
-                               "second",
-                               dcp::NONE,
-                               dcp::Colour (0, 0, 0),
-                               dcp::Time (0, 0, 0, 0, 24),
-                               dcp::Time (0, 0, 0, 0, 24)
-                               )
+               make_shared<dcp::SubtitleString>(
+                       string ("Arial"),
+                       true,
+                       false,
+                       false,
+                       dcp::Colour (255, 255, 255),
+                       48,
+                       1.0,
+                       dcp::Time (0, 0, 1, 0, 24),
+                       dcp::Time (0, 0, 9, 0, 24),
+                       0,
+                       dcp::HAlign::CENTER,
+                       0.9,
+                       dcp::VAlign::TOP,
+                       dcp::Direction::LTR,
+                       "second",
+                       dcp::Effect::NONE,
+                       dcp::Colour (0, 0, 0),
+                       dcp::Time (0, 0, 0, 0, 24),
+                       dcp::Time (0, 0, 0, 0, 24)
                        )
                );
 
        c.add (
-               shared_ptr<dcp::Subtitle> (
-                       new dcp::SubtitleString (
-                               string ("Arial"),
-                               false,
-                               false,
-                               false,
-                               dcp::Colour (255, 255, 255),
-                               48,
-                               1.0,
-                               dcp::Time (0, 0, 1, 0, 24),
-                               dcp::Time (0, 0, 9, 0, 24),
-                               0,
-                               dcp::HALIGN_CENTER,
-                               0.9,
-                               dcp::VALIGN_TOP,
-                               dcp::DIRECTION_LTR,
-                               " line",
-                               dcp::NONE,
-                               dcp::Colour (0, 0, 0),
-                               dcp::Time (0, 0, 0, 0, 24),
-                               dcp::Time (0, 0, 0, 0, 24)
-                               )
+               make_shared<dcp::SubtitleString>(
+                       string ("Arial"),
+                       false,
+                       false,
+                       false,
+                       dcp::Colour (255, 255, 255),
+                       48,
+                       1.0,
+                       dcp::Time (0, 0, 1, 0, 24),
+                       dcp::Time (0, 0, 9, 0, 24),
+                       0,
+                       dcp::HAlign::CENTER,
+                       0.9,
+                       dcp::VAlign::TOP,
+                       dcp::Direction::LTR,
+                       " line",
+                       dcp::Effect::NONE,
+                       dcp::Colour (0, 0, 0),
+                       dcp::Time (0, 0, 0, 0, 24),
+                       dcp::Time (0, 0, 0, 0, 24)
                        )
                );
 
        c._xml_id = "a6c58cff-3e1e-4b38-acec-a42224475ef6";
 
        check_xml (
-               c.xml_as_string (),
+               c.xml_as_string(),
                "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
                "<dcst:SubtitleReel xmlns:dcst=\"http://www.smpte-ra.org/schemas/428-7/2010/DCST\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">"
                  "<dcst:Id>urn:uuid:a6c58cff-3e1e-4b38-acec-a42224475ef6</dcst:Id>"
@@ -703,20 +688,18 @@ BOOST_AUTO_TEST_CASE (write_smpte_subtitle_test3)
        c.set_content_title_text ("Test");
 
        c.add (
-               shared_ptr<dcp::Subtitle> (
-                       new dcp::SubtitleImage (
-                               dcp::ArrayData ("test/data/sub.png"),
-                               dcp::Time (0, 4,  9, 22, 24),
-                               dcp::Time (0, 4, 11, 22, 24),
-                               0,
-                               dcp::HALIGN_CENTER,
-                               0.8,
-                               dcp::VALIGN_TOP,
-                               dcp::Time (0, 0, 0, 0, 24),
-                               dcp::Time (0, 0, 0, 0, 24)
-                               )
+               make_shared<dcp::SubtitleImage>(
+                       dcp::ArrayData ("test/data/sub.png"),
+                       dcp::Time (0, 4,  9, 22, 24),
+                       dcp::Time (0, 4, 11, 22, 24),
+                       0,
+                       dcp::HAlign::CENTER,
+                       0.8,
+                       dcp::VAlign::TOP,
+                       dcp::Time (0, 0, 0, 0, 24),
+                       dcp::Time (0, 0, 0, 0, 24)
                        )
-               );
+             );
 
        c._id = "a6c58cff-3e1e-4b38-acec-a42224475ef6";
 
index 7da55ccc2677de2dd6184d9a2200b2bcc47835ed..a9d7871269bb2463a693f6919f70775798cae641 100644 (file)
@@ -83,7 +83,7 @@ help (string n)
 void
 note (NoteType t, string n)
 {
-       if (t == DCP_ERROR || verbose) {
+       if (t == NoteType::ERROR || verbose) {
                cout << " " << n << "\n";
                cout.flush ();
        }
index aa1ce8c2425f8e1167991a83c4794f3f787ec5b4..18272dcfdcedc55df575de85eb2f12e6c45d2c98 100644 (file)
@@ -143,7 +143,7 @@ main_picture (vector<string> const& only, shared_ptr<Reel> reel, bool analyse, b
                OUTPUT_PICTURE(
                        " duration %1 (%2) intrinsic %3",
                        *mp->duration(),
-                       dcp::Time(*mp->duration(), mp->frame_rate().as_float(), mp->frame_rate().as_float()).as_string(dcp::SMPTE),
+                       dcp::Time(*mp->duration(), mp->frame_rate().as_float(), mp->frame_rate().as_float()).as_string(dcp::Standard::SMPTE),
                        mp->intrinsic_duration()
                        );
        } else {
@@ -433,7 +433,7 @@ main (int argc, char* argv[])
                }
        }
 
-       OUTPUT_TOTAL_TIME("Total: %1\n", total_time.as_string(dcp::SMPTE));
+       OUTPUT_TOTAL_TIME("Total: %1\n", total_time.as_string(dcp::Standard::SMPTE));
 
        return 0;
 }
index 7bf06e1908ca35317909cd73b5cbccc83b719084..60fcf902a13e0833b029be9d55eac75475b724f4 100644 (file)
@@ -132,7 +132,7 @@ try
                        BOOST_FOREACH (dcp::DecryptedKDMKey i, dec_kdm.keys ()) {
                                cout << "\n";
                                cout << "\tID:       " << i.id() << "\n";
-                               cout << "\tStandard: " << (i.standard() == dcp::SMPTE ? "SMPTE" : "Interop") << "\n";
+                               cout << "\tStandard: " << (i.standard() == dcp::Standard::SMPTE ? "SMPTE" : "Interop") << "\n";
                                cout << "\tCPL ID:   " << i.cpl_id() << "\n";
                                if (i.type()) {
                                        cout << "\tType:     " << i.type().get() << "\n";
index 49699f5e54108cf6347892217474590a9c2d1fa0..b5790992817549647091eed3bc6c862550ca1423 100644 (file)
@@ -156,7 +156,7 @@ main (int argc, char* argv[])
                dcp::DCP fixed (*output);
                fixed.add (cpl);
                fixed.resolve_refs (assets);
-               fixed.write_xml (dcp::INTEROP);
+               fixed.write_xml (dcp::Standard::INTEROP);
                cout << "Fixed XML files written to " << output->string() << "\n";
        }