/* Copyright (C) 2016 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 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 "im_package.h" #include "asset.h" #include "mono_picture_asset.h" #include "sound_asset.h" #include "smpte_subtitle_asset.h" #include "AS_DCP.h" using std::list; using std::string; using boost::shared_ptr; using namespace dcp::im; Package::Package (boost::filesystem::path directory) : dcp::Package (directory) { } list > Package::assets () const { /* XXX */ return list > (); } void Package::write_xml (dcp::XMLMetadata metadata, shared_ptr signer) { do_write_xml (dcp::IMP, metadata, signer); } shared_ptr Package::xml_asset_factory (boost::filesystem::path file, string root) const { shared_ptr asset; if (root == "CompositionPlaylist") { asset.reset (new CPL (file)); } return asset; } shared_ptr Package::mxf_asset_factory (boost::filesystem::path file) const { shared_ptr asset; ASDCP::EssenceType_t type; if (ASDCP::EssenceType (file.string().c_str(), type) != ASDCP::RESULT_OK) { throw PackageReadError ("Could not find essence type"); } switch (type) { case ASDCP::ESS_UNKNOWN: case ASDCP::ESS_AS02_JPEG_2000: asset.reset (new dcp::MonoPictureAsset (file)); break; case ASDCP::ESS_AS02_PCM_24b_48k: case ASDCP::ESS_AS02_PCM_24b_96k: asset.reset (new dcp::SoundAsset (file)); break; case ASDCP::ESS_AS02_TIMED_TEXT: asset.reset (new dcp::SMPTESubtitleAsset (file)); break; default: throw PackageReadError ("Unknown MXF essence type"); } return asset; } string Package::pkl_annotation_text () const { return "XXX"; }