summaryrefslogtreecommitdiff
path: root/src/picture_asset.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-07-06 20:30:19 +0100
committerCarl Hetherington <cth@carlh.net>2013-07-06 20:30:19 +0100
commitdcccb2dd1d180b8be67e539395dccbe82b0fb5a8 (patch)
tree53b76a2df1343e5896bc9462ec8661179ede2ee3 /src/picture_asset.cc
parent5f71c3f0a7a041b3621f7325915d1105424f7e53 (diff)
Move some CPL writing from picture/sound assets to the MXF. Pick up key_id from CPL assets and hence provide and test for encrypted() method on DCP.
Diffstat (limited to 'src/picture_asset.cc')
-rw-r--r--src/picture_asset.cc30
1 files changed, 18 insertions, 12 deletions
diff --git a/src/picture_asset.cc b/src/picture_asset.cc
index c6a95c74..c9e1da45 100644
--- a/src/picture_asset.cc
+++ b/src/picture_asset.cc
@@ -65,21 +65,27 @@ PictureAsset::PictureAsset (string directory, string mxf_name)
}
+string
+PictureAsset::cpl_node_name () const
+{
+ return "MainPicture";
+}
+
void
PictureAsset::write_to_cpl (xmlpp::Node* node) const
{
- xmlpp::Node* mp = node->add_child ("MainPicture");
- mp->add_child ("Id")->add_child_text ("urn:uuid:" + _uuid);
- mp->add_child ("AnnotationText")->add_child_text (_file_name);
- mp->add_child ("EditRate")->add_child_text (lexical_cast<string> (_edit_rate) + " 1");
- mp->add_child ("IntrinsicDuration")->add_child_text (lexical_cast<string> (_intrinsic_duration));
- mp->add_child ("EntryPoint")->add_child_text (lexical_cast<string> (_entry_point));
- mp->add_child ("Duration")->add_child_text (lexical_cast<string> (_duration));
- if (_encrypted) {
- mp->add_child("KeyId")->add_child_text("urn:uuid:" + _key_id);
- }
- mp->add_child ("FrameRate")->add_child_text (lexical_cast<string> (_edit_rate) + " 1");
- mp->add_child ("ScreenAspectRatio")->add_child_text (lexical_cast<string> (_size.width) + " " + lexical_cast<string> (_size.height));
+ MXFAsset::write_to_cpl (node);
+
+ xmlpp::Node::NodeList c = node->get_children ();
+ xmlpp::Node::NodeList::iterator i = c.begin();
+ while (i != c.end() && (*i)->get_name() != cpl_node_name ()) {
+ ++i;
+ }
+
+ assert (i != c.end ());
+
+ (*i)->add_child ("FrameRate")->add_child_text (lexical_cast<string> (_edit_rate) + " 1");
+ (*i)->add_child ("ScreenAspectRatio")->add_child_text (lexical_cast<string> (_size.width) + " " + lexical_cast<string> (_size.height));
}
bool