diff options
| author | Carl Hetherington <cth@carlh.net> | 2016-01-10 14:13:43 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2016-01-10 14:13:43 +0000 |
| commit | 0ffc4c35a9ae232f3bed9329997c043c42372f6f (patch) | |
| tree | 9d1373403362572518600e163e7caad2f63b67a4 /src/dc_package.cc | |
| parent | 93f29880839dc5589bb35f63260a7152ead7655f (diff) | |
Template Package and bring some stuff up to there and PackageBase.
Diffstat (limited to 'src/dc_package.cc')
| -rw-r--r-- | src/dc_package.cc | 133 |
1 files changed, 1 insertions, 132 deletions
diff --git a/src/dc_package.cc b/src/dc_package.cc index e1c69b63..b78f3e85 100644 --- a/src/dc_package.cc +++ b/src/dc_package.cc @@ -66,38 +66,11 @@ using boost::algorithm::starts_with; using namespace dcp::dc; Package::Package (boost::filesystem::path directory) - : dcp::Package (directory) + : dcp::Package<CPL> (directory) { } -void -Package::read (bool keep_going, ReadErrors* errors) -{ - list<shared_ptr<dcp::Asset> > other_assets; - - BOOST_FOREACH (shared_ptr<dcp::Asset> i, read_assetmap (keep_going, errors)) { - shared_ptr<CPL> cpl = dynamic_pointer_cast<CPL> (i); - if (cpl) { - _cpls.push_back (cpl); - } else { - other_assets.push_back (i); - } - } - - BOOST_FOREACH (shared_ptr<CPL> i, cpls ()) { - i->resolve_refs (other_assets); - } -} - -void -Package::resolve_refs (list<shared_ptr<dcp::Asset> > assets) -{ - BOOST_FOREACH (shared_ptr<CPL> i, cpls ()) { - i->resolve_refs (assets); - } -} - bool Package::equals (Package const & other, dcp::EqualityOptions opt, dcp::NoteHandler note) const { @@ -198,110 +171,6 @@ Package::write_pkl (dcp::Standard standard, string pkl_uuid, dcp::XMLMetadata me return p.string (); } -/** Write the VOLINDEX file. - * @param standard DCP standard to use (INTEROP or SMPTE) - */ -void -Package::write_volindex (Standard standard) const -{ - boost::filesystem::path p = _directory; - switch (standard) { - case DCP_INTEROP: - p /= "VOLINDEX"; - break; - case DCP_SMPTE: - p /= "VOLINDEX.xml"; - break; - case IMP: - /* XXX */ - DCP_ASSERT (false); - break; - } - - xmlpp::Document doc; - xmlpp::Element* root = 0; - - switch (standard) { - case DCP_INTEROP: - root = doc.create_root_node ("VolumeIndex", "http://www.digicine.com/PROTO-ASDCP-AM-20040311#"); - break; - case DCP_SMPTE: - case IMP: - root = doc.create_root_node ("VolumeIndex", "http://www.smpte-ra.org/schemas/429-9/2007/AM"); - break; - } - - root->add_child("Index")->add_child_text ("1"); - doc.write_to_file (p.string (), "UTF-8"); -} - -void -Package::write_assetmap (Standard standard, string pkl_uuid, int pkl_length, dcp::XMLMetadata metadata) const -{ - boost::filesystem::path p = _directory; - - switch (standard) { - case DCP_INTEROP: - p /= "ASSETMAP"; - break; - case DCP_SMPTE: - case IMP: - p /= "ASSETMAP.xml"; - break; - } - - xmlpp::Document doc; - xmlpp::Element* root = 0; - - switch (standard) { - case DCP_INTEROP: - root = doc.create_root_node ("AssetMap", "http://www.digicine.com/PROTO-ASDCP-AM-20040311#"); - break; - case DCP_SMPTE: - case IMP: - root = doc.create_root_node ("AssetMap", "http://www.smpte-ra.org/schemas/429-9/2007/AM"); - break; - } - - root->add_child("Id")->add_child_text ("urn:uuid:" + make_uuid()); - root->add_child("AnnotationText")->add_child_text ("Created by " + metadata.creator); - - switch (standard) { - case DCP_INTEROP: - root->add_child("VolumeCount")->add_child_text ("1"); - root->add_child("IssueDate")->add_child_text (metadata.issue_date); - root->add_child("Issuer")->add_child_text (metadata.issuer); - root->add_child("Creator")->add_child_text (metadata.creator); - break; - case DCP_SMPTE: - case IMP: - root->add_child("Creator")->add_child_text (metadata.creator); - root->add_child("VolumeCount")->add_child_text ("1"); - root->add_child("IssueDate")->add_child_text (metadata.issue_date); - root->add_child("Issuer")->add_child_text (metadata.issuer); - break; - } - - xmlpp::Node* asset_list = root->add_child ("AssetList"); - - xmlpp::Node* asset = asset_list->add_child ("Asset"); - asset->add_child("Id")->add_child_text ("urn:uuid:" + pkl_uuid); - asset->add_child("PackingList")->add_child_text ("true"); - xmlpp::Node* chunk_list = asset->add_child ("ChunkList"); - xmlpp::Node* chunk = chunk_list->add_child ("Chunk"); - chunk->add_child("Path")->add_child_text ("pkl_" + pkl_uuid + ".xml"); - chunk->add_child("VolumeIndex")->add_child_text ("1"); - chunk->add_child("Offset")->add_child_text ("0"); - chunk->add_child("Length")->add_child_text (raw_convert<string> (pkl_length)); - - BOOST_FOREACH (shared_ptr<dcp::Asset> i, assets ()) { - i->write_to_assetmap (asset_list, _directory); - } - - /* This must not be the _formatted version otherwise signature digests will be wrong */ - doc.write_to_file (p.string (), "UTF-8"); -} - /** Write all the XML files for this DCP. * @param standand INTEROP or SMPTE. * @param metadata Metadata to use for PKL and asset map files. |
