boost::throw_exception (MXFFileError ("error in finalizing video MXF", _mxf->file().string(), r));
}
+ _picture_mxf->_intrinsic_duration = _frames_written;
PictureMXFWriter::finalize ();
}
using boost::dynamic_pointer_cast;
using namespace dcp;
-MXF::MXF (Fraction edit_rate)
- : _edit_rate (edit_rate)
- , _intrinsic_duration (0)
- , _encryption_context (0)
+MXF::MXF ()
+ : _encryption_context (0)
, _decryption_context (0)
{
- /* _intrinsic_duration must be set up up by a subclass */
+
}
MXF::MXF (boost::filesystem::path file)
: Asset (file)
- , _intrinsic_duration (0)
, _encryption_context (0)
, _decryption_context (0)
{
- /* _edit_rate and _intrinsic_duration must be set up up by a subclass */
+
}
MXF::~MXF ()
return false;
}
- if (_edit_rate != other_mxf->_edit_rate) {
- note (DCP_ERROR, "MXF: edit rates differ");
- return false;
- }
-
- if (_intrinsic_duration != other_mxf->_intrinsic_duration) {
- note (DCP_ERROR, String::compose ("MXF: intrinsic durations differ (%1 vs %2)", _intrinsic_duration, other_mxf->_intrinsic_duration));
- return false;
- }
-
if (_file.leaf() != other_mxf->file().leaf()) {
if (!opt.mxf_filenames_can_differ) {
note (DCP_ERROR, "MXF: filenames differ");
class MXF : public Asset
{
public:
- MXF (Fraction edit_rate);
+ MXF ();
MXF (boost::filesystem::path file);
~MXF ();
MXFMetadata metadata () const {
return _metadata;
}
-
- Fraction edit_rate () const {
- return _edit_rate;
- }
-
- /** @return The total length of this content in video frames.
- * The amount of content presented may be less than this.
- */
- int64_t intrinsic_duration () const {
- return _intrinsic_duration;
- }
protected:
friend class MXFWriter;
std::string pkl_type (Standard standard) const;
void read_writer_info (ASDCP::WriterInfo const &);
- Fraction _edit_rate;
- /** The total length of this content in video frames. The amount of
- * content presented may be less than this.
- */
- int64_t _intrinsic_duration;
-
ASDCP::AESEncContext* _encryption_context;
ASDCP::AESDecContext* _decryption_context;
/** ID of the key used for encryption/decryption, or an empty string */
{
DCP_ASSERT (!_finalized);
_finalized = true;
- _mxf->_intrinsic_duration = _frames_written;
}
PictureMXF::PictureMXF (boost::filesystem::path file)
: MXF (file)
+ , _intrinsic_duration (0)
{
}
PictureMXF::PictureMXF (Fraction edit_rate)
- : MXF (edit_rate)
+ : _edit_rate (edit_rate)
+ , _intrinsic_duration (0)
{
}
_screen_aspect_ratio = r;
}
+ Fraction edit_rate () const {
+ return _edit_rate;
+ }
+
+ int64_t intrinsic_duration () const {
+ return _intrinsic_duration;
+ }
+
protected:
+ friend class MonoPictureMXFWriter;
+ friend class StereoPictureMXFWriter;
bool frame_buffer_equals (
int frame, EqualityOptions opt, NoteHandler note,
void read_picture_descriptor (ASDCP::JP2K::PictureDescriptor const &);
+ Fraction _edit_rate;
+ /** The total length of this content in video frames. The amount of
+ * content presented may be less than this.
+ */
+ int64_t _intrinsic_duration;
/** picture size in pixels */
Size _size;
Fraction _frame_rate;
SoundMXF::SoundMXF (boost::filesystem::path file)
: MXF (file)
+ , _intrinsic_duration (0)
, _channels (0)
, _sampling_rate (0)
{
}
SoundMXF::SoundMXF (Fraction edit_rate, int sampling_rate, int channels)
- : MXF (edit_rate)
+ : _edit_rate (edit_rate)
+ , _intrinsic_duration (0)
, _channels (channels)
, _sampling_rate (sampling_rate)
{
return _sampling_rate;
}
+ Fraction edit_rate () const {
+ return _edit_rate;
+ }
+
+ int64_t intrinsic_duration () const {
+ return _intrinsic_duration;
+ }
+
private:
+ friend class SoundMXFWriter;
+
std::string asdcp_kind () const {
return "Sound";
}
+ Fraction _edit_rate;
+ /** The total length of this content in video frames. The amount of
+ * content presented may be less than this.
+ */
+ int64_t _intrinsic_duration;
int _channels; ///< number of channels
int _sampling_rate; ///< sampling rate in Hz
};
boost::throw_exception (MiscError ("could not finalise audio MXF"));
}
+ _sound_mxf->_intrinsic_duration = _frames_written;
MXFWriter::finalize ();
}
boost::throw_exception (MXFFileError ("error in finalizing video MXF", _mxf->file().string(), r));
}
+ _picture_mxf->_intrinsic_duration = _frames_written;
PictureMXFWriter::finalize ();
}