summaryrefslogtreecommitdiff
path: root/src/dc_package.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2016-01-10 14:13:43 +0000
committerCarl Hetherington <cth@carlh.net>2016-01-10 14:13:43 +0000
commit0ffc4c35a9ae232f3bed9329997c043c42372f6f (patch)
tree9d1373403362572518600e163e7caad2f63b67a4 /src/dc_package.cc
parent93f29880839dc5589bb35f63260a7152ead7655f (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.cc133
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.