summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-08-31 16:10:35 +0100
committerCarl Hetherington <cth@carlh.net>2013-08-31 16:10:35 +0100
commit8924ad6077ecb84385ecdcd244921af2dc34f9fb (patch)
tree2dffaf46649e5344eae88e4a7e01bcb733d744a4
parent9c06ca9b86fa06e09caf44f7fe8316e477aac700 (diff)
Add MainPicture etc. AssetInstances.
-rw-r--r--src/asset_instance.cc21
-rw-r--r--src/asset_instance.h62
2 files changed, 83 insertions, 0 deletions
diff --git a/src/asset_instance.cc b/src/asset_instance.cc
index 45f8caf2..6107cfda 100644
--- a/src/asset_instance.cc
+++ b/src/asset_instance.cc
@@ -19,7 +19,9 @@
#include <libcxml/cxml.h>
#include "asset_instance.h"
+#include "exceptions.h"
+using std::bad_cast;
using boost::shared_ptr;
using namespace libdcp;
@@ -38,3 +40,22 @@ AssetInstance::AssetInstance (shared_ptr<const cxml::Node> node)
node->done ();
}
+
+Picture::Picture (shared_ptr<const cxml::Node> node)
+ : AssetInstance (node)
+{
+ frame_rate = Fraction (node->string_child ("FrameRate"));
+
+ try {
+ screen_aspect_ratio = Fraction (node->string_child ("ScreenAspectRatio"));
+ } catch (XMLError& e) {
+ /* Maybe it's not a fraction */
+ }
+
+ try {
+ float f = node->number_child<float> ("ScreenAspectRatio");
+ screen_aspect_ratio = Fraction (f * 1000, 1000);
+ } catch (bad_cast& e) {
+
+ }
+}
diff --git a/src/asset_instance.h b/src/asset_instance.h
index 9efbcb4d..480eaaa5 100644
--- a/src/asset_instance.h
+++ b/src/asset_instance.h
@@ -46,4 +46,66 @@ public:
std::string key_id;
};
+class Picture : public AssetInstance
+{
+public:
+ Picture ()
+ : AssetInstance ()
+ {}
+
+ Picture (boost::shared_ptr<const cxml::Node> node);
+
+ Fraction frame_rate;
+ Fraction screen_aspect_ratio;
+};
+
+class MainPicture : public Picture
+{
+public:
+ MainPicture ()
+ : Picture ()
+ {}
+
+ MainPicture (boost::shared_ptr<const cxml::Node> node)
+ : Picture (node)
+ {}
+
+};
+
+class MainStereoscopicPicture : public Picture
+{
+public:
+ MainStereoscopicPicture ()
+ : Picture ()
+ {}
+
+ MainStereoscopicPicture (boost::shared_ptr<const cxml::Node> node)
+ : Picture (node)
+ {}
+};
+
+class MainSound : public AssetInstance
+{
+public:
+ MainSound ()
+ : AssetInstance ()
+ {}
+
+ MainSound (boost::shared_ptr<const cxml::Node> node)
+ : AssetInstance (node)
+ {}
+};
+
+class MainSubtitle : public AssetInstance
+{
+public:
+ MainSubtitle ()
+ : AssetInstance ()
+ {}
+
+ MainSubtitle (boost::shared_ptr<const cxml::Node> node)
+ : AssetInstance (node)
+ {}
+};
+
}