Fix build on OS X.
[libdcp.git] / src / reel.cc
index ffb184ab67d0ebca5534822ce260337f0f010e7c..b729695c33c58c54c048c78a14ca8632d581a090 100644 (file)
@@ -21,6 +21,8 @@
 #include "reel.h"
 #include "util.h"
 #include "picture_asset.h"
+#include "mono_picture_asset.h"
+#include "stereo_picture_asset.h"
 #include "sound_asset.h"
 #include "subtitle_asset.h"
 #include "kdm.h"
@@ -29,6 +31,7 @@ using std::string;
 using std::list;
 using std::cout;
 using boost::shared_ptr;
+using boost::dynamic_pointer_cast;
 using namespace libdcp;
 
 void
@@ -38,7 +41,8 @@ Reel::write_to_cpl (xmlpp::Element* node, bool interop) const
        reel->add_child("Id")->add_child_text ("urn:uuid:" + make_uuid());
        xmlpp::Element* asset_list = reel->add_child ("AssetList");
        
-       if (_main_picture) {
+       if (_main_picture && dynamic_pointer_cast<MonoPictureAsset> (_main_picture)) {
+               /* Mono pictures come before other stuff... */
                _main_picture->write_to_cpl (asset_list, interop);
        }
 
@@ -49,6 +53,11 @@ Reel::write_to_cpl (xmlpp::Element* node, bool interop) const
        if (_main_subtitle) {
                _main_subtitle->write_to_cpl (asset_list, interop);
        }
+
+       if (_main_picture && dynamic_pointer_cast<StereoPictureAsset> (_main_picture)) {
+               /* ... but stereo pictures must come after */
+               _main_picture->write_to_cpl (asset_list, interop);
+       }
 }
        
 bool
@@ -104,3 +113,14 @@ Reel::add_kdm (KDM const & kdm)
                }
        }
 }
+
+void
+Reel::set_mxf_keys (Key key)
+{
+       _main_picture->set_key (key);
+       if (_main_sound) {
+               _main_sound->set_key (key);
+       }
+
+       /* XXX: subtitle asset? */
+}