X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Freel.cc;h=ffb184ab67d0ebca5534822ce260337f0f010e7c;hb=30e2f6f873002d16aeae707879ea15c1c63a4323;hp=481b153b93176b6ace07f099d7b203dc367d5ad6;hpb=8526058d24faec5f83ffd66758fef8d8c8159f73;p=libdcp.git diff --git a/src/reel.cc b/src/reel.cc index 481b153b..ffb184ab 100644 --- a/src/reel.cc +++ b/src/reel.cc @@ -17,32 +17,37 @@ */ +#include #include "reel.h" #include "util.h" #include "picture_asset.h" #include "sound_asset.h" #include "subtitle_asset.h" +#include "kdm.h" -using namespace std; +using std::string; +using std::list; +using std::cout; +using boost::shared_ptr; using namespace libdcp; void -Reel::write_to_cpl (xmlpp::Node* node) const +Reel::write_to_cpl (xmlpp::Element* node, bool interop) const { - xmlpp::Node* reel = node->add_child ("Reel"); + xmlpp::Element* reel = node->add_child ("Reel"); reel->add_child("Id")->add_child_text ("urn:uuid:" + make_uuid()); - xmlpp::Node* asset_list = reel->add_child ("AssetList"); + xmlpp::Element* asset_list = reel->add_child ("AssetList"); if (_main_picture) { - _main_picture->write_to_cpl (asset_list); + _main_picture->write_to_cpl (asset_list, interop); } if (_main_sound) { - _main_sound->write_to_cpl (asset_list); + _main_sound->write_to_cpl (asset_list, interop); } if (_main_subtitle) { - _main_subtitle->write_to_cpl (asset_list); + _main_subtitle->write_to_cpl (asset_list, interop); } } @@ -79,3 +84,23 @@ Reel::equals (boost::shared_ptr other, EqualityOptions opt, boost::f return true; } +bool +Reel::encrypted () const +{ + return ((_main_picture && _main_picture->encrypted ()) || (_main_sound && _main_sound->encrypted ())); +} + +void +Reel::add_kdm (KDM const & kdm) +{ + list keys = kdm.keys (); + + for (list::iterator i = keys.begin(); i != keys.end(); ++i) { + if (i->key_id() == _main_picture->key_id()) { + _main_picture->set_key (i->key ()); + } + if (i->key_id() == _main_sound->key_id()) { + _main_sound->set_key (i->key ()); + } + } +}