Vuo  2.3.2
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
27 
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 
51 json_object *VuoVideoFrame_getJsonInternal(const VuoVideoFrame value, bool isInterprocess)
52 {
53  json_object *js = json_object_new_object();
54 
55  json_object *imageObject = isInterprocess
56  ? VuoImage_getInterprocessJson(value.image)
57  : VuoImage_getJson(value.image);
58  json_object_object_add(js, "image", imageObject);
59 
60  json_object *timestampObject = VuoReal_getJson(value.timestamp);
61  json_object_object_add(js, "timestamp", timestampObject);
62 
63  json_object *durationObject = VuoReal_getJson(value.duration);
64  json_object_object_add(js, "duration", durationObject);
65 
66  return js;
67 }
68 
73 {
74  return VuoVideoFrame_getJsonInternal(value, false);
75 }
76 
81 {
82  return VuoVideoFrame_getJsonInternal(value, true);
83 }
84 
89 {
90  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);
91 }
92 
97 {
98  // Maybe this should just check image?
99  return VuoReal_areEqual(value1.timestamp, value2.timestamp)
100  && VuoReal_areEqual(value1.duration, value2.duration)
101  && VuoImage_areEqual(value1.image, value2.image);
102 }
103 
109 {
110  VuoType_returnInequality(VuoReal, a.timestamp, b.timestamp);
111  VuoType_returnInequality(VuoReal, a.duration, b.duration);
112  VuoType_returnInequality(VuoImage, a.image, b.image);
113  return false;
114 }