+++ /dev/null
-/*
- Copyright (C) 2012 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.
-
-*/
-
-/** @file src/cpl.cc
- * @brief Classes used to parse a CPL.
- */
-
-#include <iostream>
-#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> ("ContentVersion");
- ignore_node ("RatingList");
- reels = sub_nodes<CPLReel> ("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<CPLAssetList> ("AssetList");
-
- ignore_node ("AnnotationText");
- done ();
-}
-
-CPLAssetList::CPLAssetList (xmlpp::Node const * node)
- : XMLNode (node)
-{
- main_picture = optional_sub_node<MainPicture> ("MainPicture");
- main_stereoscopic_picture = optional_sub_node<MainStereoscopicPicture> ("MainStereoscopicPicture");
- main_sound = optional_sub_node<MainSound> ("MainSound");
- main_subtitle = optional_sub_node<MainSubtitle> ("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 ();
-}
+++ /dev/null
-/*
- Copyright (C) 2012 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.
-
-*/
-
-/** @file src/cpl.h
- * @brief Classes used to parse a CPL.
- */
-
-#include <stdint.h>
-#include <boost/shared_ptr.hpp>
-#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<MainPicture> main_picture;
- boost::shared_ptr<MainStereoscopicPicture> main_stereoscopic_picture;
- boost::shared_ptr<MainSound> main_sound;
- boost::shared_ptr<MainSubtitle> main_subtitle;
-};
-
-/** CPL Reel node */
-class CPLReel : public XMLNode
-{
-public:
- CPLReel () {}
- CPLReel (xmlpp::Node const * node);
-
- std::string id;
- boost::shared_ptr<CPLAssetList> 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<ContentVersion> content_version;
- std::list<boost::shared_ptr<CPLReel> > reels;
-};
-
-}
-
--- /dev/null
+/*
+ Copyright (C) 2012 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.
+
+*/
+
+/** @file src/cpl_file.cc
+ * @brief Classes used to parse a CPL.
+ */
+
+#include <iostream>
+#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> ("ContentVersion");
+ ignore_node ("RatingList");
+ reels = sub_nodes<CPLReel> ("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<CPLAssetList> ("AssetList");
+
+ ignore_node ("AnnotationText");
+ done ();
+}
+
+CPLAssetList::CPLAssetList (xmlpp::Node const * node)
+ : XMLNode (node)
+{
+ main_picture = optional_sub_node<MainPicture> ("MainPicture");
+ main_stereoscopic_picture = optional_sub_node<MainStereoscopicPicture> ("MainStereoscopicPicture");
+ main_sound = optional_sub_node<MainSound> ("MainSound");
+ main_subtitle = optional_sub_node<MainSubtitle> ("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 ();
+}
--- /dev/null
+/*
+ Copyright (C) 2012 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.
+
+*/
+
+/** @file src/cpl_file.h
+ * @brief Classes used to parse a CPL.
+ */
+
+#include <stdint.h>
+#include <boost/shared_ptr.hpp>
+#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<MainPicture> main_picture;
+ boost::shared_ptr<MainStereoscopicPicture> main_stereoscopic_picture;
+ boost::shared_ptr<MainSound> main_sound;
+ boost::shared_ptr<MainSubtitle> main_subtitle;
+};
+
+/** CPL Reel node */
+class CPLReel : public XMLNode
+{
+public:
+ CPLReel () {}
+ CPLReel (xmlpp::Node const * node);
+
+ std::string id;
+ boost::shared_ptr<CPLAssetList> 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<ContentVersion> content_version;
+ std::list<boost::shared_ptr<CPLReel> > reels;
+};
+
+}
+
#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"
}
/* Read the XML */
- shared_ptr<CPL> cpl;
+ shared_ptr<CPLFile> 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);
}
obj.source = """
asset.cc
asset_map.cc
- cpl.cc
+ cpl_file.cc
dcp.cc
dcp_time.cc
lut.cc