14#ifndef OPTIONAL_ENUM_SIZE_T
15#if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)
16#define OPTIONAL_ENUM_SIZE_T enum : size_t
18#define OPTIONAL_ENUM_SIZE_T enum
190enum MEDIA_SOURCE_TYPE {
194 AUDIO_PLAYOUT_SOURCE = 0,
198 AUDIO_RECORDING_SOURCE = 1,
202 PRIMARY_CAMERA_SOURCE = 2,
206 SECONDARY_CAMERA_SOURCE = 3,
210 PRIMARY_SCREEN_SOURCE = 4,
214 SECONDARY_SCREEN_SOURCE = 5,
218 CUSTOM_VIDEO_SOURCE = 6,
222 MEDIA_PLAYER_SOURCE = 7,
226 RTC_IMAGE_PNG_SOURCE = 8,
230 RTC_IMAGE_JPEG_SOURCE = 9,
234 RTC_IMAGE_GIF_SOURCE = 10,
238 REMOTE_VIDEO_SOURCE = 11,
242 TRANSCODED_VIDEO_SOURCE = 12,
246 UNKNOWN_MEDIA_SOURCE = 100
252typedef const char* user_id_t;
254static const uint8_t kMaxCodecNameLength = 50;
261enum MAX_METADATA_SIZE_TYPE {
262 MAX_METADATA_SIZE_IN_BYTE = 1024
269struct PacketOptions {
275 uint8_t audioLevelIndication;
278 audioLevelIndication(127) {}
297 kMaxDataSizeSamples = 3840,
299 kMaxDataSizeBytes = kMaxDataSizeSamples *
sizeof(int16_t),
318 int16_t data_[kMaxDataSizeSamples];
332 if (length > kMaxDataSizeSamples) {
333 length = kMaxDataSizeSamples;
336 memcpy(this->data_, src.
data_, length *
sizeof(int16_t));
342 : capture_timestamp(0),
343 samples_per_channel_(0),
346 bytes_per_sample(rtc::TWO_BYTES_PER_SAMPLE) {
347 memset(data_, 0,
sizeof(data_));
351 : capture_timestamp(src.capture_timestamp),
352 samples_per_channel_(src.samples_per_channel_),
353 sample_rate_hz_(src.sample_rate_hz_),
354 num_channels_(src.num_channels_),
355 bytes_per_sample(src.bytes_per_sample) {
357 if (length > kMaxDataSizeSamples) {
358 length = kMaxDataSizeSamples;
361 memcpy(this->data_, src.
data_, length *
sizeof(int16_t));
368enum AUDIO_DUAL_MONO_MODE {
370 AUDIO_DUAL_MONO_STEREO = 0,
372 AUDIO_DUAL_MONO_L = 1,
374 AUDIO_DUAL_MONO_R = 2,
376 AUDIO_DUAL_MONO_MIX = 3
391 virtual void onFrame(AudioPcmFrame* frame) = 0;
442enum RENDER_MODE_TYPE {
447 RENDER_MODE_HIDDEN = 1,
458 RENDER_MODE_ADAPTIVE = 3,
467 : type(VIDEO_BUFFER_RAW_DATA),
479 eglType(EGL_CONTEXT10),
481 metadata_buffer(NULL),
489 enum EGL_CONTEXT_TYPE {
507 VIDEO_BUFFER_RAW_DATA = 1,
511 VIDEO_BUFFER_ARRAY = 2,
515 VIDEO_BUFFER_TEXTURE = 3,
579 EGL_CONTEXT_TYPE eglType;
592 uint8_t* metadata_buffer;
631 metadata_buffer(NULL),
693 uint8_t* metadata_buffer;
716 uint8_t* alphaBuffer;
730 virtual void onFrame(
const VideoFrame* frame) = 0;
732 virtual bool isExternal() {
return true; }
736enum MEDIA_PLAYER_SOURCE_TYPE {
742 MEDIA_PLAYER_SOURCE_DEFAULT,
748 MEDIA_PLAYER_SOURCE_FULL_FEATURED,
753 MEDIA_PLAYER_SOURCE_SIMPLE,
778 FRAME_TYPE_PCM16 = 0,
819 samplesPerChannel(0),
820 bytesPerSample(rtc::TWO_BYTES_PER_SAMPLE),
909 const rtc::EncodedVideoFrameInfo& videoEncodedFrameInfo) = 0;
948 virtual bool onCaptureVideoFrame(VideoFrame& videoFrame) = 0;
971 virtual bool onSecondaryCameraCaptureVideoFrame(
VideoFrame& videoFrame) = 0;
990 virtual bool onSecondaryPreEncodeCameraVideoFrame(
VideoFrame& videoFrame) = 0;
1008 virtual bool onScreenCaptureVideoFrame(
VideoFrame& videoFrame) = 0;
1010 virtual bool onPreEncodeScreenVideoFrame(
VideoFrame& videoFrame) = 0;
1028 virtual bool onMediaPlayerVideoFrame(
VideoFrame& videoFrame,
int mediaPlayerId) = 0;
1030 virtual bool onSecondaryScreenCaptureVideoFrame(
VideoFrame& videoFrame) = 0;
1032 virtual bool onSecondaryPreEncodeScreenVideoFrame(
VideoFrame& videoFrame) = 0;
1050 virtual bool onRenderVideoFrame(
const char* channelId, rtc::uid_t remoteUid,
VideoFrame& videoFrame) = 0;
1052 virtual bool onTranscodedVideoFrame(
VideoFrame& videoFrame) = 0;
1059 return PROCESS_MODE_READ_ONLY;
1067 virtual base::VIDEO_PIXEL_FORMAT getVideoPixelFormatPreference() {
return base::VIDEO_PIXEL_I420; }
1076 virtual bool getRotationApplied() {
return false; }
1106 virtual uint32_t getObservedFramePosition() {
1107 return base::POSITION_POST_CAPTURER | base::POSITION_PRE_RENDERER;
1117 virtual bool isExternal() {
return true; }
1124#define MAX_CONTENT_INSPECT_MODULE_COUNT 32
1125enum CONTENT_INSPECT_RESULT {
1126 CONTENT_INSPECT_NEUTRAL = 1,
1127 CONTENT_INSPECT_SEXY = 2,
1128 CONTENT_INSPECT_PORN = 3,
1130enum CONTENT_INSPECT_DEVICE_TYPE{
1131 CONTENT_INSPECT_DEVICE_INVALID = 0,
1132 CONTENT_INSPECT_DEVICE_AGORA = 1,
1133 CONTENT_INSPECT_DEVICE_HIVE = 2,
1134 CONTENT_INSPECT_DEVICE_TUPU = 3
1136enum CONTENT_INSPECT_TYPE {
1140CONTENT_INSPECT_INVALIDE = 0,
1144CONTENT_INSPECT_MODERATION = 1,
1148CONTENT_INSPECT_SUPERVISE = 2
1150struct ContentInspectModule {
1154 CONTENT_INSPECT_TYPE type;
1158 unsigned int frequency;
1163enum EXTERNAL_VIDEO_SOURCE_TYPE {
1171 ENCODED_VIDEO_FRAME,
Definition AgoraMediaBase.h:769
virtual bool onPlaybackAudioFrameBeforeMixing(const char *channelId, base::user_id_t userId, AudioFrame &audioFrame)
Definition AgoraMediaBase.h:867
virtual ~IAudioFrameObserverBase()
Definition AgoraMediaBase.h:829
virtual bool onRecordAudioFrame(const char *channelId, AudioFrame &audioFrame)=0
virtual bool onMixedAudioFrame(const char *channelId, AudioFrame &audioFrame)=0
AUDIO_FRAME_TYPE
Definition AgoraMediaBase.h:774
virtual bool onPlaybackAudioFrame(const char *channelId, AudioFrame &audioFrame)=0
Definition AgoraMediaBase.h:878
virtual bool onPlaybackAudioFrameBeforeMixing(const char *channelId, rtc::uid_t uid, AudioFrame &audioFrame)=0
Definition AgoraMediaBase.h:896
virtual bool OnEncodedVideoFrame(rtc::uid_t uid, const uint8_t *imageBuffer, size_t length, const rtc::EncodedVideoFrameInfo &videoEncodedFrameInfo)=0
virtual ~IVideoEncodedFrameObserver()
Definition AgoraMediaBase.h:911
Definition AgoraMediaBase.h:917
media::base::VideoFrame VideoFrame
Definition AgoraMediaBase.h:919
VIDEO_FRAME_PROCESS_MODE
Definition AgoraMediaBase.h:921
@ PROCESS_MODE_READ_WRITE
Definition AgoraMediaBase.h:923
@ PROCESS_MODE_READ_ONLY
Definition AgoraMediaBase.h:922
virtual bool onPreEncodeVideoFrame(VideoFrame &videoFrame)=0
virtual bool getMirrorApplied()
Definition AgoraMediaBase.h:1086
virtual ~IVideoFrameObserver()
Definition AgoraMediaBase.h:927
unsigned int track_id_t
Definition AgoraMediaBase.h:26
BYTES_PER_SAMPLE
Definition AgoraMediaBase.h:38
@ TWO_BYTES_PER_SAMPLE
Definition AgoraMediaBase.h:42
unsigned int uid_t
Definition AgoraMediaBase.h:25
unsigned int conn_id_t
Definition AgoraMediaBase.h:27
static const unsigned int DUMMY_CONNECTION_ID
Definition AgoraMediaBase.h:30
VIDEO_SOURCE_TYPE
Definition AgoraMediaBase.h:71
@ VIDEO_SOURCE_CAMERA_PRIMARY
Definition AgoraMediaBase.h:74
@ VIDEO_SOURCE_RTC_IMAGE_JPEG
Definition AgoraMediaBase.h:97
@ VIDEO_SOURCE_CUSTOM
Definition AgoraMediaBase.h:88
@ VIDEO_SOURCE_RTC_IMAGE_GIF
Definition AgoraMediaBase.h:100
@ VIDEO_SOURCE_CAMERA_THIRD
Definition AgoraMediaBase.h:110
@ VIDEO_SOURCE_SCREEN_THIRD
Definition AgoraMediaBase.h:116
@ VIDEO_SOURCE_CAMERA
Definition AgoraMediaBase.h:75
@ VIDEO_SOURCE_SCREEN_PRIMARY
Definition AgoraMediaBase.h:81
@ VIDEO_SOURCE_REMOTE
Definition AgoraMediaBase.h:103
@ VIDEO_SOURCE_SCREEN_FOURTH
Definition AgoraMediaBase.h:119
@ VIDEO_SOURCE_CAMERA_FOURTH
Definition AgoraMediaBase.h:113
@ VIDEO_SOURCE_SPEECH_DRIVEN
Definition AgoraMediaBase.h:122
@ VIDEO_SOURCE_CAMERA_SECONDARY
Definition AgoraMediaBase.h:78
@ VIDEO_SOURCE_SCREEN_SECONDARY
Definition AgoraMediaBase.h:85
@ VIDEO_SOURCE_UNKNOWN
Definition AgoraMediaBase.h:124
@ VIDEO_SOURCE_MEDIA_PLAYER
Definition AgoraMediaBase.h:91
@ VIDEO_SOURCE_SCREEN
Definition AgoraMediaBase.h:82
@ VIDEO_SOURCE_TRANSCODED
Definition AgoraMediaBase.h:106
@ VIDEO_SOURCE_RTC_IMAGE_PNG
Definition AgoraMediaBase.h:94
RAW_AUDIO_FRAME_OP_MODE_TYPE
Definition AgoraMediaBase.h:56
@ RAW_AUDIO_FRAME_OP_MODE_READ_WRITE
Definition AgoraMediaBase.h:67
@ RAW_AUDIO_FRAME_OP_MODE_READ_ONLY
Definition AgoraMediaBase.h:61
static const unsigned int DEFAULT_CONNECTION_ID
Definition AgoraMediaBase.h:29
Definition AgoraBase.h:86
VIDEO_PIXEL_FORMAT
Definition AgoraMediaBase.h:399
@ VIDEO_PIXEL_BGRA
Definition AgoraMediaBase.h:411
@ VIDEO_PIXEL_UNKNOWN
Definition AgoraMediaBase.h:403
@ VIDEO_PIXEL_NV21
Definition AgoraMediaBase.h:415
@ VIDEO_PIXEL_I420
Definition AgoraMediaBase.h:407
@ VIDEO_TEXTURE_2D
Definition AgoraMediaBase.h:427
@ VIDEO_TEXTURE_OES
Definition AgoraMediaBase.h:431
@ VIDEO_PIXEL_RGBA
Definition AgoraMediaBase.h:419
@ VIDEO_PIXEL_NV12
Definition AgoraMediaBase.h:423
@ VIDEO_PIXEL_I422
Definition AgoraMediaBase.h:435
VIDEO_MODULE_POSITION
Definition AgoraMediaBase.h:757
@ POSITION_PRE_ENCODER
Definition AgoraMediaBase.h:760
@ POSITION_POST_CAPTURER
Definition AgoraMediaBase.h:758
@ POSITION_PRE_RENDERER
Definition AgoraMediaBase.h:759
@ POSITION_POST_FILTERS
Definition AgoraMediaBase.h:761
Definition AgoraMediaBase.h:783
agora::rtc::BYTES_PER_SAMPLE bytesPerSample
Definition AgoraMediaBase.h:795
int samplesPerChannel
Definition AgoraMediaBase.h:791
void * buffer
Definition AgoraMediaBase.h:807
AUDIO_FRAME_TYPE type
Definition AgoraMediaBase.h:787
int samplesPerSec
Definition AgoraMediaBase.h:803
int avsync_type
Definition AgoraMediaBase.h:816
int64_t renderTimeMs
Definition AgoraMediaBase.h:815
int channels
Definition AgoraMediaBase.h:799
AudioFrame()
Definition AgoraMediaBase.h:818
Definition AgoraMediaBase.h:285
AudioPcmFrame()
Definition AgoraMediaBase.h:341
uint32_t capture_timestamp
Definition AgoraMediaBase.h:304
size_t num_channels_
Definition AgoraMediaBase.h:313
int16_t data_[kMaxDataSizeSamples]
Definition AgoraMediaBase.h:318
int sample_rate_hz_
Definition AgoraMediaBase.h:310
AudioPcmFrame & operator=(const AudioPcmFrame &src)
Definition AgoraMediaBase.h:320
AudioPcmFrame(const AudioPcmFrame &src)
Definition AgoraMediaBase.h:350
rtc::BYTES_PER_SAMPLE bytes_per_sample
Definition AgoraMediaBase.h:316
size_t samples_per_channel_
Definition AgoraMediaBase.h:307
Definition AgoraMediaBase.h:465
void * buffer
Definition AgoraMediaBase.h:529
VIDEO_BUFFER_TYPE
Definition AgoraMediaBase.h:503
uint8_t * alphaBuffer
Definition AgoraMediaBase.h:611
ExternalVideoFrame()
Definition AgoraMediaBase.h:466
int rotation
Definition AgoraMediaBase.h:563
int cropLeft
Definition AgoraMediaBase.h:543
int cropBottom
Definition AgoraMediaBase.h:558
int height
Definition AgoraMediaBase.h:538
int stride
Definition AgoraMediaBase.h:534
int cropRight
Definition AgoraMediaBase.h:553
long long timestamp
Definition AgoraMediaBase.h:568
VIDEO_BUFFER_TYPE type
Definition AgoraMediaBase.h:521
VIDEO_PIXEL_FORMAT format
Definition AgoraMediaBase.h:525
int cropTop
Definition AgoraMediaBase.h:548
Definition AgoraMediaBase.h:617
int uStride
Definition AgoraMediaBase.h:656
VIDEO_PIXEL_FORMAT type
Definition AgoraMediaBase.h:640
uint8_t * yBuffer
Definition AgoraMediaBase.h:664
int width
Definition AgoraMediaBase.h:644
int yStride
Definition AgoraMediaBase.h:652
uint8_t * uBuffer
Definition AgoraMediaBase.h:668
int rotation
Definition AgoraMediaBase.h:676
int64_t renderTimeMs
Definition AgoraMediaBase.h:683
int vStride
Definition AgoraMediaBase.h:660
uint8_t * vBuffer
Definition AgoraMediaBase.h:672
VideoFrame()
Definition AgoraMediaBase.h:618
int avsync_type
Definition AgoraMediaBase.h:687
int height
Definition AgoraMediaBase.h:648
Definition AgoraMediaBase.h:45
size_t channels
Definition AgoraMediaBase.h:47
int sample_rate
Definition AgoraMediaBase.h:46
AudioParameters()
Definition AgoraMediaBase.h:50
size_t frames_per_buffer
Definition AgoraMediaBase.h:48
Definition AgoraBase.h:1880