Rename CPL -> CPLFile
authorCarl Hetherington <cth@carlh.net>
Sun, 9 Sep 2012 10:07:46 +0000 (11:07 +0100)
committerCarl Hetherington <cth@carlh.net>
Sun, 9 Sep 2012 10:07:46 +0000 (11:07 +0100)
src/cpl.cc [deleted file]
src/cpl.h [deleted file]
src/cpl_file.cc [new file with mode: 0644]
src/cpl_file.h [new file with mode: 0644]
src/dcp.cc
src/wscript

diff --git a/src/cpl.cc b/src/cpl.cc
deleted file mode 100644 (file)
index c135db3..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
-    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 ();
-}
diff --git a/src/cpl.h b/src/cpl.h
deleted file mode 100644 (file)
index 8f5682d..0000000
--- a/src/cpl.h
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
-    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;
-};
-
-}
-
diff --git a/src/cpl_file.cc b/src/cpl_file.cc
new file mode 100644 (file)
index 0000000..c23536a
--- /dev/null
@@ -0,0 +1,148 @@
+/*
+    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 ();
+}
diff --git a/src/cpl_file.h b/src/cpl_file.h
new file mode 100644 (file)
index 0000000..14bcafd
--- /dev/null
@@ -0,0 +1,151 @@
+/*
+    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;
+};
+
+}
+
index 294794818e0862cc4193885fc6fead8106f42c52..f7ded2c44ea6e2a91e0bd5fe1257dcc6234f7682 100644 (file)
@@ -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> 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);
        }
index 1ca88bc6b49a05588bf0b4e7927e371efb7201fc..75a161fdf2606a623d930fe466adcb61a40701c3 100644 (file)
@@ -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