From 8925dbc6d45a6aacc2828a4f58102caa51179286 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sun, 9 Sep 2012 11:07:46 +0100 Subject: Rename CPL -> CPLFile --- src/cpl.cc | 148 ------------------------------------------------------ src/cpl.h | 151 -------------------------------------------------------- src/cpl_file.cc | 148 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/cpl_file.h | 151 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/dcp.cc | 6 +-- src/wscript | 2 +- 6 files changed, 303 insertions(+), 303 deletions(-) delete mode 100644 src/cpl.cc delete mode 100644 src/cpl.h create mode 100644 src/cpl_file.cc create mode 100644 src/cpl_file.h (limited to 'src') diff --git a/src/cpl.cc b/src/cpl.cc deleted file mode 100644 index c135db3c..00000000 --- a/src/cpl.cc +++ /dev/null @@ -1,148 +0,0 @@ -/* - Copyright (C) 2012 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. - -*/ - -/** @file src/cpl.cc - * @brief Classes used to parse a CPL. - */ - -#include -#include "cpl.h" - -using namespace std; -using namespace libdcp; - -CPL::CPL (string file) - : XMLFile (file, "CompositionPlaylist") -{ - id = string_node ("Id"); - annotation_text = optional_string_node ("AnnotationText"); - issue_date = string_node ("IssueDate"); - creator = string_node ("Creator"); - content_title_text = string_node ("ContentTitleText"); - content_kind = kind_node ("ContentKind"); - content_version = optional_sub_node ("ContentVersion"); - ignore_node ("RatingList"); - reels = sub_nodes ("ReelList", "Reel"); - - ignore_node ("Issuer"); - ignore_node ("Signer"); - ignore_node ("Signature"); - - done (); -} - -ContentVersion::ContentVersion (xmlpp::Node const * node) - : XMLNode (node) -{ - id = optional_string_node ("Id"); - label_text = string_node ("LabelText"); - done (); -} - -CPLReel::CPLReel (xmlpp::Node const * node) - : XMLNode (node) -{ - id = string_node ("Id"); - asset_list = sub_node ("AssetList"); - - ignore_node ("AnnotationText"); - done (); -} - -CPLAssetList::CPLAssetList (xmlpp::Node const * node) - : XMLNode (node) -{ - main_picture = optional_sub_node ("MainPicture"); - main_stereoscopic_picture = optional_sub_node ("MainStereoscopicPicture"); - main_sound = optional_sub_node ("MainSound"); - main_subtitle = optional_sub_node ("MainSubtitle"); - - done (); -} - -MainPicture::MainPicture (xmlpp::Node const * node) - : Picture (node) -{ - -} - -MainStereoscopicPicture::MainStereoscopicPicture (xmlpp::Node const * node) - : Picture (node) -{ - -} - -Picture::Picture (xmlpp::Node const * node) - : XMLNode (node) -{ - id = string_node ("Id"); - annotation_text = optional_string_node ("AnnotationText"); - edit_rate = fraction_node ("EditRate"); - intrinsic_duration = int64_node ("IntrinsicDuration"); - entry_point = int64_node ("EntryPoint"); - duration = int64_node ("Duration"); - frame_rate = fraction_node ("FrameRate"); - try { - screen_aspect_ratio = fraction_node ("ScreenAspectRatio"); - } catch (XMLError& e) { - /* Maybe it's not a fraction */ - } - try { - float f = float_node ("ScreenAspectRatio"); - screen_aspect_ratio = Fraction (f * 1000, 1000); - } catch (bad_cast& e) { - - } - - ignore_node ("Hash"); - - done (); -} - -MainSound::MainSound (xmlpp::Node const * node) - : XMLNode (node) -{ - id = string_node ("Id"); - annotation_text = optional_string_node ("AnnotationText"); - edit_rate = fraction_node ("EditRate"); - intrinsic_duration = int64_node ("IntrinsicDuration"); - entry_point = int64_node ("EntryPoint"); - duration = int64_node ("Duration"); - - ignore_node ("Hash"); - ignore_node ("Language"); - - done (); -} - -MainSubtitle::MainSubtitle (xmlpp::Node const * node) - : XMLNode (node) -{ - id = string_node ("Id"); - annotation_text = optional_string_node ("AnnotationText"); - edit_rate = fraction_node ("EditRate"); - intrinsic_duration = int64_node ("IntrinsicDuration"); - entry_point = int64_node ("EntryPoint"); - duration = int64_node ("Duration"); - - ignore_node ("Hash"); - ignore_node ("Language"); - - done (); -} diff --git a/src/cpl.h b/src/cpl.h deleted file mode 100644 index 8f5682da..00000000 --- a/src/cpl.h +++ /dev/null @@ -1,151 +0,0 @@ -/* - Copyright (C) 2012 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. - -*/ - -/** @file src/cpl.h - * @brief Classes used to parse a CPL. - */ - -#include -#include -#include "xml.h" - -namespace libdcp { - -class Picture : public XMLNode -{ -public: - Picture () {} - Picture (xmlpp::Node const * node); - - std::string id; - std::string annotation_text; - Fraction edit_rate; - int64_t intrinsic_duration; - int64_t entry_point; - int64_t duration; - Fraction frame_rate; - Fraction screen_aspect_ratio; -}; - - -/** CPL MainPicture node */ -class MainPicture : public Picture -{ -public: - MainPicture () {} - MainPicture (xmlpp::Node const * node); -}; - -/** CPL MainStereoscopicPicture node */ -class MainStereoscopicPicture : public Picture -{ -public: - MainStereoscopicPicture () {} - MainStereoscopicPicture (xmlpp::Node const * node); -}; - -/** CPL MainSound node */ -class MainSound : public XMLNode -{ -public: - MainSound () {} - MainSound (xmlpp::Node const * node); - - std::string id; - std::string annotation_text; - Fraction edit_rate; - int64_t intrinsic_duration; - int64_t entry_point; - int64_t duration; -}; - -/** CPL MainSubtitle node */ -class MainSubtitle : public XMLNode -{ -public: - MainSubtitle () {} - MainSubtitle (xmlpp::Node const * node); - - std::string id; - std::string annotation_text; - Fraction edit_rate; - int64_t intrinsic_duration; - int64_t entry_point; - int64_t duration; -}; - -/** CPL AssetList node */ -class CPLAssetList : public XMLNode -{ -public: - CPLAssetList () {} - CPLAssetList (xmlpp::Node const * node); - - boost::shared_ptr main_picture; - boost::shared_ptr main_stereoscopic_picture; - boost::shared_ptr main_sound; - boost::shared_ptr main_subtitle; -}; - -/** CPL Reel node */ -class CPLReel : public XMLNode -{ -public: - CPLReel () {} - CPLReel (xmlpp::Node const * node); - - std::string id; - boost::shared_ptr asset_list; -}; - -/** CPL ContentVersion node */ -class ContentVersion : public XMLNode -{ -public: - ContentVersion () {} - ContentVersion (xmlpp::Node const * node); - - std::string id; - std::string label_text; -}; - -/** @class CPL - * @brief Class to parse a CPL - * - * This class is used to parse XML CPL files. It is rarely necessary - * for the caller to use it outside libdcp. - */ -class CPL : public XMLFile -{ -public: - /** Parse a CPL XML file into our member variables */ - CPL (std::string file); - - std::string id; - std::string annotation_text; - std::string issue_date; - std::string creator; - std::string content_title_text; - ContentKind content_kind; - boost::shared_ptr content_version; - std::list > reels; -}; - -} - diff --git a/src/cpl_file.cc b/src/cpl_file.cc new file mode 100644 index 00000000..c23536a5 --- /dev/null +++ b/src/cpl_file.cc @@ -0,0 +1,148 @@ +/* + Copyright (C) 2012 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. + +*/ + +/** @file src/cpl_file.cc + * @brief Classes used to parse a CPL. + */ + +#include +#include "cpl_file.h" + +using namespace std; +using namespace libdcp; + +CPLFile::CPLFile (string file) + : XMLFile (file, "CompositionPlaylist") +{ + id = string_node ("Id"); + annotation_text = optional_string_node ("AnnotationText"); + issue_date = string_node ("IssueDate"); + creator = string_node ("Creator"); + content_title_text = string_node ("ContentTitleText"); + content_kind = kind_node ("ContentKind"); + content_version = optional_sub_node ("ContentVersion"); + ignore_node ("RatingList"); + reels = sub_nodes ("ReelList", "Reel"); + + ignore_node ("Issuer"); + ignore_node ("Signer"); + ignore_node ("Signature"); + + done (); +} + +ContentVersion::ContentVersion (xmlpp::Node const * node) + : XMLNode (node) +{ + id = optional_string_node ("Id"); + label_text = string_node ("LabelText"); + done (); +} + +CPLReel::CPLReel (xmlpp::Node const * node) + : XMLNode (node) +{ + id = string_node ("Id"); + asset_list = sub_node ("AssetList"); + + ignore_node ("AnnotationText"); + done (); +} + +CPLAssetList::CPLAssetList (xmlpp::Node const * node) + : XMLNode (node) +{ + main_picture = optional_sub_node ("MainPicture"); + main_stereoscopic_picture = optional_sub_node ("MainStereoscopicPicture"); + main_sound = optional_sub_node ("MainSound"); + main_subtitle = optional_sub_node ("MainSubtitle"); + + done (); +} + +MainPicture::MainPicture (xmlpp::Node const * node) + : Picture (node) +{ + +} + +MainStereoscopicPicture::MainStereoscopicPicture (xmlpp::Node const * node) + : Picture (node) +{ + +} + +Picture::Picture (xmlpp::Node const * node) + : XMLNode (node) +{ + id = string_node ("Id"); + annotation_text = optional_string_node ("AnnotationText"); + edit_rate = fraction_node ("EditRate"); + intrinsic_duration = int64_node ("IntrinsicDuration"); + entry_point = int64_node ("EntryPoint"); + duration = int64_node ("Duration"); + frame_rate = fraction_node ("FrameRate"); + try { + screen_aspect_ratio = fraction_node ("ScreenAspectRatio"); + } catch (XMLError& e) { + /* Maybe it's not a fraction */ + } + try { + float f = float_node ("ScreenAspectRatio"); + screen_aspect_ratio = Fraction (f * 1000, 1000); + } catch (bad_cast& e) { + + } + + ignore_node ("Hash"); + + done (); +} + +MainSound::MainSound (xmlpp::Node const * node) + : XMLNode (node) +{ + id = string_node ("Id"); + annotation_text = optional_string_node ("AnnotationText"); + edit_rate = fraction_node ("EditRate"); + intrinsic_duration = int64_node ("IntrinsicDuration"); + entry_point = int64_node ("EntryPoint"); + duration = int64_node ("Duration"); + + ignore_node ("Hash"); + ignore_node ("Language"); + + done (); +} + +MainSubtitle::MainSubtitle (xmlpp::Node const * node) + : XMLNode (node) +{ + id = string_node ("Id"); + annotation_text = optional_string_node ("AnnotationText"); + edit_rate = fraction_node ("EditRate"); + intrinsic_duration = int64_node ("IntrinsicDuration"); + entry_point = int64_node ("EntryPoint"); + duration = int64_node ("Duration"); + + ignore_node ("Hash"); + ignore_node ("Language"); + + done (); +} diff --git a/src/cpl_file.h b/src/cpl_file.h new file mode 100644 index 00000000..14bcafd0 --- /dev/null +++ b/src/cpl_file.h @@ -0,0 +1,151 @@ +/* + Copyright (C) 2012 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. + +*/ + +/** @file src/cpl_file.h + * @brief Classes used to parse a CPL. + */ + +#include +#include +#include "xml.h" + +namespace libdcp { + +class Picture : public XMLNode +{ +public: + Picture () {} + Picture (xmlpp::Node const * node); + + std::string id; + std::string annotation_text; + Fraction edit_rate; + int64_t intrinsic_duration; + int64_t entry_point; + int64_t duration; + Fraction frame_rate; + Fraction screen_aspect_ratio; +}; + + +/** CPL MainPicture node */ +class MainPicture : public Picture +{ +public: + MainPicture () {} + MainPicture (xmlpp::Node const * node); +}; + +/** CPL MainStereoscopicPicture node */ +class MainStereoscopicPicture : public Picture +{ +public: + MainStereoscopicPicture () {} + MainStereoscopicPicture (xmlpp::Node const * node); +}; + +/** CPL MainSound node */ +class MainSound : public XMLNode +{ +public: + MainSound () {} + MainSound (xmlpp::Node const * node); + + std::string id; + std::string annotation_text; + Fraction edit_rate; + int64_t intrinsic_duration; + int64_t entry_point; + int64_t duration; +}; + +/** CPL MainSubtitle node */ +class MainSubtitle : public XMLNode +{ +public: + MainSubtitle () {} + MainSubtitle (xmlpp::Node const * node); + + std::string id; + std::string annotation_text; + Fraction edit_rate; + int64_t intrinsic_duration; + int64_t entry_point; + int64_t duration; +}; + +/** CPL AssetList node */ +class CPLAssetList : public XMLNode +{ +public: + CPLAssetList () {} + CPLAssetList (xmlpp::Node const * node); + + boost::shared_ptr main_picture; + boost::shared_ptr main_stereoscopic_picture; + boost::shared_ptr main_sound; + boost::shared_ptr main_subtitle; +}; + +/** CPL Reel node */ +class CPLReel : public XMLNode +{ +public: + CPLReel () {} + CPLReel (xmlpp::Node const * node); + + std::string id; + boost::shared_ptr asset_list; +}; + +/** CPL ContentVersion node */ +class ContentVersion : public XMLNode +{ +public: + ContentVersion () {} + ContentVersion (xmlpp::Node const * node); + + std::string id; + std::string label_text; +}; + +/** @class CPLFile + * @brief Class to parse a CPL + * + * This class is used to parse XML CPL files. It is rarely necessary + * for the caller to use it outside libdcp. + */ +class CPLFile : public XMLFile +{ +public: + /** Parse a CPL XML file into our member variables */ + CPLFile (std::string file); + + std::string id; + std::string annotation_text; + std::string issue_date; + std::string creator; + std::string content_title_text; + ContentKind content_kind; + boost::shared_ptr content_version; + std::list > reels; +}; + +} + diff --git a/src/dcp.cc b/src/dcp.cc index 29479481..f7ded2c4 100644 --- a/src/dcp.cc +++ b/src/dcp.cc @@ -36,7 +36,7 @@ #include "util.h" #include "metadata.h" #include "exceptions.h" -#include "cpl.h" +#include "cpl_file.h" #include "pkl.h" #include "asset_map.h" #include "reel.h" @@ -288,9 +288,9 @@ DCP::DCP (string directory, bool require_mxfs) } /* Read the XML */ - shared_ptr cpl; + shared_ptr cpl; try { - cpl.reset (new CPL (files.cpl)); + cpl.reset (new CPLFile (files.cpl)); } catch (FileError& e) { throw FileError ("could not load CPL file", files.cpl); } diff --git a/src/wscript b/src/wscript index 1ca88bc6..75a161fd 100644 --- a/src/wscript +++ b/src/wscript @@ -8,7 +8,7 @@ def build(bld): obj.source = """ asset.cc asset_map.cc - cpl.cc + cpl_file.cc dcp.cc dcp_time.cc lut.cc -- cgit v1.2.3