summaryrefslogtreecommitdiff
path: root/src/lib/types.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2016-06-13 13:48:45 +0100
committerCarl Hetherington <cth@carlh.net>2016-06-13 13:48:45 +0100
commit1daaa67c21d4d28757cdcb06c5e26aec3817867c (patch)
treee31238b3445857d9dcaac38e1ee699064b35a416 /src/lib/types.cc
parenta136864bf39e952ea6058510a594798588e56a03 (diff)
Make storage of VideoFrameType robust by using a string in the XML rather than a casted enum.
Diffstat (limited to 'src/lib/types.cc')
-rw-r--r--src/lib/types.cc43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/lib/types.cc b/src/lib/types.cc
index ba062c3f8..ce5081464 100644
--- a/src/lib/types.cc
+++ b/src/lib/types.cc
@@ -88,3 +88,46 @@ Crop::as_xml (xmlpp::Node* node) const
node->add_child("TopCrop")->add_child_text (raw_convert<string> (top));
node->add_child("BottomCrop")->add_child_text (raw_convert<string> (bottom));
}
+
+string
+video_frame_type_to_string (VideoFrameType t)
+{
+ switch (t) {
+ case VIDEO_FRAME_TYPE_2D:
+ return "2d";
+ case VIDEO_FRAME_TYPE_3D_LEFT_RIGHT:
+ return "3d-left-right";
+ case VIDEO_FRAME_TYPE_3D_TOP_BOTTOM:
+ return "3d-top-bottom";
+ case VIDEO_FRAME_TYPE_3D_ALTERNATE:
+ return "3d-alternate";
+ case VIDEO_FRAME_TYPE_3D_LEFT:
+ return "3d-left";
+ case VIDEO_FRAME_TYPE_3D_RIGHT:
+ return "3d-right";
+ default:
+ DCPOMATIC_ASSERT (false);
+ }
+
+ DCPOMATIC_ASSERT (false);
+}
+
+VideoFrameType
+string_to_video_frame_type (string s)
+{
+ if (s == "2d") {
+ return VIDEO_FRAME_TYPE_2D;
+ } else if (s == "3d-left-right") {
+ return VIDEO_FRAME_TYPE_3D_LEFT_RIGHT;
+ } else if (s == "3d-top-bottom") {
+ return VIDEO_FRAME_TYPE_3D_TOP_BOTTOM;
+ } else if (s == "3d-alternate") {
+ return VIDEO_FRAME_TYPE_3D_ALTERNATE;
+ } else if (s == "3d-left") {
+ return VIDEO_FRAME_TYPE_3D_LEFT;
+ } else if (s == "3d-right") {
+ return VIDEO_FRAME_TYPE_3D_RIGHT;
+ }
+
+ DCPOMATIC_ASSERT (false);
+}