using boost::lexical_cast;
using namespace libdcp;
-PictureAsset::PictureAsset (string directory, string mxf_name, boost::signals2::signal<void (float)>* progress, int fps, int intrinsic_duration, bool encrypted, Size size)
- : MXFAsset (directory, mxf_name, progress, fps, intrinsic_duration, encrypted)
+PictureAsset::PictureAsset (string directory, string mxf_name, boost::signals2::signal<void (float)>* progress, int fps, int intrinsic_duration, Size size)
+ : MXFAsset (directory, mxf_name, progress, fps, intrinsic_duration)
, _size (size)
{
string
StereoPictureAsset::cpl_node_name () const
{
- return "MainStereoscopicPicture";
+ return "msp-cpl:MainStereoscopicPicture";
+}
+
+pair<string, string>
+StereoPictureAsset::cpl_node_attribute (bool interop) const
+{
+ if (interop) {
+ return make_pair ("xmlns:msp-cpl", "http://www.digicine.com/schemas/437-Y/2007/Main-Stereo-Picture-CPL");
+ } else {
+ return make_pair ("xmlns:msp-cpl", "http://www.smpte-ra.org/schemas/429-10/2008/Main-Stereo-Picture-CPL");
+ }
+
+ return make_pair ("", "");
}
int
}
void
-PictureAsset::write_to_cpl (xmlpp::Node* node) const
+PictureAsset::write_to_cpl (xmlpp::Element* node, bool interop) const
{
- MXFAsset::write_to_cpl (node);
+ MXFAsset::write_to_cpl (node, interop);
xmlpp::Node::NodeList c = node->get_children ();
xmlpp::Node::NodeList::iterator i = c.begin();
assert (i != c.end ());
(*i)->add_child ("FrameRate")->add_child_text (lexical_cast<string> (_edit_rate * edit_rate_factor ()) + " 1");
- (*i)->add_child ("ScreenAspectRatio")->add_child_text (lexical_cast<string> (_size.width) + " " + lexical_cast<string> (_size.height));
+ if (interop) {
+ (*i)->add_child ("ScreenAspectRatio")->add_child_text (lexical_cast<string> (float (_size.width) / _size.height));
+ } else {
+ (*i)->add_child ("ScreenAspectRatio")->add_child_text (lexical_cast<string> (_size.width) + " " + lexical_cast<string> (_size.height));
+ }
}
bool
boost::signals2::signal<void (float)>* progress,
int fps,
int intrinsic_duration,
- bool encrypted,
Size size,
+ bool interop,
MXFMetadata const & metadata
)
- : PictureAsset (directory, mxf_name, progress, fps, intrinsic_duration, encrypted, size)
+ : PictureAsset (directory, mxf_name, progress, fps, intrinsic_duration, size)
{
- construct (get_path, metadata);
+ construct (get_path, interop, metadata);
}
MonoPictureAsset::MonoPictureAsset (
boost::signals2::signal<void (float)>* progress,
int fps,
int intrinsic_duration,
- bool encrypted,
Size size,
+ bool interop,
MXFMetadata const & metadata
)
- : PictureAsset (directory, mxf_name, progress, fps, intrinsic_duration, encrypted, size)
+ : PictureAsset (directory, mxf_name, progress, fps, intrinsic_duration, size)
{
- construct (boost::bind (&MonoPictureAsset::path_from_list, this, _1, files), metadata);
+ construct (boost::bind (&MonoPictureAsset::path_from_list, this, _1, files), interop, metadata);
}
MonoPictureAsset::MonoPictureAsset (string directory, string mxf_name, int fps, Size size)
- : PictureAsset (directory, mxf_name, 0, fps, 0, false, size)
+ : PictureAsset (directory, mxf_name, 0, fps, 0, size)
{
}
}
void
-MonoPictureAsset::construct (boost::function<string (int)> get_path, MXFMetadata const & metadata)
+MonoPictureAsset::construct (boost::function<string (int)> get_path, bool interop, MXFMetadata const & metadata)
{
ASDCP::JP2K::CodestreamParser j2k_parser;
ASDCP::JP2K::FrameBuffer frame_buffer (4 * Kumu::Megabyte);
picture_desc.EditRate = ASDCP::Rational (_edit_rate, 1);
ASDCP::WriterInfo writer_info;
- fill_writer_info (&writer_info, _uuid, metadata);
+ fill_writer_info (&writer_info, _uuid, interop, metadata);
ASDCP::JP2K::MXFWriter mxf_writer;
if (ASDCP_FAILURE (mxf_writer.OpenWrite (path().string().c_str(), writer_info, picture_desc, 16384, false))) {
StereoPictureAsset::StereoPictureAsset (string directory, string mxf_name, int fps, int intrinsic_duration)
- : PictureAsset (directory, mxf_name, 0, fps, intrinsic_duration, false, Size (0, 0))
+ : PictureAsset (directory, mxf_name, 0, fps, intrinsic_duration, Size (0, 0))
{
ASDCP::JP2K::MXFSReader reader;
if (ASDCP_FAILURE (reader.OpenRead (path().string().c_str()))) {
return shared_ptr<const StereoPictureFrame> (new StereoPictureFrame (path().string(), n));
}
-shared_ptr<MonoPictureAssetWriter>
-MonoPictureAsset::start_write (bool overwrite, MXFMetadata const & metadata)
+shared_ptr<PictureAssetWriter>
+MonoPictureAsset::start_write (bool overwrite, bool interop, MXFMetadata const & metadata)
{
/* XXX: can't we use shared_ptr here? */
- return shared_ptr<MonoPictureAssetWriter> (new MonoPictureAssetWriter (this, overwrite, metadata));
+ return shared_ptr<MonoPictureAssetWriter> (new MonoPictureAssetWriter (this, overwrite, interop, metadata));
}
string
}
StereoPictureAsset::StereoPictureAsset (string directory, string mxf_name, int fps, Size size)
- : PictureAsset (directory, mxf_name, 0, fps, 0, false, size)
+ : PictureAsset (directory, mxf_name, 0, fps, 0, size)
{
}
-shared_ptr<StereoPictureAssetWriter>
-StereoPictureAsset::start_write (bool overwrite, MXFMetadata const & metadata)
+shared_ptr<PictureAssetWriter>
+StereoPictureAsset::start_write (bool overwrite, bool interop, MXFMetadata const & metadata)
{
/* XXX: can't we use shared_ptr here? */
- return shared_ptr<StereoPictureAssetWriter> (new StereoPictureAssetWriter (this, overwrite, metadata));
+ return shared_ptr<StereoPictureAssetWriter> (new StereoPictureAssetWriter (this, overwrite, interop, metadata));
}