From b21ac5801854d9d8946a0f8d0cadca2abd9a066b Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sun, 10 Jan 2016 22:39:35 +0000 Subject: Hacks. --- src/im_package.cc | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 53 insertions(+), 4 deletions(-) (limited to 'src/im_package.cc') diff --git a/src/im_package.cc b/src/im_package.cc index a7b4674e..c845844f 100644 --- a/src/im_package.cc +++ b/src/im_package.cc @@ -18,7 +18,15 @@ */ #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) @@ -27,17 +35,58 @@ Package::Package (boost::filesystem::path directory) } -list +list > Package::assets () const { /* XXX */ - return list (); + return list > (); } void -Package::write_xml (dcp::XMLMetadata metadata, shared_ptr signer = shared_ptr ()) +Package::write_xml (dcp::XMLMetadata metadata, shared_ptr signer) { - do_write_xml (dcp::IMF, metadata, 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 -- cgit v1.2.3