Agora Java API Reference for Android
AgoraMediaBase.h
1 //
2 // Agora Engine SDK
3 //
4 // Created by Sting Feng in 2017-11.
5 // Copyright (c) 2017 Agora.io. All rights reserved.
6 
7 #pragma once // NOLINT(build/header_guard)
8 
9 #include <cstring>
10 #include <stdint.h>
11 #include <limits>
12 #include <stddef.h>
13 
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
17 #else
18 #define OPTIONAL_ENUM_SIZE_T enum
19 #endif
20 #endif
21 
22 #if !defined(__APPLE__)
23 #define __deprecated
24 #endif
25 
26 namespace agora {
27 namespace rtc {
28 
29 typedef unsigned int uid_t;
30 typedef unsigned int track_id_t;
31 typedef unsigned int conn_id_t;
32 
33 static const unsigned int DEFAULT_CONNECTION_ID = 0;
34 static const unsigned int DUMMY_CONNECTION_ID = (std::numeric_limits<unsigned int>::max)();
35 
36 
37 struct EncodedVideoFrameInfo;
38 
42 enum AudioRoute {
46  ROUTE_DEFAULT = -1,
50  ROUTE_HEADSET,
54  ROUTE_EARPIECE,
58  ROUTE_HEADSETNOMIC,
62  ROUTE_SPEAKERPHONE,
66  ROUTE_LOUDSPEAKER,
70  ROUTE_HEADSETBLUETOOTH,
74  ROUTE_HDMI,
78  ROUTE_USB
79 };
80 
81 enum NLP_AGGRESSIVENESS {
82  NLP_NOT_SPECIFIED = 0,
83  NLP_MILD = 1,
84  NLP_NORMAL = 2,
85  NLP_AGGRESSIVE = 3,
86  NLP_SUPER_AGGRESSIVE = 4,
87  NLP_EXTREME = 5,
88 };
89 
93 enum BYTES_PER_SAMPLE {
97  TWO_BYTES_PER_SAMPLE = 2,
98 };
99 
101  int sample_rate;
102  size_t channels;
103  size_t frames_per_buffer;
104 
106  : sample_rate(0),
107  channels(0),
108  frames_per_buffer(0) {}
109 };
110 
111 enum RAW_AUDIO_FRAME_OP_MODE_TYPE {
116  RAW_AUDIO_FRAME_OP_MODE_READ_ONLY = 0,
117 
122  RAW_AUDIO_FRAME_OP_MODE_READ_WRITE = 2,
123 };
124 
125 } // namespace rtc
126 
127 namespace media {
131 enum MEDIA_SOURCE_TYPE {
135  AUDIO_PLAYOUT_SOURCE = 0,
139  AUDIO_RECORDING_SOURCE = 1,
143  PRIMARY_CAMERA_SOURCE = 2,
147  SECONDARY_CAMERA_SOURCE = 3,
151  PRIMARY_SCREEN_SOURCE = 4,
155  SECONDARY_SCREEN_SOURCE = 5,
159  CUSTOM_VIDEO_SOURCE = 6,
163  MEDIA_PLAYER_SOURCE = 7,
167  RTC_IMAGE_PNG_SOURCE = 8,
171  RTC_IMAGE_JPEG_SOURCE = 9,
175  RTC_IMAGE_GIF_SOURCE = 10,
179  REMOTE_VIDEO_SOURCE = 11,
183  TRANSCODED_VIDEO_SOURCE = 12,
187  UNKNOWN_MEDIA_SOURCE = 100
188 };
191 #define MAX_CONTENT_INSPECT_MODULE_COUNT 32
192 enum CONTENT_INSPECT_RESULT {
193  CONTENT_INSPECT_NEUTRAL = 1,
194  CONTENT_INSPECT_SEXY = 2,
195  CONTENT_INSPECT_PORN = 3,
196 };
197 enum CONTENT_INSPECT_VENDOR { CONTENT_INSPECT_VENDOR_AGORA = 1, CONTENT_INSPECT_VENDOR_TUPU = 2, CONTENT_INSPECT_VENDOR_HIVE = 3 };
198 enum CONTENT_INSPECT_DEVICE_TYPE{
199  CONTENT_INSPECT_DEVICE_INVALID = 0,
200  CONTENT_INSPECT_DEVICE_AGORA = 1
201 };
202 enum CONTENT_INSPECT_TYPE {
206 CONTENT_INSPECT_INVALID = 0,
210 CONTENT_INSPECT_MODERATION = 1,
214 CONTENT_INSPECT_SUPERVISION = 2
215 };
216 
217 enum CONTENT_INSPECT_WORK_TYPE {
221 CONTENT_INSPECT_WORK_DEVICE = 0,
225 CONTENT_INSPECT_WORK_CLOUD = 1,
229 CONTENT_INSPECT_WORK_DEVICE_CLOUD = 2
230 };
235  CONTENT_INSPECT_TYPE type;
236  CONTENT_INSPECT_VENDOR vendor;
237  const char* callbackUrl;
238  const char* token;
242  unsigned int frequency;
244  type = CONTENT_INSPECT_INVALID;
245  frequency = 0;
246  vendor = CONTENT_INSPECT_VENDOR_AGORA;
247  callbackUrl = NULL;
248  token = NULL;
249  }
250 };
255  CONTENT_INSPECT_WORK_TYPE ContentWorkType;
256 
258  CONTENT_INSPECT_DEVICE_TYPE DeviceworkType;
259  const char* extraInfo;
260 
264  ContentInspectModule modules[MAX_CONTENT_INSPECT_MODULE_COUNT];
268  ContentInspectConfig& operator=(const ContentInspectConfig& rth)
269  {
272  extraInfo = rth.extraInfo;
273  moduleCount = rth.moduleCount;
274  memcpy(&modules, &rth.modules, MAX_CONTENT_INSPECT_MODULE_COUNT * sizeof(ContentInspectModule));
275  return *this;
276  }
277  ContentInspectConfig() :ContentWorkType(CONTENT_INSPECT_WORK_CLOUD),DeviceworkType(CONTENT_INSPECT_DEVICE_INVALID),extraInfo(NULL), moduleCount(0){}
278 };
279 
280 namespace base {
281 
282 typedef void* view_t;
283 
284 typedef const char* user_id_t;
285 
286 static const uint8_t kMaxCodecNameLength = 50;
287 
291 enum MAX_METADATA_SIZE_TYPE {
292  MAX_METADATA_SIZE_IN_BYTE = 1024
293 };
294 
303  uint32_t timestamp;
304  // Audio level indication.
305  uint8_t audioLevelIndication;
306  PacketOptions()
307  : timestamp(0),
308  audioLevelIndication(127) {}
309 };
310 
311 enum AUDIO_PROCESSING_CHANNELS {
312  AUDIO_PROCESSING_MONO = 1,
313  AUDIO_PROCESSING_STEREO = 2,
314 };
315 
317  AUDIO_PROCESSING_CHANNELS audioProcessingChannels;
318  AdvancedAudioOptions(): audioProcessingChannels(AUDIO_PROCESSING_MONO) {}
319 };
320 
329  uint64_t sendTs;
333  uint8_t codec;
335  : sendTs(0),
336  codec(0) {}
337 };
338 
347  // Stereo, 32 kHz, 60 ms (2 * 32 * 60)
354  kMaxDataSizeSamples = 3840,
356  kMaxDataSizeBytes = kMaxDataSizeSamples * sizeof(int16_t),
357  };
358 
373  rtc::BYTES_PER_SAMPLE bytes_per_sample;
375  int16_t data_[kMaxDataSizeSamples];
376 
377  AudioPcmFrame& operator=(const AudioPcmFrame& src) {
378  if(this == &src) {
379  return *this;
380  }
381 
382  this->capture_timestamp = src.capture_timestamp;
383  this->samples_per_channel_ = src.samples_per_channel_;
384  this->sample_rate_hz_ = src.sample_rate_hz_;
385  this->bytes_per_sample = src.bytes_per_sample;
386  this->num_channels_ = src.num_channels_;
387 
388  size_t length = src.samples_per_channel_ * src.num_channels_;
389  if (length > kMaxDataSizeSamples) {
390  length = kMaxDataSizeSamples;
391  }
392 
393  memcpy(this->data_, src.data_, length * sizeof(int16_t));
394 
395  return *this;
396  }
397 
398  AudioPcmFrame()
399  : capture_timestamp(0),
401  sample_rate_hz_(0),
402  num_channels_(0),
403  bytes_per_sample(rtc::TWO_BYTES_PER_SAMPLE) {
404  memset(data_, 0, sizeof(data_));
405  }
406 
407  AudioPcmFrame(const AudioPcmFrame& src)
413  size_t length = src.samples_per_channel_ * src.num_channels_;
414  if (length > kMaxDataSizeSamples) {
415  length = kMaxDataSizeSamples;
416  }
417 
418  memcpy(this->data_, src.data_, length * sizeof(int16_t));
419  }
420 };
421 
424 enum AUDIO_DUAL_MONO_MODE {
426  AUDIO_DUAL_MONO_STEREO = 0,
428  AUDIO_DUAL_MONO_L = 1,
430  AUDIO_DUAL_MONO_R = 2,
432  AUDIO_DUAL_MONO_MIX = 3
433 };
434 
436  public:
445  virtual void onFrame(AudioPcmFrame* frame) = 0;
446  virtual ~IAudioFrameObserver() {}
447 };
448 
452 enum VIDEO_PIXEL_FORMAT {
456  VIDEO_PIXEL_DEFAULT = 0,
460  VIDEO_PIXEL_I420 = 1,
464  VIDEO_PIXEL_BGRA = 2,
468  VIDEO_PIXEL_NV21 = 3,
472  VIDEO_PIXEL_RGBA = 4,
476  VIDEO_PIXEL_NV12 = 8,
480  VIDEO_TEXTURE_2D = 10,
484  VIDEO_TEXTURE_OES = 11,
488  VIDEO_PIXEL_I422 = 16,
489 };
490 
494 enum RENDER_MODE_TYPE {
499  RENDER_MODE_HIDDEN = 1,
505  RENDER_MODE_FIT = 2,
510  RENDER_MODE_ADAPTIVE __deprecated = 3,
511 };
518  format(VIDEO_PIXEL_DEFAULT),
519  buffer(NULL),
520  stride(0),
521  height(0),
522  cropLeft(0),
523  cropTop(0),
524  cropRight(0),
525  cropBottom(0),
526  rotation(0),
527  timestamp(0),
528  eglContext(NULL),
530  textureId(0),
531  metadata_buffer(NULL),
532  metadata_size(0){}
533 
546  };
547 
564  };
565 
573  VIDEO_PIXEL_FORMAT format;
577  void* buffer;
582  int stride;
586  int height;
591  int cropLeft;
596  int cropTop;
611  int rotation;
619  long long timestamp;
625  void *eglContext;
637  float matrix[16];
642  uint8_t* metadata_buffer;
648 };
649 
653 struct VideoFrame {
654  VideoFrame():
655  type(VIDEO_PIXEL_DEFAULT),
656  width(0),
657  height(0),
658  yStride(0),
659  uStride(0),
660  vStride(0),
661  yBuffer(NULL),
662  uBuffer(NULL),
663  vBuffer(NULL),
664  rotation(0),
665  renderTimeMs(0),
666  avsync_type(0),
667  metadata_buffer(NULL),
668  metadata_size(0),
669  sharedContext(0),
670  textureId(0){}
671 
675  VIDEO_PIXEL_FORMAT type;
679  int width;
683  int height;
687  int yStride;
691  int uStride;
695  int vStride;
699  uint8_t* yBuffer;
703  uint8_t* uBuffer;
707  uint8_t* vBuffer;
711  int rotation;
718  int64_t renderTimeMs;
727  uint8_t* metadata_buffer;
744  float matrix[16];
745 };
746 
748  public:
756  virtual void onFrame(const VideoFrame* frame) = 0;
757  virtual ~IVideoFrameObserver() {}
758  virtual bool isExternal() { return true; }
759  virtual VIDEO_PIXEL_FORMAT getVideoFormatPreference() { return VIDEO_PIXEL_DEFAULT; }
760 };
761 
762 enum MEDIA_PLAYER_SOURCE_TYPE {
768  MEDIA_PLAYER_SOURCE_DEFAULT,
774  MEDIA_PLAYER_SOURCE_FULL_FEATURED,
779  MEDIA_PLAYER_SOURCE_SIMPLE,
780 };
781 
782 enum VIDEO_MODULE_POSITION {
783  POSITION_POST_CAPTURER = 1 << 0,
784  POSITION_PRE_RENDERER = 1 << 1,
785  POSITION_PRE_ENCODER = 1 << 2,
786  POSITION_POST_FILTERS = 1 << 3,
787 };
788 
789 } // namespace base
790 
795  public:
804  };
808  struct AudioFrame {
820  agora::rtc::BYTES_PER_SAMPLE bytesPerSample;
824  int channels;
832  void* buffer;
840  int64_t renderTimeMs;
841 
845  int64_t captureTimeMs;
846 
847  int avsync_type;
848 
851  bytesPerSample(rtc::TWO_BYTES_PER_SAMPLE),
852  channels(0),
853  samplesPerSec(0),
854  buffer(NULL),
855  renderTimeMs(0),
856  captureTimeMs(0),
857  avsync_type(0) {}
858  };
859 
860  public:
861  virtual ~IAudioFrameObserverBase() {}
862 
871  virtual bool onRecordAudioFrame(const char* channelId, AudioFrame& audioFrame) = 0;
880  virtual bool onPlaybackAudioFrame(const char* channelId, AudioFrame& audioFrame) = 0;
889  virtual bool onMixedAudioFrame(const char* channelId, AudioFrame& audioFrame) = 0;
897  virtual bool onEarMonitoringAudioFrame(AudioFrame& audioFrame) = 0;
907  virtual bool onPlaybackAudioFrameBeforeMixing(const char* channelId, base::user_id_t userId, AudioFrame& audioFrame) {
908  (void) channelId;
909  (void) userId;
910  (void) audioFrame;
911  return true;
912  }
913 };
914 
919  public:
930  virtual bool onPlaybackAudioFrameBeforeMixing(const char* channelId, rtc::uid_t uid, AudioFrame& audioFrame) = 0;
931 };
932 
937  const float *audioSpectrumData;
942 
944  AudioSpectrumData(const float *data, int length) :
945  audioSpectrumData(data), dataLength(length) {}
946 };
947 
952  agora::rtc::uid_t uid;
957 
959  UserAudioSpectrumInfo(agora::rtc::uid_t _uid, const float *data, int length) :
960  uid(_uid) { spectrumData.audioSpectrumData = data; spectrumData.dataLength = length; }
961 };
962 
967 public:
968  virtual ~IAudioSpectrumObserver() {}
969 
982  virtual bool onLocalAudioSpectrum(const AudioSpectrumData& data) = 0;
983 
1001  virtual bool onRemoteAudioSpectrum(const UserAudioSpectrumInfo * spectrums, unsigned int spectrumNumber) = 0;
1002 };
1003 
1008  public:
1019  virtual bool OnEncodedVideoFrame(rtc::uid_t uid, const uint8_t* imageBuffer, size_t length,
1020  const rtc::EncodedVideoFrameInfo& videoEncodedFrameInfo) = 0;
1021 
1022  virtual ~IVideoEncodedFrameObserver() {}
1023 };
1024 
1029  public:
1031 
1032  enum VIDEO_FRAME_PROCESS_MODE {
1033  PROCESS_MODE_READ_ONLY, // Observer works as a pure renderer and will not modify the original frame.
1034  PROCESS_MODE_READ_WRITE, // Observer works as a filter that will process the video frame and affect the following frame processing in SDK.
1035  };
1036 
1037  public:
1038  virtual ~IVideoFrameObserver() {}
1039 
1058  virtual bool onCaptureVideoFrame(VideoFrame& videoFrame) = 0;
1059 
1077  virtual bool onPreEncodeVideoFrame(VideoFrame& videoFrame) = 0;
1078 
1079  virtual bool onSecondaryCameraCaptureVideoFrame(VideoFrame& videoFrame) = 0;
1080 
1098  virtual bool onSecondaryPreEncodeCameraVideoFrame(VideoFrame& videoFrame) = 0;
1099 
1115  virtual bool onScreenCaptureVideoFrame(VideoFrame& videoFrame) = 0;
1116 
1117  virtual bool onPreEncodeScreenVideoFrame(VideoFrame& videoFrame) = 0;
1134  virtual bool onMediaPlayerVideoFrame(VideoFrame& videoFrame, int mediaPlayerId) = 0;
1135 
1136  virtual bool onSecondaryScreenCaptureVideoFrame(VideoFrame& videoFrame) = 0;
1137 
1138  virtual bool onSecondaryPreEncodeScreenVideoFrame(VideoFrame& videoFrame) = 0;
1139 
1157  virtual bool onRenderVideoFrame(const char* channelId, rtc::uid_t remoteUid, VideoFrame& videoFrame) = 0;
1158 
1159  virtual bool onTranscodedVideoFrame(VideoFrame& videoFrame) = 0;
1160 
1165  virtual VIDEO_FRAME_PROCESS_MODE getVideoFrameProcessMode() {
1166  return PROCESS_MODE_READ_ONLY;
1167  }
1168 
1169  /*
1170  * Occurs each time needs to get preference video frame type.
1171  *
1172  * @return preference video pixel format.
1173  */
1174  virtual base::VIDEO_PIXEL_FORMAT getVideoFormatPreference() { return base::VIDEO_PIXEL_DEFAULT; }
1175 
1183  virtual bool getRotationApplied() { return false; }
1184 
1192  virtual bool getMirrorApplied() { return false; }
1193 
1211  virtual uint32_t getObservedFramePosition() {
1212  return base::POSITION_POST_CAPTURER | base::POSITION_PRE_RENDERER;
1213  }
1214 
1222  virtual bool isExternal() { return true; }
1223 };
1224 
1228 enum EXTERNAL_VIDEO_SOURCE_TYPE {
1232  VIDEO_FRAME = 0,
1236  ENCODED_VIDEO_FRAME,
1237 };
1238 } // namespace media
1239 } // namespace agora
agora::media::base::VideoFrame
Definition: AgoraMediaBase.h:653
agora::media::base::ExternalVideoFrame::cropBottom
int cropBottom
Definition: AgoraMediaBase.h:606
agora::media::base::VideoFrame::metadata_size
int metadata_size
Definition: AgoraMediaBase.h:732
agora::media::AudioSpectrumData::audioSpectrumData
const float * audioSpectrumData
Definition: AgoraMediaBase.h:937
agora::media::IAudioFrameObserverBase::onEarMonitoringAudioFrame
virtual bool onEarMonitoringAudioFrame(AudioFrame &audioFrame)=0
agora::media::base::ExternalVideoFrame::matrix
float matrix[16]
Definition: AgoraMediaBase.h:637
agora::media::IAudioFrameObserverBase
Definition: AgoraMediaBase.h:794
agora::media::ContentInspectConfig::modules
ContentInspectModule modules[MAX_CONTENT_INSPECT_MODULE_COUNT]
Definition: AgoraMediaBase.h:264
agora::media::base::VideoFrame::uStride
int uStride
Definition: AgoraMediaBase.h:691
agora::media::IAudioFrameObserverBase::FRAME_TYPE_PCM16
@ FRAME_TYPE_PCM16
Definition: AgoraMediaBase.h:803
agora::media::base::VideoFrame::height
int height
Definition: AgoraMediaBase.h:683
agora::media::base::AudioPcmFrame::data_
int16_t data_[kMaxDataSizeSamples]
Definition: AgoraMediaBase.h:375
agora::media::IAudioFrameObserverBase::onRecordAudioFrame
virtual bool onRecordAudioFrame(const char *channelId, AudioFrame &audioFrame)=0
agora::media::IAudioSpectrumObserver
Definition: AgoraMediaBase.h:966
agora::rtc::AudioParameters
Definition: AgoraMediaBase.h:100
agora::media::IAudioFrameObserverBase::AudioFrame::renderTimeMs
int64_t renderTimeMs
Definition: AgoraMediaBase.h:840
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_RAW_DATA
@ VIDEO_BUFFER_RAW_DATA
Definition: AgoraMediaBase.h:555
agora::media::base::ExternalVideoFrame::buffer
void * buffer
Definition: AgoraMediaBase.h:577
agora::media::IAudioFrameObserverBase::AudioFrame::channels
int channels
Definition: AgoraMediaBase.h:824
agora::rtc::EncodedVideoFrameInfo
Definition: AgoraBase.h:1870
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_TYPE
VIDEO_BUFFER_TYPE
Definition: AgoraMediaBase.h:551
agora::media::base::IVideoFrameObserver
Definition: AgoraMediaBase.h:747
agora::media::IVideoFrameObserver::getVideoFrameProcessMode
virtual VIDEO_FRAME_PROCESS_MODE getVideoFrameProcessMode()
Definition: AgoraMediaBase.h:1165
agora::media::ContentInspectConfig::DeviceworkType
CONTENT_INSPECT_DEVICE_TYPE DeviceworkType
Definition: AgoraMediaBase.h:258
agora::media::IVideoFrameObserver
Definition: AgoraMediaBase.h:1028
agora::media::IAudioFrameObserverBase::AudioFrame
Definition: AgoraMediaBase.h:808
agora::media::base::AudioEncodedFrameInfo::codec
uint8_t codec
Definition: AgoraMediaBase.h:333
agora::media::IAudioFrameObserver
Definition: AgoraMediaBase.h:918
agora::media::base::VideoFrame::rotation
int rotation
Definition: AgoraMediaBase.h:711
agora::media::base::IVideoFrameObserver::onFrame
virtual void onFrame(const VideoFrame *frame)=0
agora::media::base::AudioPcmFrame::OPTIONAL_ENUM_SIZE_T
OPTIONAL_ENUM_SIZE_T
Definition: AgoraMediaBase.h:346
agora::media::base::ExternalVideoFrame::eglContext
void * eglContext
Definition: AgoraMediaBase.h:625
agora::media::base::ExternalVideoFrame::cropRight
int cropRight
Definition: AgoraMediaBase.h:601
agora::media::base::VideoFrame::textureId
int textureId
Definition: AgoraMediaBase.h:740
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_ARRAY
@ VIDEO_BUFFER_ARRAY
Definition: AgoraMediaBase.h:559
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_TEXTURE
@ VIDEO_BUFFER_TEXTURE
Definition: AgoraMediaBase.h:563
agora::media::base::VideoFrame::avsync_type
int avsync_type
Definition: AgoraMediaBase.h:722
agora::media::base::VideoFrame::matrix
float matrix[16]
Definition: AgoraMediaBase.h:744
agora::media::base::ExternalVideoFrame::cropLeft
int cropLeft
Definition: AgoraMediaBase.h:591
agora::media::IAudioFrameObserverBase::AudioFrame::samplesPerSec
int samplesPerSec
Definition: AgoraMediaBase.h:828
agora::media::ContentInspectModule
Definition: AgoraMediaBase.h:231
agora::media::IAudioFrameObserverBase::AudioFrame::buffer
void * buffer
Definition: AgoraMediaBase.h:832
agora::media::IAudioFrameObserverBase::onPlaybackAudioFrameBeforeMixing
virtual bool onPlaybackAudioFrameBeforeMixing(const char *channelId, base::user_id_t userId, AudioFrame &audioFrame)
Definition: AgoraMediaBase.h:907
agora::media::IAudioSpectrumObserver::onRemoteAudioSpectrum
virtual bool onRemoteAudioSpectrum(const UserAudioSpectrumInfo *spectrums, unsigned int spectrumNumber)=0
agora::media::base::ExternalVideoFrame
Definition: AgoraMediaBase.h:515
agora::media::ContentInspectModule::frequency
unsigned int frequency
Definition: AgoraMediaBase.h:242
agora::media::base::AudioEncodedFrameInfo::sendTs
uint64_t sendTs
Definition: AgoraMediaBase.h:329
agora::media::IVideoEncodedFrameObserver::OnEncodedVideoFrame
virtual bool OnEncodedVideoFrame(rtc::uid_t uid, const uint8_t *imageBuffer, size_t length, const rtc::EncodedVideoFrameInfo &videoEncodedFrameInfo)=0
agora::media::ContentInspectConfig::moduleCount
int moduleCount
Definition: AgoraMediaBase.h:267
agora::media::base::AudioPcmFrame::capture_timestamp
uint32_t capture_timestamp
Definition: AgoraMediaBase.h:361
agora::media::base::VideoFrame::type
VIDEO_PIXEL_FORMAT type
Definition: AgoraMediaBase.h:675
agora::media::base::ExternalVideoFrame::timestamp
long long timestamp
Definition: AgoraMediaBase.h:619
agora::media::IVideoFrameObserver::onScreenCaptureVideoFrame
virtual bool onScreenCaptureVideoFrame(VideoFrame &videoFrame)=0
agora::media::base::AudioPcmFrame::sample_rate_hz_
int sample_rate_hz_
Definition: AgoraMediaBase.h:367
agora::media::base::ExternalVideoFrame::height
int height
Definition: AgoraMediaBase.h:586
agora::media::base::VideoFrame::sharedContext
void * sharedContext
Definition: AgoraMediaBase.h:736
agora::media::base::ExternalVideoFrame::rotation
int rotation
Definition: AgoraMediaBase.h:611
agora::media::UserAudioSpectrumInfo::spectrumData
struct AudioSpectrumData spectrumData
Definition: AgoraMediaBase.h:956
agora::media::base::PacketOptions
Definition: AgoraMediaBase.h:299
agora::media::base::PacketOptions::timestamp
uint32_t timestamp
Definition: AgoraMediaBase.h:303
agora::media::base::IAudioFrameObserver::onFrame
virtual void onFrame(AudioPcmFrame *frame)=0
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_TYPE
AUDIO_FRAME_TYPE
Definition: AgoraMediaBase.h:799
agora::media::base::VideoFrame::yBuffer
uint8_t * yBuffer
Definition: AgoraMediaBase.h:699
agora::media::base::AudioPcmFrame::bytes_per_sample
rtc::BYTES_PER_SAMPLE bytes_per_sample
Definition: AgoraMediaBase.h:373
agora::media::UserAudioSpectrumInfo
Definition: AgoraMediaBase.h:948
agora::media::IVideoFrameObserver::onRenderVideoFrame
virtual bool onRenderVideoFrame(const char *channelId, rtc::uid_t remoteUid, VideoFrame &videoFrame)=0
agora::media::IVideoFrameObserver::isExternal
virtual bool isExternal()
Definition: AgoraMediaBase.h:1222
agora::media::IVideoFrameObserver::onPreEncodeVideoFrame
virtual bool onPreEncodeVideoFrame(VideoFrame &videoFrame)=0
agora::media::IVideoFrameObserver::getObservedFramePosition
virtual uint32_t getObservedFramePosition()
Definition: AgoraMediaBase.h:1211
agora::media::base::VideoFrame::yStride
int yStride
Definition: AgoraMediaBase.h:687
agora::media::base::ExternalVideoFrame::metadata_buffer
uint8_t * metadata_buffer
Definition: AgoraMediaBase.h:642
agora::media::ContentInspectModule::type
CONTENT_INSPECT_TYPE type
Definition: AgoraMediaBase.h:235
agora::media::base::ExternalVideoFrame::EGL_CONTEXT14
@ EGL_CONTEXT14
Definition: AgoraMediaBase.h:545
agora::media::base::ExternalVideoFrame::cropTop
int cropTop
Definition: AgoraMediaBase.h:596
agora::media::base::ExternalVideoFrame::type
VIDEO_BUFFER_TYPE type
Definition: AgoraMediaBase.h:569
agora::media::IVideoFrameObserver::getRotationApplied
virtual bool getRotationApplied()
Definition: AgoraMediaBase.h:1183
agora::media::base::VideoFrame::vBuffer
uint8_t * vBuffer
Definition: AgoraMediaBase.h:707
agora::media::AudioSpectrumData::dataLength
int dataLength
Definition: AgoraMediaBase.h:941
agora::media::base::ExternalVideoFrame::EGL_CONTEXT_TYPE
EGL_CONTEXT_TYPE
Definition: AgoraMediaBase.h:537
agora::media::IAudioFrameObserverBase::onMixedAudioFrame
virtual bool onMixedAudioFrame(const char *channelId, AudioFrame &audioFrame)=0
agora::media::base::AudioPcmFrame::num_channels_
size_t num_channels_
Definition: AgoraMediaBase.h:370
agora::media::base::VideoFrame::metadata_buffer
uint8_t * metadata_buffer
Definition: AgoraMediaBase.h:727
agora::media::IAudioFrameObserverBase::AudioFrame::captureTimeMs
int64_t captureTimeMs
Definition: AgoraMediaBase.h:845
agora::media::base::IAudioFrameObserver
Definition: AgoraMediaBase.h:435
agora::media::AudioSpectrumData
Definition: AgoraMediaBase.h:933
agora::media::base::VideoFrame::width
int width
Definition: AgoraMediaBase.h:679
agora::media::base::VideoFrame::renderTimeMs
int64_t renderTimeMs
Definition: AgoraMediaBase.h:718
agora::media::base::ExternalVideoFrame::metadata_size
int metadata_size
Definition: AgoraMediaBase.h:647
agora::media::base::AudioPcmFrame::samples_per_channel_
size_t samples_per_channel_
Definition: AgoraMediaBase.h:364
agora::media::IAudioFrameObserver::onPlaybackAudioFrameBeforeMixing
virtual bool onPlaybackAudioFrameBeforeMixing(const char *channelId, rtc::uid_t uid, AudioFrame &audioFrame)=0
agora::media::IVideoFrameObserver::onMediaPlayerVideoFrame
virtual bool onMediaPlayerVideoFrame(VideoFrame &videoFrame, int mediaPlayerId)=0
agora::media::IAudioFrameObserverBase::AudioFrame::bytesPerSample
agora::rtc::BYTES_PER_SAMPLE bytesPerSample
Definition: AgoraMediaBase.h:820
agora::media::base::ExternalVideoFrame::textureId
int textureId
Definition: AgoraMediaBase.h:633
agora::media::IAudioFrameObserverBase::AudioFrame::type
AUDIO_FRAME_TYPE type
Definition: AgoraMediaBase.h:812
agora::media::IVideoEncodedFrameObserver
Definition: AgoraMediaBase.h:1007
agora::media::IAudioFrameObserverBase::AudioFrame::samplesPerChannel
int samplesPerChannel
Definition: AgoraMediaBase.h:816
agora::media::IVideoFrameObserver::getMirrorApplied
virtual bool getMirrorApplied()
Definition: AgoraMediaBase.h:1192
agora::media::IAudioSpectrumObserver::onLocalAudioSpectrum
virtual bool onLocalAudioSpectrum(const AudioSpectrumData &data)=0
agora::media::base::AudioEncodedFrameInfo
Definition: AgoraMediaBase.h:325
agora::media::base::VideoFrame::vStride
int vStride
Definition: AgoraMediaBase.h:695
agora::media::ContentInspectConfig
Definition: AgoraMediaBase.h:253
agora::media::base::AudioPcmFrame
Definition: AgoraMediaBase.h:342
agora::media::IVideoFrameObserver::onCaptureVideoFrame
virtual bool onCaptureVideoFrame(VideoFrame &videoFrame)=0
agora::media::ContentInspectConfig::ContentWorkType
CONTENT_INSPECT_WORK_TYPE ContentWorkType
Definition: AgoraMediaBase.h:255
agora::media::base::VideoFrame::uBuffer
uint8_t * uBuffer
Definition: AgoraMediaBase.h:703
agora::media::IAudioFrameObserverBase::onPlaybackAudioFrame
virtual bool onPlaybackAudioFrame(const char *channelId, AudioFrame &audioFrame)=0
agora::media::base::ExternalVideoFrame::EGL_CONTEXT10
@ EGL_CONTEXT10
Definition: AgoraMediaBase.h:541
agora::media::UserAudioSpectrumInfo::uid
agora::rtc::uid_t uid
Definition: AgoraMediaBase.h:952
agora::media::base::ExternalVideoFrame::format
VIDEO_PIXEL_FORMAT format
Definition: AgoraMediaBase.h:573
agora::media::base::ExternalVideoFrame::stride
int stride
Definition: AgoraMediaBase.h:582
agora::media::base::AdvancedAudioOptions
Definition: AgoraMediaBase.h:316
agora::media::IVideoFrameObserver::onSecondaryPreEncodeCameraVideoFrame
virtual bool onSecondaryPreEncodeCameraVideoFrame(VideoFrame &videoFrame)=0
agora::media::base::ExternalVideoFrame::eglType
EGL_CONTEXT_TYPE eglType
Definition: AgoraMediaBase.h:629