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 };
189 namespace base {
190 
191 typedef void* view_t;
192 
193 typedef const char* user_id_t;
194 
195 static const uint8_t kMaxCodecNameLength = 50;
196 
200 enum MAX_METADATA_SIZE_TYPE {
201  MAX_METADATA_SIZE_IN_BYTE = 1024
202 };
203 
212  uint32_t timestamp;
213  // Audio level indication.
214  uint8_t audioLevelIndication;
215  PacketOptions()
216  : timestamp(0),
217  audioLevelIndication(127) {}
218 };
219 
220 enum AUDIO_PROCESSING_CHANNELS {
221  AUDIO_PROCESSING_MONO = 1,
222  AUDIO_PROCESSING_STEREO = 2,
223 };
224 
226  AUDIO_PROCESSING_CHANNELS audioProcessingChannels;
227  AdvancedAudioOptions(): audioProcessingChannels(AUDIO_PROCESSING_MONO) {}
228 };
229 
238  uint64_t sendTs;
242  uint8_t codec;
244  : sendTs(0),
245  codec(0) {}
246 };
247 
256  // Stereo, 32 kHz, 60 ms (2 * 32 * 60)
263  kMaxDataSizeSamples = 3840,
265  kMaxDataSizeBytes = kMaxDataSizeSamples * sizeof(int16_t),
266  };
267 
282  rtc::BYTES_PER_SAMPLE bytes_per_sample;
284  int16_t data_[kMaxDataSizeSamples];
285 
286  AudioPcmFrame& operator=(const AudioPcmFrame& src) {
287  if(this == &src) {
288  return *this;
289  }
290 
291  this->capture_timestamp = src.capture_timestamp;
292  this->samples_per_channel_ = src.samples_per_channel_;
293  this->sample_rate_hz_ = src.sample_rate_hz_;
294  this->bytes_per_sample = src.bytes_per_sample;
295  this->num_channels_ = src.num_channels_;
296 
297  size_t length = src.samples_per_channel_ * src.num_channels_;
298  if (length > kMaxDataSizeSamples) {
299  length = kMaxDataSizeSamples;
300  }
301 
302  memcpy(this->data_, src.data_, length * sizeof(int16_t));
303 
304  return *this;
305  }
306 
307  AudioPcmFrame()
308  : capture_timestamp(0),
310  sample_rate_hz_(0),
311  num_channels_(0),
312  bytes_per_sample(rtc::TWO_BYTES_PER_SAMPLE) {
313  memset(data_, 0, sizeof(data_));
314  }
315 
316  AudioPcmFrame(const AudioPcmFrame& src)
322  size_t length = src.samples_per_channel_ * src.num_channels_;
323  if (length > kMaxDataSizeSamples) {
324  length = kMaxDataSizeSamples;
325  }
326 
327  memcpy(this->data_, src.data_, length * sizeof(int16_t));
328  }
329 };
330 
333 enum AUDIO_DUAL_MONO_MODE {
335  AUDIO_DUAL_MONO_STEREO = 0,
337  AUDIO_DUAL_MONO_L = 1,
339  AUDIO_DUAL_MONO_R = 2,
341  AUDIO_DUAL_MONO_MIX = 3
342 };
343 
345  public:
354  virtual void onFrame(AudioPcmFrame* frame) = 0;
355  virtual ~IAudioFrameObserver() {}
356 };
357 
361 enum VIDEO_PIXEL_FORMAT {
365  VIDEO_PIXEL_UNKNOWN = 0,
369  VIDEO_PIXEL_I420 = 1,
373  VIDEO_PIXEL_BGRA = 2,
377  VIDEO_PIXEL_NV21 = 3,
381  VIDEO_PIXEL_RGBA = 4,
385  VIDEO_PIXEL_NV12 = 8,
389  VIDEO_TEXTURE_2D = 10,
393  VIDEO_TEXTURE_OES = 11,
397  VIDEO_PIXEL_I422 = 16,
398 };
399 
403 enum RENDER_MODE_TYPE {
408  RENDER_MODE_HIDDEN = 1,
414  RENDER_MODE_FIT = 2,
419  RENDER_MODE_ADAPTIVE __deprecated = 3,
420 };
421 
428  format(VIDEO_PIXEL_UNKNOWN),
429  buffer(NULL),
430  stride(0),
431  height(0),
432  cropLeft(0),
433  cropTop(0),
434  cropRight(0),
435  cropBottom(0),
436  rotation(0),
437  timestamp(0),
438  eglContext(NULL),
440  textureId(0),
441  metadata_buffer(NULL),
442  metadata_size(0){}
443 
456  };
457 
474  };
475 
483  VIDEO_PIXEL_FORMAT format;
487  void* buffer;
492  int stride;
496  int height;
501  int cropLeft;
506  int cropTop;
521  int rotation;
526  long long timestamp;
532  void *eglContext;
544  float matrix[16];
549  uint8_t* metadata_buffer;
555 };
556 
560 struct VideoFrame {
561  VideoFrame():
562  type(VIDEO_PIXEL_UNKNOWN),
563  width(0),
564  height(0),
565  yStride(0),
566  uStride(0),
567  vStride(0),
568  yBuffer(NULL),
569  uBuffer(NULL),
570  vBuffer(NULL),
571  rotation(0),
572  renderTimeMs(0),
573  avsync_type(0),
574  metadata_buffer(NULL),
575  metadata_size(0),
576  sharedContext(0),
577  textureId(0){}
578 
582  VIDEO_PIXEL_FORMAT type;
586  int width;
590  int height;
594  int yStride;
598  int uStride;
602  int vStride;
606  uint8_t* yBuffer;
610  uint8_t* uBuffer;
614  uint8_t* vBuffer;
618  int rotation;
625  int64_t renderTimeMs;
634  uint8_t* metadata_buffer;
651  float matrix[16];
652 };
653 
655  public:
663  virtual void onFrame(const VideoFrame* frame) = 0;
664  virtual ~IVideoFrameObserver() {}
665  virtual bool isExternal() { return true; }
666 };
667 
668 enum MEDIA_PLAYER_SOURCE_TYPE {
674  MEDIA_PLAYER_SOURCE_DEFAULT,
680  MEDIA_PLAYER_SOURCE_FULL_FEATURED,
685  MEDIA_PLAYER_SOURCE_SIMPLE,
686 };
687 
688 enum VIDEO_MODULE_POSITION {
689  POSITION_POST_CAPTURER = 1 << 0,
690  POSITION_PRE_RENDERER = 1 << 1,
691  POSITION_PRE_ENCODER = 1 << 2,
692  POSITION_POST_FILTERS = 1 << 3,
693 };
694 
695 } // namespace base
696 
701  public:
710  };
714  struct AudioFrame {
726  agora::rtc::BYTES_PER_SAMPLE bytesPerSample;
730  int channels;
738  void* buffer;
746  int64_t renderTimeMs;
747  int avsync_type;
748 
751  bytesPerSample(rtc::TWO_BYTES_PER_SAMPLE),
752  channels(0),
753  samplesPerSec(0),
754  buffer(NULL),
755  renderTimeMs(0),
756  avsync_type(0) {}
757  };
758 
759  public:
760  virtual ~IAudioFrameObserverBase() {}
761 
770  virtual bool onRecordAudioFrame(const char* channelId, AudioFrame& audioFrame) = 0;
779  virtual bool onPlaybackAudioFrame(const char* channelId, AudioFrame& audioFrame) = 0;
788  virtual bool onMixedAudioFrame(const char* channelId, AudioFrame& audioFrame) = 0;
798  virtual bool onPlaybackAudioFrameBeforeMixing(const char* channelId, base::user_id_t userId, AudioFrame& audioFrame) {
799  (void) channelId;
800  (void) userId;
801  (void) audioFrame;
802  return true;
803  }
804 };
805 
810  public:
821  virtual bool onPlaybackAudioFrameBeforeMixing(const char* channelId, rtc::uid_t uid, AudioFrame& audioFrame) = 0;
822 };
823 
828  const float *audioSpectrumData;
833 
835  AudioSpectrumData(const float *data, int length) :
836  audioSpectrumData(data), dataLength(length) {}
837 };
838 
843  agora::rtc::uid_t uid;
848 
850  UserAudioSpectrumInfo(agora::rtc::uid_t _uid, const float *data, int length) :
851  uid(_uid) { spectrumData.audioSpectrumData = data; spectrumData.dataLength = length; }
852 };
853 
858 public:
859  virtual ~IAudioSpectrumObserver() {}
860 
873  virtual bool onLocalAudioSpectrum(const AudioSpectrumData& data) = 0;
874 
892  virtual bool onRemoteAudioSpectrum(const UserAudioSpectrumInfo * spectrums, unsigned int spectrumNumber) = 0;
893 };
894 
899  public:
910  virtual bool OnEncodedVideoFrame(rtc::uid_t uid, const uint8_t* imageBuffer, size_t length,
911  const rtc::EncodedVideoFrameInfo& videoEncodedFrameInfo) = 0;
912 
913  virtual ~IVideoEncodedFrameObserver() {}
914 };
915 
920  public:
922 
923  enum VIDEO_FRAME_PROCESS_MODE {
924  PROCESS_MODE_READ_ONLY, // Observer works as a pure renderer and will not modify the original frame.
925  PROCESS_MODE_READ_WRITE, // Observer works as a filter that will process the video frame and affect the following frame processing in SDK.
926  };
927 
928  public:
929  virtual ~IVideoFrameObserver() {}
930 
949  virtual bool onCaptureVideoFrame(VideoFrame& videoFrame) = 0;
950 
968  virtual bool onPreEncodeVideoFrame(VideoFrame& videoFrame) = 0;
969 
970  virtual bool onSecondaryCameraCaptureVideoFrame(VideoFrame& videoFrame) = 0;
971 
989  virtual bool onSecondaryPreEncodeCameraVideoFrame(VideoFrame& videoFrame) = 0;
990 
1006  virtual bool onScreenCaptureVideoFrame(VideoFrame& videoFrame) = 0;
1007 
1008  virtual bool onPreEncodeScreenVideoFrame(VideoFrame& videoFrame) = 0;
1025  virtual bool onMediaPlayerVideoFrame(VideoFrame& videoFrame, int mediaPlayerId) = 0;
1026 
1027  virtual bool onSecondaryScreenCaptureVideoFrame(VideoFrame& videoFrame) = 0;
1028 
1029  virtual bool onSecondaryPreEncodeScreenVideoFrame(VideoFrame& videoFrame) = 0;
1030 
1048  virtual bool onRenderVideoFrame(const char* channelId, rtc::uid_t remoteUid, VideoFrame& videoFrame) = 0;
1049 
1050  virtual bool onTranscodedVideoFrame(VideoFrame& videoFrame) = 0;
1051 
1056  virtual VIDEO_FRAME_PROCESS_MODE getVideoFrameProcessMode() {
1057  return PROCESS_MODE_READ_ONLY;
1058  }
1059 
1060  /*
1061  * Occurs each time needs to get preference video frame type.
1062  *
1063  * @return preference video pixel format.
1064  */
1065  virtual base::VIDEO_PIXEL_FORMAT getVideoPixelFormatPreference() { return base::VIDEO_PIXEL_I420; }
1066 
1074  virtual bool getRotationApplied() { return false; }
1075 
1083  virtual bool getMirrorApplied() { return false; }
1084 
1102  virtual uint32_t getObservedFramePosition() {
1103  return base::POSITION_POST_CAPTURER | base::POSITION_PRE_RENDERER;
1104  }
1105 
1113  virtual bool isExternal() { return true; }
1114 };
1117 #define MAX_CONTENT_INSPECT_MODULE_COUNT 32
1118 enum CONTENT_INSPECT_RESULT {
1119  CONTENT_INSPECT_NEUTRAL = 1,
1120  CONTENT_INSPECT_SEXY = 2,
1121  CONTENT_INSPECT_PORN = 3,
1122 };
1123 enum CONTENT_INSPECT_DEVICE_TYPE{
1124  CONTENT_INSPECT_DEVICE_INVALID = 0,
1125  CONTENT_INSPECT_DEVICE_AGORA = 1,
1126  CONTENT_INSPECT_DEVICE_HIVE = 2,
1127  CONTENT_INSPECT_DEVICE_TUPU = 3
1128 };
1129 enum CONTENT_INSPECT_TYPE {
1133 CONTENT_INSPECT_INVALIDE = 0,
1137 CONTENT_INSPECT_MODERATION = 1,
1141 CONTENT_INSPECT_SUPERVISE = 2
1142 };
1147  CONTENT_INSPECT_TYPE type;
1151  unsigned int frequency;
1152 };
1157  bool enable;
1158 
1161 
1164 
1166  CONTENT_INSPECT_DEVICE_TYPE DeviceworkType;
1167  const char* extraInfo;
1168 
1172  ContentInspectModule modules[MAX_CONTENT_INSPECT_MODULE_COUNT];
1176  ContentInspectConfig& operator=(const ContentInspectConfig& rth)
1177  {
1178  enable = rth.enable;
1179  DeviceWork = rth.DeviceWork;
1180  CloudWork = rth.CloudWork;
1182  extraInfo = rth.extraInfo;
1183  moduleCount = rth.moduleCount;
1184  memcpy(&modules, &rth.modules, MAX_CONTENT_INSPECT_MODULE_COUNT * sizeof(ContentInspectModule));
1185  return *this;
1186  }
1187  ContentInspectConfig() : enable(false),DeviceWork(false),CloudWork(true),DeviceworkType(CONTENT_INSPECT_DEVICE_INVALID),extraInfo(NULL), moduleCount(0){}
1188 };
1190 {
1191  const char* channel;
1192  unsigned int uid;
1193  const char* filePath;
1194  SnapShotConfig& operator=(SnapShotConfig& rth)
1195  {
1196  channel = rth.channel;
1197  uid = rth.uid;
1198  filePath = rth.filePath;
1199  return *this;
1200  }
1201  SnapShotConfig():channel(NULL),uid(0), filePath(NULL){
1202  }
1203 };
1205  public:
1216  virtual void onSnapshotTaken(const char* channel, unsigned int uid, const char* filePath, int width, int height, int errCode) = 0;
1217  virtual ~ISnapshotCallback(){};
1218 };
1219 
1223 enum EXTERNAL_VIDEO_SOURCE_TYPE {
1227  VIDEO_FRAME = 0,
1231  ENCODED_VIDEO_FRAME,
1232 };
1233 } // namespace media
1234 } // namespace agora
agora::media::base::VideoFrame
Definition: AgoraMediaBase.h:560
agora::media::base::ExternalVideoFrame::cropBottom
int cropBottom
Definition: AgoraMediaBase.h:516
agora::media::base::VideoFrame::metadata_size
int metadata_size
Definition: AgoraMediaBase.h:639
agora::media::AudioSpectrumData::audioSpectrumData
const float * audioSpectrumData
Definition: AgoraMediaBase.h:828
agora::media::base::ExternalVideoFrame::matrix
float matrix[16]
Definition: AgoraMediaBase.h:544
agora::media::ContentInspectConfig::CloudWork
bool CloudWork
Definition: AgoraMediaBase.h:1163
agora::media::IAudioFrameObserverBase
Definition: AgoraMediaBase.h:700
agora::media::ContentInspectConfig::modules
ContentInspectModule modules[MAX_CONTENT_INSPECT_MODULE_COUNT]
Definition: AgoraMediaBase.h:1172
agora::media::base::VideoFrame::uStride
int uStride
Definition: AgoraMediaBase.h:598
agora::media::IAudioFrameObserverBase::FRAME_TYPE_PCM16
@ FRAME_TYPE_PCM16
Definition: AgoraMediaBase.h:709
agora::media::base::VideoFrame::height
int height
Definition: AgoraMediaBase.h:590
agora::media::base::AudioPcmFrame::data_
int16_t data_[kMaxDataSizeSamples]
Definition: AgoraMediaBase.h:284
agora::media::IAudioFrameObserverBase::onRecordAudioFrame
virtual bool onRecordAudioFrame(const char *channelId, AudioFrame &audioFrame)=0
agora::media::IAudioSpectrumObserver
Definition: AgoraMediaBase.h:857
agora::rtc::AudioParameters
Definition: AgoraMediaBase.h:100
agora::media::IAudioFrameObserverBase::AudioFrame::renderTimeMs
int64_t renderTimeMs
Definition: AgoraMediaBase.h:746
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_RAW_DATA
@ VIDEO_BUFFER_RAW_DATA
Definition: AgoraMediaBase.h:465
agora::media::base::ExternalVideoFrame::buffer
void * buffer
Definition: AgoraMediaBase.h:487
agora::media::IAudioFrameObserverBase::AudioFrame::channels
int channels
Definition: AgoraMediaBase.h:730
agora::rtc::EncodedVideoFrameInfo
Definition: AgoraBase.h:1754
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_TYPE
VIDEO_BUFFER_TYPE
Definition: AgoraMediaBase.h:461
agora::media::base::IVideoFrameObserver
Definition: AgoraMediaBase.h:654
agora::media::IVideoFrameObserver::getVideoFrameProcessMode
virtual VIDEO_FRAME_PROCESS_MODE getVideoFrameProcessMode()
Definition: AgoraMediaBase.h:1056
agora::media::ContentInspectConfig::DeviceworkType
CONTENT_INSPECT_DEVICE_TYPE DeviceworkType
Definition: AgoraMediaBase.h:1166
agora::media::IVideoFrameObserver
Definition: AgoraMediaBase.h:919
agora::media::IAudioFrameObserverBase::AudioFrame
Definition: AgoraMediaBase.h:714
agora::media::base::AudioEncodedFrameInfo::codec
uint8_t codec
Definition: AgoraMediaBase.h:242
agora::media::IAudioFrameObserver
Definition: AgoraMediaBase.h:809
agora::media::base::VideoFrame::rotation
int rotation
Definition: AgoraMediaBase.h:618
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:255
agora::media::base::ExternalVideoFrame::eglContext
void * eglContext
Definition: AgoraMediaBase.h:532
agora::media::base::ExternalVideoFrame::cropRight
int cropRight
Definition: AgoraMediaBase.h:511
agora::media::base::VideoFrame::textureId
int textureId
Definition: AgoraMediaBase.h:647
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_ARRAY
@ VIDEO_BUFFER_ARRAY
Definition: AgoraMediaBase.h:469
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_TEXTURE
@ VIDEO_BUFFER_TEXTURE
Definition: AgoraMediaBase.h:473
agora::media::base::VideoFrame::avsync_type
int avsync_type
Definition: AgoraMediaBase.h:629
agora::media::base::VideoFrame::matrix
float matrix[16]
Definition: AgoraMediaBase.h:651
agora::media::base::ExternalVideoFrame::cropLeft
int cropLeft
Definition: AgoraMediaBase.h:501
agora::media::IAudioFrameObserverBase::AudioFrame::samplesPerSec
int samplesPerSec
Definition: AgoraMediaBase.h:734
agora::media::ContentInspectModule
Definition: AgoraMediaBase.h:1143
agora::media::IAudioFrameObserverBase::AudioFrame::buffer
void * buffer
Definition: AgoraMediaBase.h:738
agora::media::IAudioFrameObserverBase::onPlaybackAudioFrameBeforeMixing
virtual bool onPlaybackAudioFrameBeforeMixing(const char *channelId, base::user_id_t userId, AudioFrame &audioFrame)
Definition: AgoraMediaBase.h:798
agora::media::IAudioSpectrumObserver::onRemoteAudioSpectrum
virtual bool onRemoteAudioSpectrum(const UserAudioSpectrumInfo *spectrums, unsigned int spectrumNumber)=0
agora::media::base::ExternalVideoFrame
Definition: AgoraMediaBase.h:425
agora::media::ContentInspectModule::frequency
unsigned int frequency
Definition: AgoraMediaBase.h:1151
agora::media::base::AudioEncodedFrameInfo::sendTs
uint64_t sendTs
Definition: AgoraMediaBase.h:238
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:1175
agora::media::base::AudioPcmFrame::capture_timestamp
uint32_t capture_timestamp
Definition: AgoraMediaBase.h:270
agora::media::base::VideoFrame::type
VIDEO_PIXEL_FORMAT type
Definition: AgoraMediaBase.h:582
agora::media::base::ExternalVideoFrame::timestamp
long long timestamp
Definition: AgoraMediaBase.h:526
agora::media::IVideoFrameObserver::onScreenCaptureVideoFrame
virtual bool onScreenCaptureVideoFrame(VideoFrame &videoFrame)=0
agora::media::base::AudioPcmFrame::sample_rate_hz_
int sample_rate_hz_
Definition: AgoraMediaBase.h:276
agora::media::base::ExternalVideoFrame::height
int height
Definition: AgoraMediaBase.h:496
agora::media::base::VideoFrame::sharedContext
void * sharedContext
Definition: AgoraMediaBase.h:643
agora::media::ContentInspectConfig::enable
bool enable
Definition: AgoraMediaBase.h:1157
agora::media::base::ExternalVideoFrame::rotation
int rotation
Definition: AgoraMediaBase.h:521
agora::media::UserAudioSpectrumInfo::spectrumData
struct AudioSpectrumData spectrumData
Definition: AgoraMediaBase.h:847
agora::media::base::PacketOptions
Definition: AgoraMediaBase.h:208
agora::media::base::PacketOptions::timestamp
uint32_t timestamp
Definition: AgoraMediaBase.h:212
agora::media::base::IAudioFrameObserver::onFrame
virtual void onFrame(AudioPcmFrame *frame)=0
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_TYPE
AUDIO_FRAME_TYPE
Definition: AgoraMediaBase.h:705
agora::media::base::VideoFrame::yBuffer
uint8_t * yBuffer
Definition: AgoraMediaBase.h:606
agora::media::base::AudioPcmFrame::bytes_per_sample
rtc::BYTES_PER_SAMPLE bytes_per_sample
Definition: AgoraMediaBase.h:282
agora::media::UserAudioSpectrumInfo
Definition: AgoraMediaBase.h:839
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:1113
agora::media::IVideoFrameObserver::onPreEncodeVideoFrame
virtual bool onPreEncodeVideoFrame(VideoFrame &videoFrame)=0
agora::media::IVideoFrameObserver::getObservedFramePosition
virtual uint32_t getObservedFramePosition()
Definition: AgoraMediaBase.h:1102
agora::media::base::VideoFrame::yStride
int yStride
Definition: AgoraMediaBase.h:594
agora::media::base::ExternalVideoFrame::metadata_buffer
uint8_t * metadata_buffer
Definition: AgoraMediaBase.h:549
agora::media::ContentInspectModule::type
CONTENT_INSPECT_TYPE type
Definition: AgoraMediaBase.h:1147
agora::media::base::ExternalVideoFrame::EGL_CONTEXT14
@ EGL_CONTEXT14
Definition: AgoraMediaBase.h:455
agora::media::base::ExternalVideoFrame::cropTop
int cropTop
Definition: AgoraMediaBase.h:506
agora::media::base::ExternalVideoFrame::type
VIDEO_BUFFER_TYPE type
Definition: AgoraMediaBase.h:479
agora::media::IVideoFrameObserver::getRotationApplied
virtual bool getRotationApplied()
Definition: AgoraMediaBase.h:1074
agora::media::base::VideoFrame::vBuffer
uint8_t * vBuffer
Definition: AgoraMediaBase.h:614
agora::media::AudioSpectrumData::dataLength
int dataLength
Definition: AgoraMediaBase.h:832
agora::media::base::ExternalVideoFrame::EGL_CONTEXT_TYPE
EGL_CONTEXT_TYPE
Definition: AgoraMediaBase.h:447
agora::media::IAudioFrameObserverBase::onMixedAudioFrame
virtual bool onMixedAudioFrame(const char *channelId, AudioFrame &audioFrame)=0
agora::media::ISnapshotCallback
Definition: AgoraMediaBase.h:1204
agora::media::base::AudioPcmFrame::num_channels_
size_t num_channels_
Definition: AgoraMediaBase.h:279
agora::media::SnapShotConfig
Definition: AgoraMediaBase.h:1190
agora::media::base::VideoFrame::metadata_buffer
uint8_t * metadata_buffer
Definition: AgoraMediaBase.h:634
agora::media::ContentInspectConfig::DeviceWork
bool DeviceWork
Definition: AgoraMediaBase.h:1160
agora::media::base::IAudioFrameObserver
Definition: AgoraMediaBase.h:344
agora::media::AudioSpectrumData
Definition: AgoraMediaBase.h:824
agora::media::base::VideoFrame::width
int width
Definition: AgoraMediaBase.h:586
agora::media::base::VideoFrame::renderTimeMs
int64_t renderTimeMs
Definition: AgoraMediaBase.h:625
agora::media::base::ExternalVideoFrame::metadata_size
int metadata_size
Definition: AgoraMediaBase.h:554
agora::media::base::AudioPcmFrame::samples_per_channel_
size_t samples_per_channel_
Definition: AgoraMediaBase.h:273
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:726
agora::media::base::ExternalVideoFrame::textureId
int textureId
Definition: AgoraMediaBase.h:540
agora::media::IAudioFrameObserverBase::AudioFrame::type
AUDIO_FRAME_TYPE type
Definition: AgoraMediaBase.h:718
agora::media::IVideoEncodedFrameObserver
Definition: AgoraMediaBase.h:898
agora::media::IAudioFrameObserverBase::AudioFrame::samplesPerChannel
int samplesPerChannel
Definition: AgoraMediaBase.h:722
agora::media::IVideoFrameObserver::getMirrorApplied
virtual bool getMirrorApplied()
Definition: AgoraMediaBase.h:1083
agora::media::IAudioSpectrumObserver::onLocalAudioSpectrum
virtual bool onLocalAudioSpectrum(const AudioSpectrumData &data)=0
agora::media::base::AudioEncodedFrameInfo
Definition: AgoraMediaBase.h:234
agora::media::base::VideoFrame::vStride
int vStride
Definition: AgoraMediaBase.h:602
agora::media::ISnapshotCallback::onSnapshotTaken
virtual void onSnapshotTaken(const char *channel, unsigned int uid, const char *filePath, int width, int height, int errCode)=0
snapshot taken callback
agora::media::ContentInspectConfig
Definition: AgoraMediaBase.h:1155
agora::media::base::AudioPcmFrame
Definition: AgoraMediaBase.h:251
agora::media::IVideoFrameObserver::onCaptureVideoFrame
virtual bool onCaptureVideoFrame(VideoFrame &videoFrame)=0
agora::media::base::VideoFrame::uBuffer
uint8_t * uBuffer
Definition: AgoraMediaBase.h:610
agora::media::IAudioFrameObserverBase::onPlaybackAudioFrame
virtual bool onPlaybackAudioFrame(const char *channelId, AudioFrame &audioFrame)=0
agora::media::base::ExternalVideoFrame::EGL_CONTEXT10
@ EGL_CONTEXT10
Definition: AgoraMediaBase.h:451
agora::media::UserAudioSpectrumInfo::uid
agora::rtc::uid_t uid
Definition: AgoraMediaBase.h:843
agora::media::base::ExternalVideoFrame::format
VIDEO_PIXEL_FORMAT format
Definition: AgoraMediaBase.h:483
agora::media::base::ExternalVideoFrame::stride
int stride
Definition: AgoraMediaBase.h:492
agora::media::base::AdvancedAudioOptions
Definition: AgoraMediaBase.h:225
agora::media::IVideoFrameObserver::onSecondaryPreEncodeCameraVideoFrame
virtual bool onSecondaryPreEncodeCameraVideoFrame(VideoFrame &videoFrame)=0
agora::media::base::ExternalVideoFrame::eglType
EGL_CONTEXT_TYPE eglType
Definition: AgoraMediaBase.h:536