From a680f27bddf78d7dcbe52ddb4f8e3e9194d85fd5 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Fri, 7 Sep 2012 17:28:30 +0100 Subject: Tweaks to dcpinfo. --- src/dcp.cc | 78 ++++++++++++++++++++++++++++++++++++++------------------------ 1 file changed, 48 insertions(+), 30 deletions(-) (limited to 'src/dcp.cc') diff --git a/src/dcp.cc b/src/dcp.cc index f2f2971a..d9604bef 100644 --- a/src/dcp.cc +++ b/src/dcp.cc @@ -214,7 +214,7 @@ DCP::write_assetmap (string cpl_uuid, int cpl_length, string pkl_uuid, int pkl_l } -DCP::DCP (string directory, bool read_mxfs) +DCP::DCP (string directory, bool require_mxfs) : _directory (directory) { Files files; @@ -329,56 +329,74 @@ DCP::DCP (string directory, bool read_mxfs) shared_ptr picture; shared_ptr sound; shared_ptr subtitle; - - if (read_mxfs && (*i)->asset_list->main_picture) { + + if ((*i)->asset_list->main_picture) { string n = pkl->asset_from_id (p->id)->original_file_name; if (n.empty ()) { n = p->annotation_text; } - - picture.reset (new MonoPictureAsset ( - _directory, - n, - _fps, - (*i)->asset_list->main_picture->entry_point, - (*i)->asset_list->main_picture->duration - ) - ); + + try { + picture.reset (new MonoPictureAsset ( + _directory, + n, + _fps, + (*i)->asset_list->main_picture->entry_point, + (*i)->asset_list->main_picture->duration + ) + ); + } catch (MXFFileError) { + if (require_mxfs) { + throw; + } + } - } else if (read_mxfs && (*i)->asset_list->main_stereoscopic_picture) { + } else if ((*i)->asset_list->main_stereoscopic_picture) { string n = pkl->asset_from_id (p->id)->original_file_name; if (n.empty ()) { n = p->annotation_text; } - picture.reset (new StereoPictureAsset ( - _directory, - n, - _fps, - (*i)->asset_list->main_stereoscopic_picture->entry_point, - (*i)->asset_list->main_stereoscopic_picture->duration - ) - ); + try { + picture.reset (new StereoPictureAsset ( + _directory, + n, + _fps, + (*i)->asset_list->main_stereoscopic_picture->entry_point, + (*i)->asset_list->main_stereoscopic_picture->duration + ) + ); + } catch (MXFFileError) { + if (require_mxfs) { + throw; + } + } } - if (read_mxfs && (*i)->asset_list->main_sound) { + if ((*i)->asset_list->main_sound) { string n = pkl->asset_from_id ((*i)->asset_list->main_sound->id)->original_file_name; if (n.empty ()) { n = (*i)->asset_list->main_sound->annotation_text; } - sound.reset (new SoundAsset ( - _directory, - n, - _fps, - (*i)->asset_list->main_sound->entry_point, - (*i)->asset_list->main_sound->duration - ) - ); + try { + sound.reset (new SoundAsset ( + _directory, + n, + _fps, + (*i)->asset_list->main_sound->entry_point, + (*i)->asset_list->main_sound->duration + ) + ); + } catch (MXFFileError) { + if (require_mxfs) { + throw; + } + } } if ((*i)->asset_list->main_subtitle) { -- cgit v1.2.3