Agora C++ API Reference for All Platforms
Loading...
Searching...
No Matches
NGIAgoraVideoFrame.h
1
2// Copyright (c) 2020 Agora.io. All rights reserved
3
4// This program is confidential and proprietary to Agora.io.
5// And may not be copied, reproduced, modified, disclosed to others, published
6// or used, in whole or in part, without the express prior written permission
7// of Agora.io.
8
9#pragma once // NOLINT(build/header_guard)
10
11#include "AgoraBase.h"
12
13#ifndef OPTIONAL_ENUM_CLASS
14#if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)
15#define OPTIONAL_ENUM_CLASS enum class
16#else
17#define OPTIONAL_ENUM_CLASS enum
18#endif
19#endif
20
21namespace agora {
22namespace rtc {
23
29 OPTIONAL_ENUM_CLASS Format {
30 kUnknown,
31 kI420,
32 kI422,
33 kNV21,
34 kNV12,
35 kI010,
36 kRGBA,
37 kARGB,
38 kBGRA,
39 kABGR
40 };
42 uint8_t* data;
43 int size;
44};
45
57
58
65 OPTIONAL_ENUM_CLASS TextureType {
66 kGlTextureOes,
67 kGlTexture2D,
68 };
69 OPTIONAL_ENUM_CLASS EglContextType {
70 kEglContext10,
71 kEglContext14,
72 };
73
78 int64_t fence_object;
81
82 // for double buffer data
84 uint8_t* raw_data;
87};
88
94 OPTIONAL_ENUM_CLASS Type {
95 kRawPixels, // Raw pixels in memory
96 kTexture, // Deprecated Android: GL_TEXTURE_2D/GL_TEXTURE_OES
97 kCVPixelBuffer, // iOS: CVPixelBufferRef
98 kPaddedRawPixels, // Raw pixels with paddings
99 kTextureOES,// Android: GL_TEXTURE_OES
100 kTexture2D, // Android: GL_TEXTURE_2D
101 };
103 union {
104 TextureInfo texture; // Android (To be supported)
105 RawPixelBuffer pixels; // All platform
106 void* cvpixelbuffer; // iOS (To be supported)
107 };
108 int width;
112 int64_t timestamp_ms; // Capture time in milli-seconds
113};
114
118
119OPTIONAL_ENUM_CLASS VideoFrameMetaDataType {
120 kAlphaChannel,
121 kScreenMetaInfo,
122 kVideoSourceType,
123 kFaceInfo,
124 kFaceCaptureInfo,
125 kGravityRotation,
126 // Add other types afterwards
127};
128
129OPTIONAL_ENUM_CLASS VideoFrameGravityRotation {
130 kGravityRotation_Unknown = -1,
131 kGravityRotation_0 = 0,
132 kGravityRotation_90 = 90,
133 kGravityRotation_180 = 180,
134 kGravityRotation_270 = 270
135};
136
138 uint8_t* data;
139 int size;
140};
141
142typedef int32_t VideoSourceType;
143
149 public:
156 virtual int getVideoFrameData(VideoFrameData& data) const = 0;
157
167 virtual int fillVideoFrameData(const VideoFrameData& data) = 0;
168
178 virtual int getVideoFrameMetaData(VideoFrameMetaDataType type, void* data) = 0;
179
189 virtual int fillVideoFrameMetaData(VideoFrameMetaDataType type, const void* data) = 0;
190
191 protected:
193};
194
196 public:
204 const VideoFrameData& data, const VideoFrameMetaDataType* metatypes = NULL, int count = 0) = 0;
205
206 protected:
208};
209
210} // namespace rtc
211} // namespace agora
Definition AgoraRefPtr.h:31
Definition AgoraRefPtr.h:44
Definition NGIAgoraVideoFrame.h:148
virtual int getVideoFrameMetaData(VideoFrameMetaDataType type, void *data)=0
~IVideoFrame()
Definition NGIAgoraVideoFrame.h:192
virtual int fillVideoFrameData(const VideoFrameData &data)=0
virtual int getVideoFrameData(VideoFrameData &data) const =0
virtual int fillVideoFrameMetaData(VideoFrameMetaDataType type, const void *data)=0
Definition NGIAgoraVideoFrame.h:195
virtual ~IVideoFrameMemoryPool()
Definition NGIAgoraVideoFrame.h:207
virtual agora::agora_refptr< IVideoFrame > createVideoFrame(const VideoFrameData &data, const VideoFrameMetaDataType *metatypes=NULL, int count=0)=0
Definition AgoraExtensions.h:5
OPTIONAL_ENUM_CLASS VideoFrameMetaDataType
Definition NGIAgoraVideoFrame.h:119
int32_t VideoSourceType
Definition NGIAgoraVideoFrame.h:142
OPTIONAL_ENUM_CLASS VideoFrameGravityRotation
Definition NGIAgoraVideoFrame.h:129
Definition AgoraAtomicOps.h:21
Definition AgoraMediaBase.h:582
Definition NGIAgoraVideoFrame.h:137
int size
Definition NGIAgoraVideoFrame.h:139
uint8_t * data
Definition NGIAgoraVideoFrame.h:138
Definition NGIAgoraVideoFrame.h:46
int stride_y
Definition NGIAgoraVideoFrame.h:49
int stride_u
Definition NGIAgoraVideoFrame.h:51
RawPixelBuffer::Format format
Definition NGIAgoraVideoFrame.h:47
PaddedRawPixelBuffer()
Definition NGIAgoraVideoFrame.h:54
uint8_t * data_v
Definition NGIAgoraVideoFrame.h:52
uint8_t * data_u
Definition NGIAgoraVideoFrame.h:50
int stride_v
Definition NGIAgoraVideoFrame.h:53
uint8_t * data_y
Definition NGIAgoraVideoFrame.h:48
Definition NGIAgoraVideoFrame.h:28
Format format
Definition NGIAgoraVideoFrame.h:41
OPTIONAL_ENUM_CLASS Format
Definition NGIAgoraVideoFrame.h:29
int size
Definition NGIAgoraVideoFrame.h:43
uint8_t * data
Definition NGIAgoraVideoFrame.h:42
Definition NGIAgoraVideoFrame.h:64
OPTIONAL_ENUM_CLASS TextureType
Definition NGIAgoraVideoFrame.h:65
int64_t raw_data_size
Definition NGIAgoraVideoFrame.h:85
int texture_id
Definition NGIAgoraVideoFrame.h:77
int64_t fence_object
Definition NGIAgoraVideoFrame.h:78
uint8_t * raw_data
Definition NGIAgoraVideoFrame.h:84
OPTIONAL_ENUM_CLASS EglContextType
Definition NGIAgoraVideoFrame.h:69
void * shared_context
Definition NGIAgoraVideoFrame.h:76
int frame_buffer_id
Definition NGIAgoraVideoFrame.h:79
RawPixelBuffer::Format raw_data_format
Definition NGIAgoraVideoFrame.h:83
int raw_data_stride
Definition NGIAgoraVideoFrame.h:86
EglContextType context_type
Definition NGIAgoraVideoFrame.h:75
TextureType texture_type
Definition NGIAgoraVideoFrame.h:74
float transform_matrix[16]
Definition NGIAgoraVideoFrame.h:80
Definition NGIAgoraVideoFrame.h:93
TextureInfo texture
Definition NGIAgoraVideoFrame.h:104
int width
Definition NGIAgoraVideoFrame.h:108
int rotation
Definition NGIAgoraVideoFrame.h:110
agora::media::base::ColorSpace color_space
Definition NGIAgoraVideoFrame.h:111
RawPixelBuffer pixels
Definition NGIAgoraVideoFrame.h:105
int64_t timestamp_ms
Definition NGIAgoraVideoFrame.h:112
void * cvpixelbuffer
Definition NGIAgoraVideoFrame.h:106
OPTIONAL_ENUM_CLASS Type
Definition NGIAgoraVideoFrame.h:94
int height
Definition NGIAgoraVideoFrame.h:109
Type type
Definition NGIAgoraVideoFrame.h:102
Definition NGIAgoraVideoFrame.h:115
PaddedRawPixelBuffer padded_pixels
Definition NGIAgoraVideoFrame.h:116