libvdo
vdo-types.h
Go to the documentation of this file.
1 
9 #ifndef __VDO_TYPES_H__
10 #define __VDO_TYPES_H__
11 
12 #include <glib-object.h>
13 
14 G_BEGIN_DECLS
15 
16 #define VDO_TYPE_WDR_MODE (vdo_wdr_mode_get_type())
17 #define VDO_TYPE_FORMAT (vdo_format_get_type())
18 #define VDO_TYPE_H264_PROFILE (vdo_h264_profile_get_type())
19 #define VDO_TYPE_H265_PROFILE (vdo_h265_profile_get_type())
20 #define VDO_TYPE_AV1_PROFILE (vdo_av1_profile_get_type())
21 #define VDO_TYPE_RATE_CONTROL_MODE (vdo_rate_control_mode_get_type())
22 #define VDO_TYPE_RATE_CONTROL_PRIORITY (vdo_rate_control_priority_get_type())
23 #define VDO_TYPE_FRAME_TYPE (vdo_frame_type_get_type())
24 #define VDO_TYPE_TIMESTAMP (vdo_timestamp_get_type())
25 #define VDO_TYPE_BUFFER_ACCESS (vdo_buffer_access_get_type())
26 #define VDO_TYPE_BUFFER_STRATEGY (vdo_buffer_strategy_get_type())
27 #define VDO_TYPE_ZIPSTREAM_PROFILE (vdo_zipstream_profile_get_type())
28 #define VDO_TYPE_ZIPSTREAM_GDR (vdo_zipstream_gdr_get_type())
29 
33 typedef enum {
42 } VdoWdrMode;
43 
49 typedef enum {
56  VDO_FORMAT_BAYER = 4,
57  VDO_FORMAT_IVS = 5,
58  VDO_FORMAT_RAW = 6,
59  VDO_FORMAT_RGBA = 7,
65 } VdoFormat;
66 
74 static inline gboolean
75 vdo_format_is_encoded(VdoFormat format)
76 {
77  return (format == VDO_FORMAT_H264 ||
78  format == VDO_FORMAT_H265 ||
79  format == VDO_FORMAT_AV1 ||
80  format == VDO_FORMAT_AVIF ||
81  format == VDO_FORMAT_JPEG);
82 }
83 
91 static inline gboolean
92 vdo_format_is_motion_encoded(VdoFormat format)
93 {
94  switch (format) {
95  case VDO_FORMAT_AVIF:
96  case VDO_FORMAT_JPEG:
97  return FALSE;
98  default:
99  return vdo_format_is_encoded(format);
100  }
101 }
102 
106 typedef enum {
112 
116 typedef enum {
121 
125 typedef enum {
129 } VdoAV1Profile;
130 
134 typedef enum {
141 
145 typedef enum {
151 
157 typedef enum {
160  VDO_FRAME_TYPE_H264_SPS = 1,
161  VDO_FRAME_TYPE_H264_PPS = 2,
162  VDO_FRAME_TYPE_H264_SEI = 3,
166  VDO_FRAME_TYPE_H264_I = 5,
171  VDO_FRAME_TYPE_H265_SPS = 8,
172  VDO_FRAME_TYPE_H265_PPS = 9,
173  VDO_FRAME_TYPE_H265_VPS = 10,
174  VDO_FRAME_TYPE_H265_SEI = 11,
178  VDO_FRAME_TYPE_H265_I = 13,
185  VDO_FRAME_TYPE_RAW = 18,
194 } VdoFrameType;
195 
199 typedef enum {
205 
209 typedef enum {
216 
220 typedef enum {
222  VDO_CHUNK_ERROR = 1u << 31u,
223 } VdoChunkType;
224 
228 typedef enum {
230  VDO_CHUNK_OPTION_MMAP = 1u << 31u,
232 
236 typedef struct {
237  union __attribute__((__may_alias__)) {
238  gpointer data;
239  gchar* chars;
240  guint8* bytes;
241  };
242  gsize size;
244  gint64 offset;
245 } VdoChunk;
246 
248 static inline gboolean
249 vdo_frame_is_encoded(G_GNUC_UNUSED VdoFrameType type)
250 {
251  return FALSE;
252 }
253 
255 static inline VdoFormat
256 vdo_frame_is_of_format(G_GNUC_UNUSED VdoFrameType type)
257 {
258  return VDO_FORMAT_NONE;
259 }
260 
261 #ifndef AXISOS_13_PREVIEW
262 typedef enum {
263  VDO_OVERLAY_ALIGN_NONE = -1,
264  VDO_OVERLAY_ALIGN_TOP = 0,
265  VDO_OVERLAY_ALIGN_BOTTOM = 1,
266 } VdoOverlayAlign;
267 
268 typedef enum {
269  VDO_OVERLAY_COLOR_TRANSPARENT = 0x0000,
270  VDO_OVERLAY_COLOR_BLACK = 0xF000,
271  VDO_OVERLAY_COLOR_WHITE = 0xFFFF,
272 } VdoOverlayColor;
273 
274 typedef enum {
275  VDO_OVERLAY_TEXT_SIZE_SMALL = 16,
276  VDO_OVERLAY_TEXT_SIZE_MEDIUM = 32,
277  VDO_OVERLAY_TEXT_SIZE_LARGE = 48,
278 } VdoOverlayTextSize;
279 #endif
280 
284 typedef enum {
287 
293 
299  VDO_TIMESTAMP_DIFF = 4,
300 
306 
312 
318 
324  VDO_TIMESTAMP_DIFF | VDO_TIMESTAMP_MONO_CLIENT \
326 
332  VDO_TIMESTAMP_DIFF | VDO_TIMESTAMP_MONO_CLIENT \
335 
342 typedef enum {
351 } VdoIntent;
352 
358 typedef enum {
374 
384 typedef enum {
387 
390 
393 
396 
399 
402 
405 
408 
411 
415 
424 typedef enum {
427 
429 
430  VDO_BUFFER_STRATEGY_INPUT = 1,
431 
433  VDO_BUFFER_STRATEGY_EXTERNAL = 2,
435 
441 
445 
449 typedef struct {
450  gpointer data;
451  gsize data_size;
452 } VdoMemChunk;
453 
457 typedef struct {
458  guint32 width;
459  guint32 height;
460 } VdoResolution;
461 
465 typedef struct {
466  gsize count;
467  __extension__ VdoResolution resolutions[];
469 
473 typedef struct {
474  guint width;
475  guint height;
476  guint x;
477  guint y;
478 } VdoRect;
479 
505 typedef union __attribute__((__may_alias__)) {
506  __extension__ struct {gint32 x; gint32 y;};
507  __extension__ struct {gint32 w; gint32 h;};
508  __extension__ struct {gint32 num; gint32 den;};
509  gint32 val[2];
510 } VdoPair32i;
511 
537 typedef union __attribute__((__may_alias__)) {
538  __extension__ struct {guint32 x; guint32 y;};
539  __extension__ struct {guint32 w; guint32 h;};
540  __extension__ struct {guint32 num; guint32 den;};
541  VdoResolution res;
542  guint32 val[2];
543 } VdoPair32u;
544 
564 typedef union __attribute__((__may_alias__)) {
565  __extension__ struct {gint32 x; gint32 y; gint32 w; gint32 h;};
566  gint32 val[4];
567 } VdoQuad32i;
568 
588 typedef union __attribute__((__may_alias__)) {
589  __extension__ struct {guint32 x; guint32 y; guint32 w; guint32 h;};
590  guint32 val[4];
591 } VdoQuad32u;
592 
599 
606 
613 
620 
627 
634 
642 
649 
656 
667 
668 GType vdo_timestamp_get_type(void);
669 
670 GType vdo_intent_get_type(void);
671 
672 GType vdo_buffer_access_get_type(void);
673 
674 GType vdo_buffer_strategy_get_type(void);
675 
677 const char *vdo_format_to_str(VdoFormat format);
678 
679 G_END_DECLS
680 
681 #endif
A video chunk.
Definition: vdo-types.h:236
VdoChunkType type
Definition: vdo-types.h:243
gint64 offset
Definition: vdo-types.h:244
gsize size
Definition: vdo-types.h:241
A memory chunk.
Definition: vdo-types.h:449
gsize data_size
Definition: vdo-types.h:451
gpointer data
Definition: vdo-types.h:450
A representation of a rectangle with a position.
Definition: vdo-types.h:473
guint x
Definition: vdo-types.h:476
guint y
Definition: vdo-types.h:477
guint width
Definition: vdo-types.h:474
guint height
Definition: vdo-types.h:475
A set of resolutions.
Definition: vdo-types.h:465
gsize count
Definition: vdo-types.h:466
A resolution.
Definition: vdo-types.h:457
guint32 height
Definition: vdo-types.h:459
guint32 width
Definition: vdo-types.h:458
VdoStreamTimestamp
Timestamp types.
Definition: vdo-types.h:284
@ VDO_TIMESTAMP_MONO_SERVER
Definition: vdo-types.h:311
@ VDO_TIMESTAMP_UTC
Definition: vdo-types.h:292
@ VDO_TIMESTAMP_MONO_CAPTURE
Definition: vdo-types.h:305
@ VDO_TIMESTAMP_MONO_CLIENT
Definition: vdo-types.h:317
@ VDO_TIMESTAMP_ZIPSTREAM
Definition: vdo-types.h:298
@ VDO_TIMESTAMP_MONO_CLIENT_SERVER_DIFF
Definition: vdo-types.h:323
@ VDO_TIMESTAMP_NONE
Definition: vdo-types.h:286
@ VDO_TIMESTAMP_MONO_CLIENT_CAPTURE_DIFF
Definition: vdo-types.h:331
VdoH265Profile
H.265 profiles.
Definition: vdo-types.h:116
@ VDO_H265_PROFILE_NONE
Definition: vdo-types.h:117
@ VDO_H265_PROFILE_MAIN_10
Definition: vdo-types.h:119
@ VDO_H265_PROFILE_MAIN
Definition: vdo-types.h:118
GType vdo_frame_type_get_type(void)
Get vdo frame type.
GType vdo_h265_profile_get_type(void)
Get h265 profile type.
VdoRateControlPriority
Bitrate control priorities.
Definition: vdo-types.h:145
@ VDO_RATE_CONTROL_PRIORITY_NONE
Definition: vdo-types.h:146
@ VDO_RATE_CONTROL_PRIORITY_FRAMERATE
Definition: vdo-types.h:147
@ VDO_RATE_CONTROL_PRIORITY_QUALITY
Definition: vdo-types.h:148
@ VDO_RATE_CONTROL_PRIORITY_FULL_FRAMERATE
Definition: vdo-types.h:149
VdoH264Profile
H.264 profiles.
Definition: vdo-types.h:106
@ VDO_H264_PROFILE_MAIN
Definition: vdo-types.h:109
@ VDO_H264_PROFILE_NONE
Definition: vdo-types.h:107
@ VDO_H264_PROFILE_HIGH
Definition: vdo-types.h:110
@ VDO_H264_PROFILE_BASELINE
Definition: vdo-types.h:108
GType vdo_av1_profile_get_type(void)
Get AV1 profile type.
GType vdo_rate_control_priority_get_type(void)
Get rate control priority type.
GType vdo_rate_control_mode_get_type(void)
Get rate control mode type.
union __attribute__((__may_alias__))
Generic object for two signed 32bit values.
Definition: vdo-types.h:505
VdoFormat
Video formats.
Definition: vdo-types.h:49
@ VDO_FORMAT_NONE
Definition: vdo-types.h:50
@ VDO_FORMAT_AV1
Definition: vdo-types.h:63
@ VDO_FORMAT_YUV
Definition: vdo-types.h:54
@ VDO_FORMAT_JPEG
Definition: vdo-types.h:53
@ VDO_FORMAT_RGB
Definition: vdo-types.h:61
@ VDO_FORMAT_PLANAR_RGB
Definition: vdo-types.h:62
@ VDO_FORMAT_AVIF
Definition: vdo-types.h:64
@ VDO_FORMAT_H265
Definition: vdo-types.h:52
@ VDO_FORMAT_H264
Definition: vdo-types.h:51
VdoZipStreamProfile
Zipstream profiles.
Definition: vdo-types.h:199
@ VDO_ZIPSTREAM_PROFILE_NONE
Definition: vdo-types.h:200
@ VDO_ZIPSTREAM_PROFILE_LIVE
Definition: vdo-types.h:203
@ VDO_ZIPSTREAM_PROFILE_STORAGE
Definition: vdo-types.h:202
@ VDO_ZIPSTREAM_PROFILE_CLASSIC
Definition: vdo-types.h:201
VdoRateControlMode
Bitrate control modes.
Definition: vdo-types.h:134
@ VDO_RATE_CONTROL_MODE_VBR
Definition: vdo-types.h:137
@ VDO_RATE_CONTROL_MODE_NONE
Definition: vdo-types.h:135
@ VDO_RATE_CONTROL_MODE_CBR
Definition: vdo-types.h:136
@ VDO_RATE_CONTROL_MODE_ABR
Definition: vdo-types.h:139
@ VDO_RATE_CONTROL_MODE_MBR
Definition: vdo-types.h:138
VdoChunkType
Video chunk types.
Definition: vdo-types.h:220
@ VDO_CHUNK_NONE
Definition: vdo-types.h:221
@ VDO_CHUNK_ERROR
Definition: vdo-types.h:222
GType vdo_zipstream_gdr_get_type(void)
Get zipstream GDR type.
GType vdo_zipstream_profile_get_type(void)
Get zipstream profile type.
VdoStreamEvent
Stream related events.
Definition: vdo-types.h:358
@ VDO_STREAM_EVENT_NONE
Definition: vdo-types.h:359
@ VDO_STREAM_EVENT_BUFFERING_WARN
Definition: vdo-types.h:367
@ VDO_STREAM_EVENT_CREATED
Definition: vdo-types.h:369
@ VDO_STREAM_EVENT_STOPPED
Definition: vdo-types.h:361
@ VDO_STREAM_EVENT_QUOTA_SOFT
Definition: vdo-types.h:363
@ VDO_STREAM_EVENT_STARTED
Definition: vdo-types.h:360
@ VDO_STREAM_EVENT_RESOURCE
Definition: vdo-types.h:362
@ VDO_STREAM_EVENT_CLOSED
Definition: vdo-types.h:370
@ VDO_STREAM_EVENT_INVALID
Definition: vdo-types.h:372
@ VDO_STREAM_EVENT_EXISTING
Definition: vdo-types.h:371
@ VDO_STREAM_EVENT_BUFFERING
Definition: vdo-types.h:366
@ VDO_STREAM_EVENT_ZIPSTREAM
Definition: vdo-types.h:365
@ VDO_STREAM_EVENT_QUOTA_HARD
Definition: vdo-types.h:364
@ VDO_STREAM_EVENT_BUFFERING_FAIL
Definition: vdo-types.h:368
VdoAV1Profile
AV1 profiles.
Definition: vdo-types.h:125
@ VDO_AV1_PROFILE_NONE
Definition: vdo-types.h:126
@ VDO_AV1_PROFILE_MAIN_10
Definition: vdo-types.h:128
@ VDO_AV1_PROFILE_MAIN
Definition: vdo-types.h:127
VdoBufferAccess
Buffer access definitions.
Definition: vdo-types.h:384
@ VDO_BUFFER_ACCESS_ANY_RD
Definition: vdo-types.h:395
@ VDO_BUFFER_ACCESS_CPU_WR
Definition: vdo-types.h:398
@ VDO_BUFFER_ACCESS_CPU_RW
Definition: vdo-types.h:407
@ VDO_BUFFER_ACCESS_ANY_WR
Definition: vdo-types.h:404
@ VDO_BUFFER_ACCESS_DEV_RD
Definition: vdo-types.h:392
@ VDO_BUFFER_ACCESS_ANY_RW
Definition: vdo-types.h:413
@ VDO_BUFFER_ACCESS_DEV_WR
Definition: vdo-types.h:401
@ VDO_BUFFER_ACCESS_DEV_RW
Definition: vdo-types.h:410
@ VDO_BUFFER_ACCESS_CPU_RD
Definition: vdo-types.h:389
@ VDO_BUFFER_ACCESS_NONE
Definition: vdo-types.h:386
VdoZipStreamGdr
Zipstream GDR (Live only).
Definition: vdo-types.h:209
@ VDO_ZIPSTREAM_GDR_OFF
Definition: vdo-types.h:212
@ VDO_ZIPSTREAM_GDR_NONE
Definition: vdo-types.h:210
@ VDO_ZIPSTREAM_GDR_AUTO
Definition: vdo-types.h:211
@ VDO_ZIPSTREAM_GDR_BALANCED
Definition: vdo-types.h:213
@ VDO_ZIPSTREAM_GDR_EXTREME
Definition: vdo-types.h:214
VdoBufferStrategy
Buffer strategy.
Definition: vdo-types.h:424
@ VDO_BUFFER_STRATEGY_NONE
Definition: vdo-types.h:426
@ VDO_BUFFER_STRATEGY_INFINITE
Definition: vdo-types.h:443
@ VDO_BUFFER_STRATEGY_EXPLICIT
Definition: vdo-types.h:440
VdoIntent
Intent values.
Definition: vdo-types.h:342
@ VDO_INTENT_NONE
Definition: vdo-types.h:343
@ VDO_INTENT_PRODUCE
Definition: vdo-types.h:347
@ VDO_INTENT_EVENTFD
Definition: vdo-types.h:349
@ VDO_INTENT_CONSUME
Definition: vdo-types.h:346
@ VDO_INTENT_CONTROL
Definition: vdo-types.h:344
@ VDO_INTENT_MONITOR
Definition: vdo-types.h:345
@ VDO_INTENT_UNIVERSE
Definition: vdo-types.h:350
@ VDO_INTENT_DEFAULT
Definition: vdo-types.h:348
GType vdo_wdr_mode_get_type(void)
Get wdr mode type.
VdoChunkOption
Video chunk options.
Definition: vdo-types.h:228
@ VDO_CHUNK_OPTION_MMAP
Definition: vdo-types.h:230
@ VDO_CHUNK_OPTION_NONE
Definition: vdo-types.h:229
GType vdo_h264_profile_get_type(void)
Get h264 profile type.
VdoWdrMode
Wide Dynamic Range (WDR) modes.
Definition: vdo-types.h:33
@ VDO_WDR_MODE_AUTO
Definition: vdo-types.h:41
@ VDO_WDR_MODE_NONE
Definition: vdo-types.h:34
@ VDO_WDR_MODE_LINEAR
Definition: vdo-types.h:35
@ VDO_WDR_MODE_SENSOR
Definition: vdo-types.h:39
@ VDO_WDR_MODE_4X
Definition: vdo-types.h:38
@ VDO_WDR_MODE_OFF
Definition: vdo-types.h:40
@ VDO_WDR_MODE_2X
Definition: vdo-types.h:36
@ VDO_WDR_MODE_3X
Definition: vdo-types.h:37
VdoFrameType
Video frame types.
Definition: vdo-types.h:157
@ VDO_FRAME_TYPE_YUV
Definition: vdo-types.h:183
@ VDO_FRAME_TYPE_H265_B
Definition: vdo-types.h:181
@ VDO_FRAME_TYPE_H265_IDR
Definition: vdo-types.h:176
@ VDO_FRAME_TYPE_RGB
Definition: vdo-types.h:188
@ VDO_FRAME_TYPE_H265_P
Definition: vdo-types.h:180
@ VDO_FRAME_TYPE_NONE
Definition: vdo-types.h:158
@ VDO_FRAME_TYPE_AV1_BIDI
Definition: vdo-types.h:192
@ VDO_FRAME_TYPE_PLANAR_RGB
Definition: vdo-types.h:189
@ VDO_FRAME_TYPE_H264_P
Definition: vdo-types.h:168
@ VDO_FRAME_TYPE_AV1_KEY
Definition: vdo-types.h:190
@ VDO_FRAME_TYPE_RGBA
Definition: vdo-types.h:187
@ VDO_FRAME_TYPE_H264_IDR
Definition: vdo-types.h:164
@ VDO_FRAME_TYPE_AVIF
Definition: vdo-types.h:193
@ VDO_FRAME_TYPE_AV1_INTER
Definition: vdo-types.h:191
@ VDO_FRAME_TYPE_H264_B
Definition: vdo-types.h:169
@ VDO_FRAME_TYPE_JPEG
Definition: vdo-types.h:182
GType vdo_format_get_type(void)
Get vdo format type.