OpenTok C SDK
video_frame.h
Go to the documentation of this file.
1 
7 #ifndef VIDEO_FRAME_H
8 #define VIDEO_FRAME_H
9 
10 #ifndef _WIN32
11 #include <unistd.h>
12 #endif
13 
14 #include "base.h"
15 #include "config.h"
16 
17 OTC_BEGIN_DECL
18 
21 #define OTC_VIDEO_FRAME_METADATA_MAX_SIZE 32
22 
26 
33  0,
35  1,
41  6,
43  7,
46  9,
48  10,
50  11,
52  // Add any new enum value before this one.
54  255
55 };
56 
65  0,
67  1,
69  1,
70 };
71 
85  const uint8_t* (*get_plane)(void* user_data,
86  enum otc_video_frame_plane plane);
87 
96 
103  void (*release)(void* user_data);
104 
108  void* user_data;
109 
114  void* reserved;
115 };
116 
125 typedef void (*otc_video_frame_memory_release_callback)(const uint8_t* buffer,
126  void* arg);
127 
134 typedef void (*video_transform_callback)(void* user_data,
135  struct otc_video_frame* frame);
136 
137 OTC_DECL(void*)
138 otc_video_frame_get_native_handle(const otc_video_frame* frame);
139 
150 OTC_DECL(otc_video_frame*)
152  int width,
153  int height,
154  const uint8_t* buffer);
155 
164 
179 OTC_DECL(otc_video_frame*)
180 otc_video_frame_new_I420(int width,
181  int height,
182  const uint8_t* y_plane,
183  int y_stride,
184  const uint8_t* u_plane,
185  int u_stride,
186  const uint8_t* v_plane,
187  int v_stride);
188 
199 OTC_DECL(otc_video_frame*)
200 otc_video_frame_new_MJPEG(int width,
201  int height,
202  const uint8_t* buffer,
203  size_t size);
204 
215 OTC_DECL(otc_video_frame*)
217  int height,
218  const uint8_t* buffer,
219  size_t size);
220 
233 OTC_DECL(otc_video_frame*)
235  int width,
236  int height,
237  const uint8_t** planes,
238  int* strides);
239 
252 OTC_DECL(otc_video_frame*)
254  enum otc_video_frame_format input_format,
255  int width,
256  int height,
257  const uint8_t** planes,
258  int* strides);
259 
274 OTC_DECL(otc_video_frame*)
276  enum otc_video_frame_format format,
277  int width,
278  int height,
279  otc_bool is_shallow_copyable,
280  const uint8_t* buffer,
281  size_t size,
283  void* arg);
284 
300 OTC_DECL(otc_video_frame*)
302  enum otc_video_frame_format format,
303  int width,
304  int height,
305  otc_bool is_shallow_copyable,
306  struct otc_video_frame_planar_memory_callbacks* callbacks);
307 
322 OTC_DECL(otc_video_frame*)
324  int height,
325  const uint8_t* y_plane,
326  int y_stride,
327  const uint8_t* u_plane,
328  int u_stride,
329  const uint8_t* v_plane,
330  int v_stride);
331 
344 OTC_DECL(otc_video_frame*)
346  int height,
347  const uint8_t* y_plane,
348  int y_stride,
349  const uint8_t* uv_plane,
350  int uv_stride);
351 
364 OTC_DECL(otc_video_frame*)
366  int height,
367  const uint8_t* y_plane,
368  int y_stride,
369  const uint8_t* uv_plane,
370  int uv_stride);
371 
378 OTC_DECL(const uint8_t*)
380 
388 OTC_DECL(size_t) otc_video_frame_get_buffer_size(const otc_video_frame* frame);
389 
396 OTC_DECL(int64_t) otc_video_frame_get_timestamp(const otc_video_frame* frame);
397 
404 OTC_DECL(void)
405 otc_video_frame_set_timestamp(otc_video_frame* frame, int64_t timestamp);
406 
413 OTC_DECL(int) otc_video_frame_get_width(const otc_video_frame* frame);
414 
421 OTC_DECL(int) otc_video_frame_get_height(const otc_video_frame* frame);
422 
430 OTC_DECL(size_t)
432 
440 OTC_DECL(enum otc_video_frame_format)
442 
450 OTC_DECL(void)
452  enum otc_video_frame_format format);
453 
462 OTC_DECL(const uint8_t*)
464  enum otc_video_frame_plane plane);
465 
473 OTC_DECL(size_t)
475  enum otc_video_frame_plane plane);
476 
484 OTC_DECL(int)
486  enum otc_video_frame_plane plane);
487 
495 OTC_DECL(int)
497  enum otc_video_frame_plane plane);
498 
506 OTC_DECL(int)
508  enum otc_video_frame_plane plane);
509 
516 OTC_DECL(otc_video_frame*) otc_video_frame_copy(const otc_video_frame* frame);
517 
524 OTC_DECL(otc_video_frame*)
526 
547 OTC_DECL(otc_video_frame*)
549  const otc_video_frame* frame);
550 
566 OTC_DECL(otc_status)
568  uint8_t** planes,
569  const int* strides,
570  const otc_video_frame* input_frame);
571 
578 OTC_DECL(otc_bool) otc_video_frame_is_packed(const otc_video_frame* frame);
579 
587 
597 OTC_DECL(otc_status)
599  const uint8_t* data,
600  size_t size);
601 
611 OTC_DECL(const uint8_t*)
612 otc_video_frame_get_metadata(const otc_video_frame* frame, size_t* size);
613 
614 OTC_END_DECL
615 
616 #endif // VIDEO_FRAME_H
Definition: video_frame.h:38
Definition: video_frame.h:53
void(* video_transform_callback)(void *user_data, struct otc_video_frame *frame)
The callback that will perform the custom transformation.
Definition: video_frame.h:134
int otc_status
Definition: base.h:153
Definition: video_frame.h:68
struct otc_video_frame otc_video_frame
Definition: video_frame.h:25
int64_t otc_video_frame_get_timestamp(const otc_video_frame *frame)
int otc_video_frame_get_width(const otc_video_frame *frame)
const uint8_t * otc_video_frame_get_buffer(const otc_video_frame *frame)
otc_video_frame_format
Definition: video_frame.h:31
Definition: video_frame.h:40
void * user_data
Definition: video_frame.h:108
size_t otc_video_frame_get_buffer_size(const otc_video_frame *frame)
size_t otc_video_frame_get_number_of_planes(const otc_video_frame *frame)
otc_video_frame * otc_video_frame_new_planar_memory_wrapper(enum otc_video_frame_format format, int width, int height, otc_bool is_shallow_copyable, struct otc_video_frame_planar_memory_callbacks *callbacks)
otc_video_frame_plane
Definition: video_frame.h:59
enum otc_video_frame_format otc_video_frame_get_format(const otc_video_frame *frame)
Definition: video_frame.h:44
otc_video_frame * otc_video_frame_new_I420(int width, int height, const uint8_t *y_plane, int y_stride, const uint8_t *u_plane, int u_stride, const uint8_t *v_plane, int v_stride)
otc_bool otc_video_frame_is_contiguous(const otc_video_frame *frame)
Definition: video_frame.h:66
otc_video_frame * otc_video_frame_mutable_copy(const otc_video_frame *frame)
otc_video_frame * otc_video_frame_new_I420_wrapper(int width, int height, const uint8_t *y_plane, int y_stride, const uint8_t *u_plane, int u_stride, const uint8_t *v_plane, int v_stride)
otc_status otc_video_frame_delete(otc_video_frame *frame)
Definition: video_frame.h:76
otc_video_frame * otc_video_frame_new(enum otc_video_frame_format format, int width, int height, const uint8_t *buffer)
Definition: video_frame.h:42
otc_video_frame * otc_video_frame_new_NV21_wrapper(int width, int height, const uint8_t *y_plane, int y_stride, const uint8_t *uv_plane, int uv_stride)
otc_video_frame * otc_video_frame_new_MJPEG(int width, int height, const uint8_t *buffer, size_t size)
Definition: video_frame.h:61
otc_video_frame * otc_video_frame_new_from_planes(enum otc_video_frame_format format, int width, int height, const uint8_t **planes, int *strides)
otc_status otc_video_frame_convert_inplace(enum otc_video_frame_format format, uint8_t **planes, const int *strides, const otc_video_frame *input_frame)
int(* get_plane_stride)(void *user_data, enum otc_video_frame_plane plane)
Definition: video_frame.h:95
int otc_video_frame_get_height(const otc_video_frame *frame)
void * reserved
Definition: video_frame.h:114
Definition: video_frame.h:37
otc_video_frame * otc_video_frame_new_contiguous_memory_wrapper(enum otc_video_frame_format format, int width, int height, otc_bool is_shallow_copyable, const uint8_t *buffer, size_t size, otc_video_frame_memory_release_callback callback, void *arg)
void otc_video_frame_set_format(otc_video_frame *frame, enum otc_video_frame_format format)
Definition: video_frame.h:47
otc_video_frame * otc_video_frame_new_NV12_wrapper(int width, int height, const uint8_t *y_plane, int y_stride, const uint8_t *uv_plane, int uv_stride)
size_t otc_video_frame_get_plane_size(const otc_video_frame *frame, enum otc_video_frame_plane plane)
otc_video_frame * otc_video_frame_convert(enum otc_video_frame_format format, const otc_video_frame *frame)
otc_video_frame * otc_video_frame_copy(const otc_video_frame *frame)
Definition: video_frame.h:64
Definition: video_frame.h:32
void(* otc_video_frame_memory_release_callback)(const uint8_t *buffer, void *arg)
Definition: video_frame.h:125
int otc_video_frame_get_plane_height(const otc_video_frame *frame, enum otc_video_frame_plane plane)
Definition: video_frame.h:45
Base functions.
Definition: video_frame.h:51
Definition: video_frame.h:39
const uint8_t * otc_video_frame_get_metadata(const otc_video_frame *frame, size_t *size)
int otc_bool
Definition: base.h:127
Definition: video_frame.h:62
otc_video_frame * otc_video_frame_new_compressed(int width, int height, const uint8_t *buffer, size_t size)
Definition: video_frame.h:34
otc_bool otc_video_frame_is_packed(const otc_video_frame *frame)
const uint8_t * otc_video_frame_get_plane_binary_data(const otc_video_frame *frame, enum otc_video_frame_plane plane)
int otc_video_frame_get_plane_stride(const otc_video_frame *frame, enum otc_video_frame_plane plane)
otc_video_frame * otc_video_frame_new_I420_from_planes_with_format(enum otc_video_frame_format input_format, int width, int height, const uint8_t **planes, int *strides)
Definition: video_frame.h:60
void otc_video_frame_set_timestamp(otc_video_frame *frame, int64_t timestamp)
void(* release)(void *user_data)
Definition: video_frame.h:103
Definition: video_frame.h:36
Definition: video_frame.h:49
otc_status otc_video_frame_set_metadata(otc_video_frame *frame, const uint8_t *data, size_t size)
int otc_video_frame_get_plane_width(const otc_video_frame *frame, enum otc_video_frame_plane plane)