summaryrefslogtreecommitdiff
path: root/src/reel_picture_asset.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2015-06-05 01:51:24 +0100
committerCarl Hetherington <cth@carlh.net>2015-06-05 01:51:24 +0100
commitb038dc192bdac76da3b1bebdd6b448e8be830814 (patch)
treea21f6ab4fce16b514c97c41039733d81175020cd /src/reel_picture_asset.cc
parente6913e8eb44e1dc990ef89f19ab64792880898a5 (diff)
Fix ordering of KeyId tag in SMPTE CPLs.
Diffstat (limited to 'src/reel_picture_asset.cc')
-rw-r--r--src/reel_picture_asset.cc23
1 files changed, 12 insertions, 11 deletions
diff --git a/src/reel_picture_asset.cc b/src/reel_picture_asset.cc
index 6bac3bce..d08f1781 100644
--- a/src/reel_picture_asset.cc
+++ b/src/reel_picture_asset.cc
@@ -71,26 +71,27 @@ ReelPictureAsset::ReelPictureAsset (shared_ptr<const cxml::Node> node)
void
ReelPictureAsset::write_to_cpl (xmlpp::Node* node, Standard standard) const
{
- ReelMXFAsset::write_to_cpl (node, standard);
+ ReelAsset::write_to_cpl (node, standard);
- 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;
- }
-
- DCP_ASSERT (i != c.end ());
+ /* Find <MainPicture> */
+ xmlpp::Node* mp = find_child (node, cpl_node_name ());
- (*i)->add_child ("FrameRate")->add_child_text (String::compose ("%1 %2", _frame_rate.numerator, _frame_rate.denominator));
+ mp->add_child ("FrameRate")->add_child_text (String::compose ("%1 %2", _frame_rate.numerator, _frame_rate.denominator));
if (standard == INTEROP) {
stringstream s;
s << std::fixed << std::setprecision (2) << (float (_screen_aspect_ratio.numerator) / _screen_aspect_ratio.denominator);
- (*i)->add_child ("ScreenAspectRatio")->add_child_text (s.str ());
+ mp->add_child ("ScreenAspectRatio")->add_child_text (s.str ());
} else {
- (*i)->add_child ("ScreenAspectRatio")->add_child_text (
+ mp->add_child ("ScreenAspectRatio")->add_child_text (
String::compose ("%1 %2", _screen_aspect_ratio.numerator, _screen_aspect_ratio.denominator)
);
}
+
+ if (!key_id ().empty ()) {
+ /* Find <Hash> */
+ xmlpp::Node* hash = find_child (mp, "Hash");
+ mp->add_child_before (hash, "KeyId")->add_child_text ("urn:uuid:" + key_id ());
+ }
}
string