diff options
| author | Carl Hetherington <cth@carlh.net> | 2016-05-25 14:21:37 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2016-05-25 14:21:37 +0100 |
| commit | 394e0fa234e425ecec0303482d1566e721017c65 (patch) | |
| tree | e6a9de512b06ec5d3d72537e5d63739ac25c4edc /src | |
| parent | 85c699d29aab7ca7f7218b3f7f859e10c9025e37 (diff) | |
Add very minimal Atmos asset.
Diffstat (limited to 'src')
| -rw-r--r-- | src/atmos_asset.cc | 50 | ||||
| -rw-r--r-- | src/atmos_asset.h | 58 | ||||
| -rw-r--r-- | src/wscript | 2 |
3 files changed, 110 insertions, 0 deletions
diff --git a/src/atmos_asset.cc b/src/atmos_asset.cc new file mode 100644 index 00000000..6c0c0e78 --- /dev/null +++ b/src/atmos_asset.cc @@ -0,0 +1,50 @@ +/* + Copyright (C) 2016 Carl Hetherington <cth@carlh.net> + + 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 + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#include "atmos_asset.h" +#include "exceptions.h" +#include "AS_DCP.h" + +using std::string; +using namespace dcp; + +AtmosAsset::AtmosAsset (boost::filesystem::path file) + : Asset (file) +{ + ASDCP::ATMOS::MXFReader reader; + Kumu::Result_t r = reader.OpenRead (file.string().c_str()); + if (ASDCP_FAILURE (r)) { + boost::throw_exception (MXFFileError ("could not open MXF file for reading", file.string(), r)); + } + + ASDCP::ATMOS::AtmosDescriptor desc; + if (ASDCP_FAILURE (reader.FillAtmosDescriptor (desc))) { + boost::throw_exception (DCPReadError ("could not read Atmos MXF information")); + } + + _first_frame = desc.FirstFrame; + _max_channel_count = desc.MaxChannelCount; + _max_object_count = desc.MaxObjectCount; +} + +string +AtmosAsset::pkl_type (Standard) const +{ + return "application/mxf"; +} diff --git a/src/atmos_asset.h b/src/atmos_asset.h new file mode 100644 index 00000000..602beb31 --- /dev/null +++ b/src/atmos_asset.h @@ -0,0 +1,58 @@ +/* + Copyright (C) 2016 Carl Hetherington <cth@carlh.net> + + 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 + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#ifndef LIBDCP_ATMOS_ASSET_H +#define LIBDCP_ATMOS_ASSET_H + +#include "asset.h" +#include "mxf.h" + +namespace dcp { + +class AtmosAsset : public Asset, public MXF +{ +public: + AtmosAsset (boost::filesystem::path file); + + std::string pkl_type (Standard) const; + + /** @return frame number of the frame to align with the FFOA of the picture track */ + int first_frame () const { + return _first_frame; + } + + /** @return maximum number of channels in bitstream */ + int max_channel_count () const { + return _max_channel_count; + } + + /** @return maximum number of objects in bitstream */ + int max_object_count () const { + return _max_object_count; + } + +private: + int _first_frame; + int _max_channel_count; + int _max_object_count; +}; + +} + +#endif diff --git a/src/wscript b/src/wscript index c6185790..4fbfdb9a 100644 --- a/src/wscript +++ b/src/wscript @@ -21,6 +21,7 @@ from waflib import TaskGen def build(bld): source = """ asset.cc + atmos_asset.cc certificate_chain.cc certificate.cc colour_conversion.cc @@ -83,6 +84,7 @@ def build(bld): headers = """ asset.h + atmos_asset.h certificate_chain.h certificate.h chromaticity.h |
