X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fmono_picture_mxf.cc;h=4114f5ade6f146075904b0dc9ff5b96b29e359a8;hb=19e00ec24925192d354dd15961b9f067c790edbf;hp=cea21c158f93270baea8373b5fd04317f1903022;hpb=0703842433013ac1d5f79c09d7a8361dc2e565c8;p=libdcp.git diff --git a/src/mono_picture_mxf.cc b/src/mono_picture_mxf.cc index cea21c15..4114f5ad 100644 --- a/src/mono_picture_mxf.cc +++ b/src/mono_picture_mxf.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2012-2013 Carl Hetherington + Copyright (C) 2012-2014 Carl Hetherington This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -22,13 +22,15 @@ #include "AS_DCP.h" #include "KM_fileio.h" #include "exceptions.h" +#include "dcp_assert.h" #include "mono_picture_frame.h" +#include "compose.hpp" using std::string; using std::vector; +using std::cout; using boost::shared_ptr; using boost::dynamic_pointer_cast; -using boost::lexical_cast; using namespace dcp; MonoPictureMXF::MonoPictureMXF (boost::filesystem::path file) @@ -45,14 +47,17 @@ MonoPictureMXF::MonoPictureMXF (boost::filesystem::path file) boost::throw_exception (DCPReadError ("could not read video MXF information")); } - _size.width = desc.StoredWidth; - _size.height = desc.StoredHeight; - _edit_rate = desc.EditRate.Numerator; - assert (desc.EditRate.Denominator == 1); - _intrinsic_duration = desc.ContainerDuration; + read_picture_descriptor (desc); + + ASDCP::WriterInfo info; + if (ASDCP_FAILURE (reader.FillWriterInfo (info))) { + boost::throw_exception (DCPReadError ("could not read video MXF information")); + } + + read_writer_info (info); } -MonoPictureMXF::MonoPictureMXF (int edit_rate) +MonoPictureMXF::MonoPictureMXF (Fraction edit_rate) : PictureMXF (edit_rate) { @@ -65,8 +70,12 @@ MonoPictureMXF::get_frame (int n) const } bool -MonoPictureMXF::equals (shared_ptr other, EqualityOptions opt, boost::function note) const +MonoPictureMXF::equals (shared_ptr other, EqualityOptions opt, NoteHandler note) const { + if (!dynamic_pointer_cast (other)) { + return false; + } + if (!MXF::equals (other, opt, note)) { return false; } @@ -97,14 +106,14 @@ MonoPictureMXF::equals (shared_ptr other, EqualityOptions opt, bo } shared_ptr other_picture = dynamic_pointer_cast (other); - assert (other_picture); + DCP_ASSERT (other_picture); for (int i = 0; i < _intrinsic_duration; ++i) { if (i >= other_picture->intrinsic_duration()) { return false; } - note (PROGRESS, "Comparing video frame " + lexical_cast (i) + " of " + lexical_cast (_intrinsic_duration)); + note (DCP_PROGRESS, String::compose ("Comparing video frame %1 of %2", i, _intrinsic_duration)); shared_ptr frame_A = get_frame (i); shared_ptr frame_B = other_picture->get_frame (i); @@ -121,10 +130,10 @@ MonoPictureMXF::equals (shared_ptr other, EqualityOptions opt, bo } shared_ptr -MonoPictureMXF::start_write (boost::filesystem::path file, bool overwrite) +MonoPictureMXF::start_write (boost::filesystem::path file, Standard standard, bool overwrite) { /* XXX: can't we use shared_ptr here? */ - return shared_ptr (new MonoPictureMXFWriter (this, file, overwrite)); + return shared_ptr (new MonoPictureMXFWriter (this, file, standard, overwrite)); } string @@ -132,9 +141,3 @@ MonoPictureMXF::cpl_node_name () const { return "MainPicture"; } - -int -MonoPictureMXF::edit_rate_factor () const -{ - return 1; -}