44 #include <asdcp/AS_DCP.h>
48 using std::shared_ptr;
49 using std::make_shared;
53 AtmosAsset::AtmosAsset (
Fraction edit_rate,
int first_frame,
int max_channel_count,
int max_object_count,
int atmos_version)
54 :
MXF (Standard::SMPTE)
55 , _edit_rate (edit_rate)
56 , _first_frame (first_frame)
57 , _max_channel_count (max_channel_count)
58 , _max_object_count (max_object_count)
59 , _atmos_id (make_uuid())
60 , _atmos_version (atmos_version)
66 AtmosAsset::AtmosAsset (boost::filesystem::path file)
68 ,
MXF (Standard::SMPTE)
70 ASDCP::ATMOS::MXFReader reader;
71 auto r = reader.OpenRead (file.string().c_str());
72 if (ASDCP_FAILURE (r)) {
73 boost::throw_exception (
MXFFileError(
"could not open MXF file for reading", file.string(), r));
76 ASDCP::ATMOS::AtmosDescriptor desc;
77 if (ASDCP_FAILURE (reader.FillAtmosDescriptor (desc))) {
78 boost::throw_exception (
ReadError(
"could not read Atmos MXF information"));
81 _edit_rate =
Fraction (desc.EditRate.Numerator, desc.EditRate.Denominator);
82 _intrinsic_duration = desc.ContainerDuration;
83 _first_frame = desc.FirstFrame;
84 _max_channel_count = desc.MaxChannelCount;
85 _max_object_count = desc.MaxObjectCount;
88 Kumu::bin2UUIDhex (desc.AtmosID, ASDCP::UUIDlen,
id,
sizeof(
id));
91 _atmos_version = desc.AtmosVersion;
93 ASDCP::WriterInfo info;
94 if (ASDCP_FAILURE (reader.FillWriterInfo(info))) {
95 boost::throw_exception (
ReadError (
"could not read audio MXF information"));
98 _id = read_writer_info (info);
103 AtmosAsset::static_pkl_type (Standard)
105 return "application/mxf";
109 shared_ptr<AtmosAssetReader>
110 AtmosAsset::start_read ()
const
117 shared_ptr<AtmosAssetWriter>
118 AtmosAsset::start_write (boost::filesystem::path file)
AtmosAssetReader typedef.
Parent class for DCP assets, i.e. picture, sound, subtitles, closed captions, CPLs,...
boost::optional< boost::filesystem::path > file() const
A helper class for writing to AtmosAssets.
A fraction (i.e. a thing with an integer numerator and an integer denominator).
An exception related to an MXF file.
Parent for classes which represent MXF files.
boost::optional< Key > key() const
Any error that occurs when reading data from a DCP.
Exceptions thrown by libdcp.
Namespace for everything in libdcp.