Vuo  2.0.0
VuoVideoFrame.c
Go to the documentation of this file.
1 
10 #include "type.h"
11 #include "VuoVideoFrame.h"
12 
14 #ifdef VUO_COMPILER
16  "title" : "Video Frame",
17  "description" : "An image and timestamp for a single frame of video.",
18  "keywords" : [ ],
19  "version" : "1.0.0",
20  "dependencies" : [
21  "VuoImage",
22  "VuoReal"
23  ]
24  });
25 #endif
26 
40 {
41  return (VuoVideoFrame){
42  VuoJson_getObjectValue(VuoImage, js, "image", NULL),
43  VuoJson_getObjectValue(VuoReal, js, "timestamp", 0),
44  VuoJson_getObjectValue(VuoReal, js, "duration", 0),
45  ""
46  };
47 }
48 
52 json_object *VuoVideoFrame_getJsonInternal(const VuoVideoFrame value, bool isInterprocess)
53 {
54  json_object *js = json_object_new_object();
55 
56  json_object *imageObject = isInterprocess
57  ? VuoImage_getInterprocessJson(value.image)
58  : VuoImage_getJson(value.image);
59  json_object_object_add(js, "image", imageObject);
60 
61  json_object *timestampObject = VuoReal_getJson(value.timestamp);
62  json_object_object_add(js, "timestamp", timestampObject);
63 
64  json_object *durationObject = VuoReal_getJson(value.duration);
65  json_object_object_add(js, "duration", durationObject);
66 
67  return js;
68 }
69 
74 {
75  return VuoVideoFrame_getJsonInternal(value, false);
76 }
77 
82 {
83  return VuoVideoFrame_getJsonInternal(value, true);
84 }
85 
90 {
91  return VuoText_format("%s<br />Timestamp: <tt>%.3f</tt> seconds<br />Frame duration: <tt>%.3f</tt> seconds", VuoImage_getSummary(value.image), value.timestamp, value.duration);
92 }
93 
98 {
99  // Maybe this should just check image?
100  return VuoReal_areEqual(value1.timestamp, value2.timestamp)
101  && VuoReal_areEqual(value1.duration, value2.duration)
102  && VuoImage_areEqual(value1.image, value2.image);
103 }
104 
110 {
111  VuoType_returnInequality(VuoReal, a.timestamp, b.timestamp);
112  VuoType_returnInequality(VuoReal, a.duration, b.duration);
113  VuoType_returnInequality(VuoImage, a.image, b.image);
114  return false;
115 }