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 typedef unsigned int video_track_id_t;
33 
34 static const unsigned int DEFAULT_CONNECTION_ID = 0;
35 static const unsigned int DUMMY_CONNECTION_ID = (std::numeric_limits<unsigned int>::max)();
36 
37 
38 struct EncodedVideoFrameInfo;
39 
43 enum AudioRoute
44 {
48  ROUTE_DEFAULT = -1,
52  ROUTE_HEADSET = 0,
56  ROUTE_EARPIECE = 1,
60  ROUTE_HEADSETNOMIC = 2,
64  ROUTE_SPEAKERPHONE = 3,
68  ROUTE_LOUDSPEAKER = 4,
72  ROUTE_HEADSETBLUETOOTH = 5,
76  ROUTE_USB = 6,
80  ROUTE_HDMI = 7,
84  ROUTE_DISPLAYPORT = 8,
88  ROUTE_AIRPLAY = 9,
89 };
90 
94 enum BYTES_PER_SAMPLE {
98  TWO_BYTES_PER_SAMPLE = 2,
99 };
100 
102  int sample_rate;
103  size_t channels;
104  size_t frames_per_buffer;
105 
107  : sample_rate(0),
108  channels(0),
109  frames_per_buffer(0) {}
110 };
111 
112 enum RAW_AUDIO_FRAME_OP_MODE_TYPE {
117  RAW_AUDIO_FRAME_OP_MODE_READ_ONLY = 0,
118 
123  RAW_AUDIO_FRAME_OP_MODE_READ_WRITE = 2,
124 };
125 
126 } // namespace rtc
127 
128 namespace media {
132 enum MEDIA_SOURCE_TYPE {
136  AUDIO_PLAYOUT_SOURCE = 0,
140  AUDIO_RECORDING_SOURCE = 1,
144  PRIMARY_CAMERA_SOURCE = 2,
148  SECONDARY_CAMERA_SOURCE = 3,
152  PRIMARY_SCREEN_SOURCE = 4,
156  SECONDARY_SCREEN_SOURCE = 5,
160  CUSTOM_VIDEO_SOURCE = 6,
164  MEDIA_PLAYER_SOURCE = 7,
168  RTC_IMAGE_PNG_SOURCE = 8,
172  RTC_IMAGE_JPEG_SOURCE = 9,
176  RTC_IMAGE_GIF_SOURCE = 10,
180  REMOTE_VIDEO_SOURCE = 11,
184  TRANSCODED_VIDEO_SOURCE = 12,
188  UNKNOWN_MEDIA_SOURCE = 100
189 };
192 #define MAX_CONTENT_INSPECT_MODULE_COUNT 32
193 enum CONTENT_INSPECT_RESULT {
194  CONTENT_INSPECT_NEUTRAL = 1,
195  CONTENT_INSPECT_SEXY = 2,
196  CONTENT_INSPECT_PORN = 3,
197 };
198 
199 enum CONTENT_INSPECT_TYPE {
203 CONTENT_INSPECT_INVALID = 0,
207 CONTENT_INSPECT_MODERATION = 1,
211 CONTENT_INSPECT_SUPERVISION = 2
212 };
213 
218  CONTENT_INSPECT_TYPE type;
222  unsigned int interval;
224  type = CONTENT_INSPECT_INVALID;
225  interval = 0;
226  }
227 };
231  const char* extraInfo;
232 
236  ContentInspectModule modules[MAX_CONTENT_INSPECT_MODULE_COUNT];
240  ContentInspectConfig& operator=(const ContentInspectConfig& rth)
241  {
242  extraInfo = rth.extraInfo;
243  moduleCount = rth.moduleCount;
244  memcpy(&modules, &rth.modules, MAX_CONTENT_INSPECT_MODULE_COUNT * sizeof(ContentInspectModule));
245  return *this;
246  }
247  ContentInspectConfig() :extraInfo(NULL), moduleCount(0){}
248 };
249 
250 namespace base {
251 
252 typedef void* view_t;
253 
254 typedef const char* user_id_t;
255 
256 static const uint8_t kMaxCodecNameLength = 50;
257 
266  uint32_t timestamp;
267  // Audio level indication.
268  uint8_t audioLevelIndication;
269  PacketOptions()
270  : timestamp(0),
271  audioLevelIndication(127) {}
272 };
273 
282  uint64_t sendTs;
286  uint8_t codec;
288  : sendTs(0),
289  codec(0) {}
290 };
291 
300  // Stereo, 32 kHz, 60 ms (2 * 32 * 60)
307  kMaxDataSizeSamples = 3840,
309  kMaxDataSizeBytes = kMaxDataSizeSamples * sizeof(int16_t),
310  };
311 
326  rtc::BYTES_PER_SAMPLE bytes_per_sample;
328  int16_t data_[kMaxDataSizeSamples];
329 
330  AudioPcmFrame& operator=(const AudioPcmFrame& src) {
331  if(this == &src) {
332  return *this;
333  }
334 
335  this->capture_timestamp = src.capture_timestamp;
336  this->samples_per_channel_ = src.samples_per_channel_;
337  this->sample_rate_hz_ = src.sample_rate_hz_;
338  this->bytes_per_sample = src.bytes_per_sample;
339  this->num_channels_ = src.num_channels_;
340 
341  size_t length = src.samples_per_channel_ * src.num_channels_;
342  if (length > kMaxDataSizeSamples) {
343  length = kMaxDataSizeSamples;
344  }
345 
346  memcpy(this->data_, src.data_, length * sizeof(int16_t));
347 
348  return *this;
349  }
350 
351  AudioPcmFrame()
352  : capture_timestamp(0),
354  sample_rate_hz_(0),
355  num_channels_(0),
356  bytes_per_sample(rtc::TWO_BYTES_PER_SAMPLE) {
357  memset(data_, 0, sizeof(data_));
358  }
359 
360  AudioPcmFrame(const AudioPcmFrame& src)
366  size_t length = src.samples_per_channel_ * src.num_channels_;
367  if (length > kMaxDataSizeSamples) {
368  length = kMaxDataSizeSamples;
369  }
370 
371  memcpy(this->data_, src.data_, length * sizeof(int16_t));
372  }
373 };
374 
377 enum AUDIO_DUAL_MONO_MODE {
379  AUDIO_DUAL_MONO_STEREO = 0,
381  AUDIO_DUAL_MONO_L = 1,
383  AUDIO_DUAL_MONO_R = 2,
385  AUDIO_DUAL_MONO_MIX = 3
386 };
387 
389  public:
398  virtual void onFrame(AudioPcmFrame* frame) = 0;
399  virtual ~IAudioFrameObserver() {}
400 };
401 
405 enum VIDEO_PIXEL_FORMAT {
409  VIDEO_PIXEL_DEFAULT = 0,
413  VIDEO_PIXEL_I420 = 1,
417  VIDEO_PIXEL_BGRA = 2,
421  VIDEO_PIXEL_NV21 = 3,
425  VIDEO_PIXEL_RGBA = 4,
429  VIDEO_PIXEL_NV12 = 8,
433  VIDEO_TEXTURE_2D = 10,
437  VIDEO_TEXTURE_OES = 11,
438  /*
439  12: pixel format for iOS CVPixelBuffer NV12
440  */
441  VIDEO_CVPIXEL_NV12 = 12,
442  /*
443  13: pixel format for iOS CVPixelBuffer I420
444  */
445  VIDEO_CVPIXEL_I420 = 13,
446  /*
447  14: pixel format for iOS CVPixelBuffer BGRA
448  */
449  VIDEO_CVPIXEL_BGRA = 14,
453  VIDEO_PIXEL_I422 = 16,
454 };
455 
459 enum RENDER_MODE_TYPE {
464  RENDER_MODE_HIDDEN = 1,
470  RENDER_MODE_FIT = 2,
475  RENDER_MODE_ADAPTIVE __deprecated = 3,
476 };
477 
481 enum VIDEO_SOURCE_TYPE {
485  CAMERA_SOURCE_FRONT = 0,
489  CAMERA_SOURCE_BACK = 1,
493  VIDEO_SOURCE_UNSPECIFIED = 2,
494 };
495 
502  format(VIDEO_PIXEL_DEFAULT),
503  buffer(NULL),
504  stride(0),
505  height(0),
506  cropLeft(0),
507  cropTop(0),
508  cropRight(0),
509  cropBottom(0),
510  rotation(0),
511  timestamp(0),
512  eglContext(NULL),
514  textureId(0),
515  metadata_buffer(NULL),
516  metadata_size(0),
517  alphaBuffer(NULL){}
518 
531  };
532 
549  };
550 
558  VIDEO_PIXEL_FORMAT format;
562  void* buffer;
567  int stride;
571  int height;
576  int cropLeft;
581  int cropTop;
596  int rotation;
604  long long timestamp;
610  void *eglContext;
622  float matrix[16];
627  uint8_t* metadata_buffer;
638  uint8_t* alphaBuffer;
639 };
640 
644 struct VideoFrame {
645  VideoFrame():
646  type(VIDEO_PIXEL_DEFAULT),
647  width(0),
648  height(0),
649  yStride(0),
650  uStride(0),
651  vStride(0),
652  yBuffer(NULL),
653  uBuffer(NULL),
654  vBuffer(NULL),
655  rotation(0),
656  renderTimeMs(0),
657  avsync_type(0),
658  metadata_buffer(NULL),
659  metadata_size(0),
660  sharedContext(0),
661  textureId(0),
662  alphaBuffer(NULL){}
663 
667  VIDEO_PIXEL_FORMAT type;
671  int width;
675  int height;
679  int yStride;
683  int uStride;
687  int vStride;
691  uint8_t* yBuffer;
695  uint8_t* uBuffer;
699  uint8_t* vBuffer;
703  int rotation;
710  int64_t renderTimeMs;
719  uint8_t* metadata_buffer;
736  float matrix[16];
742  uint8_t* alphaBuffer;
743 };
744 
746  public:
754  virtual void onFrame(const VideoFrame* frame) = 0;
755  virtual ~IVideoFrameObserver() {}
756  virtual bool isExternal() { return true; }
757  virtual VIDEO_PIXEL_FORMAT getVideoFormatPreference() { return VIDEO_PIXEL_DEFAULT; }
758 };
759 
760 enum MEDIA_PLAYER_SOURCE_TYPE {
766  MEDIA_PLAYER_SOURCE_DEFAULT,
772  MEDIA_PLAYER_SOURCE_FULL_FEATURED,
777  MEDIA_PLAYER_SOURCE_SIMPLE,
778 };
779 
780 enum VIDEO_MODULE_POSITION {
781  POSITION_POST_CAPTURER = 1 << 0,
782  POSITION_PRE_RENDERER = 1 << 1,
783  POSITION_PRE_ENCODER = 1 << 2,
784  POSITION_POST_FILTERS = 1 << 3,
785 };
786 
787 } // namespace base
788 
793  public:
802  };
803  enum { MAX_HANDLE_TIME_CNT = 10 };
807  struct AudioFrame {
819  agora::rtc::BYTES_PER_SAMPLE bytesPerSample;
823  int channels;
831  void* buffer;
839  int64_t renderTimeMs;
840  int avsync_type;
841 
844  bytesPerSample(rtc::TWO_BYTES_PER_SAMPLE),
845  channels(0),
846  samplesPerSec(0),
847  buffer(NULL),
848  renderTimeMs(0),
849  avsync_type(0) {}
850  };
851 
853  AUDIO_FRAME_POSITION_NONE = 0x0000,
869  };
870 
871  struct AudioParams {
881 
882  /* The number of audio channels, which can be set as either of the following values:
883 
884  - `1`: Mono (Default)
885  - `2`: Stereo
886  */
887  int channels;
888 
889  /* The use mode of the audio data. See AgoraAudioRawFrameOperationMode.
890  */
891  rtc::RAW_AUDIO_FRAME_OP_MODE_TYPE mode;
892 
897 
898  AudioParams() : sample_rate(0), channels(0), mode(rtc::RAW_AUDIO_FRAME_OP_MODE_READ_ONLY), samples_per_call(0) {}
899  AudioParams(int samplerate, int channel, rtc::RAW_AUDIO_FRAME_OP_MODE_TYPE type, int samplesPerCall) : sample_rate(samplerate), channels(channel), mode(type), samples_per_call(samplesPerCall) {}
900  };
901 
902  public:
903  virtual ~IAudioFrameObserverBase() {}
904 
913  virtual bool onRecordAudioFrame(const char* channelId, AudioFrame& audioFrame) = 0;
922  virtual bool onPlaybackAudioFrame(const char* channelId, AudioFrame& audioFrame) = 0;
931  virtual bool onMixedAudioFrame(const char* channelId, AudioFrame& audioFrame) = 0;
939  virtual bool onEarMonitoringAudioFrame(AudioFrame& audioFrame) = 0;
949  virtual bool onPlaybackAudioFrameBeforeMixing(const char* channelId, base::user_id_t userId, AudioFrame& audioFrame) {
950  (void) channelId;
951  (void) userId;
952  (void) audioFrame;
953  return true;
954  }
955 
971  virtual int getObservedAudioFramePosition() = 0;
972 
985 
997 
1009 
1021 };
1022 
1027  public:
1038  virtual bool onPlaybackAudioFrameBeforeMixing(const char* channelId, rtc::uid_t uid, AudioFrame& audioFrame) = 0;
1039 };
1040 
1045  const float *audioSpectrumData;
1050 
1052  AudioSpectrumData(const float *data, int length) :
1053  audioSpectrumData(data), dataLength(length) {}
1054 };
1055 
1060  agora::rtc::uid_t uid;
1065 
1066  UserAudioSpectrumInfo () : uid(0), spectrumData() {}
1067  UserAudioSpectrumInfo(agora::rtc::uid_t _uid, const float *data, int length) :
1068  uid(_uid) { spectrumData.audioSpectrumData = data; spectrumData.dataLength = length; }
1069 };
1070 
1075 public:
1076  virtual ~IAudioSpectrumObserver() {}
1077 
1090  virtual bool onLocalAudioSpectrum(const AudioSpectrumData& data) = 0;
1091 
1109  virtual bool onRemoteAudioSpectrum(const UserAudioSpectrumInfo * spectrums, unsigned int spectrumNumber) = 0;
1110 };
1111 
1116  public:
1127  virtual bool onEncodedVideoFrameReceived(rtc::uid_t uid, const uint8_t* imageBuffer, size_t length,
1128  const rtc::EncodedVideoFrameInfo& videoEncodedFrameInfo) = 0;
1129 
1130  virtual ~IVideoEncodedFrameObserver() {}
1131 };
1132 
1137  public:
1139 
1140  enum VIDEO_FRAME_PROCESS_MODE {
1141  PROCESS_MODE_READ_ONLY, // Observer works as a pure renderer and will not modify the original frame.
1142  PROCESS_MODE_READ_WRITE, // Observer works as a filter that will process the video frame and affect the following frame processing in SDK.
1143  };
1144 
1145  public:
1146  virtual ~IVideoFrameObserver() {}
1147 
1166  virtual bool onCaptureVideoFrame(VideoFrame& videoFrame) = 0;
1167 
1185  virtual bool onPreEncodeVideoFrame(VideoFrame& videoFrame) = 0;
1186 
1187  virtual bool onSecondaryCameraCaptureVideoFrame(VideoFrame& videoFrame) = 0;
1188 
1206  virtual bool onSecondaryPreEncodeCameraVideoFrame(VideoFrame& videoFrame) = 0;
1207 
1223  virtual bool onScreenCaptureVideoFrame(VideoFrame& videoFrame) = 0;
1224 
1225  virtual bool onPreEncodeScreenVideoFrame(VideoFrame& videoFrame) = 0;
1242  virtual bool onMediaPlayerVideoFrame(VideoFrame& videoFrame, int mediaPlayerId) = 0;
1243 
1244  virtual bool onSecondaryScreenCaptureVideoFrame(VideoFrame& videoFrame) = 0;
1245 
1246  virtual bool onSecondaryPreEncodeScreenVideoFrame(VideoFrame& videoFrame) = 0;
1247 
1265  virtual bool onRenderVideoFrame(const char* channelId, rtc::uid_t remoteUid, VideoFrame& videoFrame) = 0;
1266 
1267  virtual bool onTranscodedVideoFrame(VideoFrame& videoFrame) = 0;
1268 
1273  virtual VIDEO_FRAME_PROCESS_MODE getVideoFrameProcessMode() {
1274  return PROCESS_MODE_READ_ONLY;
1275  }
1276 
1277  /*
1278  * Occurs each time needs to get preference video frame type.
1279  *
1280  * @return preference video pixel format.
1281  */
1282  virtual base::VIDEO_PIXEL_FORMAT getVideoFormatPreference() { return base::VIDEO_PIXEL_DEFAULT; }
1283 
1291  virtual bool getRotationApplied() { return false; }
1292 
1300  virtual bool getMirrorApplied() { return false; }
1301 
1319  virtual uint32_t getObservedFramePosition() {
1320  return base::POSITION_POST_CAPTURER | base::POSITION_PRE_RENDERER;
1321  }
1322 
1330  virtual bool isExternal() { return true; }
1331 };
1332 
1336 enum EXTERNAL_VIDEO_SOURCE_TYPE {
1340  VIDEO_FRAME = 0,
1344  ENCODED_VIDEO_FRAME,
1345 };
1346 
1352 enum MediaRecorderContainerFormat {
1356  FORMAT_MP4 = 1,
1357 };
1363 enum MediaRecorderStreamType {
1367  STREAM_TYPE_AUDIO = 0x01,
1371  STREAM_TYPE_VIDEO = 0x02,
1375  STREAM_TYPE_BOTH = STREAM_TYPE_AUDIO | STREAM_TYPE_VIDEO,
1376 };
1382 enum RecorderState {
1386  RECORDER_STATE_ERROR = -1,
1390  RECORDER_STATE_START = 2,
1394  RECORDER_STATE_STOP = 3,
1395 };
1401 enum RecorderErrorCode {
1405  RECORDER_ERROR_NONE = 0,
1409  RECORDER_ERROR_WRITE_FAILED = 1,
1413  RECORDER_ERROR_NO_STREAM = 2,
1417  RECORDER_ERROR_OVER_MAX_DURATION = 3,
1421  RECORDER_ERROR_CONFIG_CHANGED = 4,
1422 };
1437  const char* storagePath;
1441  MediaRecorderContainerFormat containerFormat;
1445  MediaRecorderStreamType streamType;
1457 
1458  MediaRecorderConfiguration() : storagePath(NULL), containerFormat(FORMAT_MP4), streamType(STREAM_TYPE_BOTH), maxDurationMs(120000), recorderInfoUpdateInterval(0) {}
1459  MediaRecorderConfiguration(const char* path, MediaRecorderContainerFormat format, MediaRecorderStreamType type, int duration, int interval) : storagePath(path), containerFormat(format), streamType(type), maxDurationMs(duration), recorderInfoUpdateInterval(interval) {}
1460 };
1470  const char* fileName;
1474  unsigned int durationMs;
1478  unsigned int fileSize;
1479 
1480  RecorderInfo() : fileName(NULL), durationMs(0), fileSize(0) {}
1481  RecorderInfo(const char* name, unsigned int dur, unsigned int size) : fileName(name), durationMs(dur), fileSize(size) {}
1482 };
1483 
1484 
1486  public:
1498  virtual void onRecorderStateChanged(RecorderState state, RecorderErrorCode error) = 0;
1511  virtual void onRecorderInfoUpdated(const RecorderInfo& info) = 0;
1512  virtual ~IMediaRecorderObserver() {}
1513 };
1514 } // namespace media
1515 } // namespace agora
agora::media::base::VideoFrame
Definition: AgoraMediaBase.h:644
agora::media::base::ExternalVideoFrame::cropBottom
int cropBottom
Definition: AgoraMediaBase.h:591
agora::media::base::VideoFrame::metadata_size
int metadata_size
Definition: AgoraMediaBase.h:724
agora::media::AudioSpectrumData::audioSpectrumData
const float * audioSpectrumData
Definition: AgoraMediaBase.h:1045
agora::media::IAudioFrameObserverBase::onEarMonitoringAudioFrame
virtual bool onEarMonitoringAudioFrame(AudioFrame &audioFrame)=0
agora::media::base::ExternalVideoFrame::matrix
float matrix[16]
Definition: AgoraMediaBase.h:622
agora::media::IMediaRecorderObserver
Definition: AgoraMediaBase.h:1485
agora::media::IAudioFrameObserverBase
Definition: AgoraMediaBase.h:792
agora::media::ContentInspectConfig::modules
ContentInspectModule modules[MAX_CONTENT_INSPECT_MODULE_COUNT]
Definition: AgoraMediaBase.h:236
agora::media::base::VideoFrame::uStride
int uStride
Definition: AgoraMediaBase.h:683
agora::media::IAudioFrameObserverBase::FRAME_TYPE_PCM16
@ FRAME_TYPE_PCM16
Definition: AgoraMediaBase.h:801
agora::media::base::VideoFrame::alphaBuffer
uint8_t * alphaBuffer
Definition: AgoraMediaBase.h:742
agora::media::base::VideoFrame::height
int height
Definition: AgoraMediaBase.h:675
agora::media::base::AudioPcmFrame::data_
int16_t data_[kMaxDataSizeSamples]
Definition: AgoraMediaBase.h:328
agora::media::IAudioFrameObserverBase::onRecordAudioFrame
virtual bool onRecordAudioFrame(const char *channelId, AudioFrame &audioFrame)=0
agora::media::MediaRecorderConfiguration::maxDurationMs
int maxDurationMs
Definition: AgoraMediaBase.h:1449
agora::media::IAudioSpectrumObserver
Definition: AgoraMediaBase.h:1074
agora::rtc::AudioParameters
Definition: AgoraMediaBase.h:101
agora::media::IAudioFrameObserverBase::AudioFrame::renderTimeMs
int64_t renderTimeMs
Definition: AgoraMediaBase.h:839
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_RAW_DATA
@ VIDEO_BUFFER_RAW_DATA
Definition: AgoraMediaBase.h:540
agora::media::IAudioFrameObserverBase::getPlaybackAudioParams
virtual AudioParams getPlaybackAudioParams()=0
agora::media::base::ExternalVideoFrame::buffer
void * buffer
Definition: AgoraMediaBase.h:562
agora::media::IAudioFrameObserverBase::AudioFrame::channels
int channels
Definition: AgoraMediaBase.h:823
agora::rtc::EncodedVideoFrameInfo
Definition: AgoraBase.h:1510
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_TYPE
VIDEO_BUFFER_TYPE
Definition: AgoraMediaBase.h:536
agora::media::base::IVideoFrameObserver
Definition: AgoraMediaBase.h:745
agora::media::IVideoFrameObserver::getVideoFrameProcessMode
virtual VIDEO_FRAME_PROCESS_MODE getVideoFrameProcessMode()
Definition: AgoraMediaBase.h:1273
agora::media::IVideoFrameObserver
Definition: AgoraMediaBase.h:1136
agora::media::IAudioFrameObserverBase::AudioFrame
Definition: AgoraMediaBase.h:807
agora::media::base::AudioEncodedFrameInfo::codec
uint8_t codec
Definition: AgoraMediaBase.h:286
agora::media::IVideoEncodedFrameObserver::onEncodedVideoFrameReceived
virtual bool onEncodedVideoFrameReceived(rtc::uid_t uid, const uint8_t *imageBuffer, size_t length, const rtc::EncodedVideoFrameInfo &videoEncodedFrameInfo)=0
agora::media::MediaRecorderConfiguration::recorderInfoUpdateInterval
int recorderInfoUpdateInterval
Definition: AgoraMediaBase.h:1456
agora::media::IAudioFrameObserver
Definition: AgoraMediaBase.h:1026
agora::media::IAudioFrameObserverBase::getEarMonitoringAudioParams
virtual AudioParams getEarMonitoringAudioParams()=0
agora::media::base::VideoFrame::rotation
int rotation
Definition: AgoraMediaBase.h:703
agora::media::base::IVideoFrameObserver::onFrame
virtual void onFrame(const VideoFrame *frame)=0
agora::media::IAudioFrameObserverBase::getMixedAudioParams
virtual AudioParams getMixedAudioParams()=0
agora::media::base::AudioPcmFrame::OPTIONAL_ENUM_SIZE_T
OPTIONAL_ENUM_SIZE_T
Definition: AgoraMediaBase.h:299
agora::media::base::ExternalVideoFrame::eglContext
void * eglContext
Definition: AgoraMediaBase.h:610
agora::media::base::ExternalVideoFrame::cropRight
int cropRight
Definition: AgoraMediaBase.h:586
agora::media::IAudioFrameObserverBase::getRecordAudioParams
virtual AudioParams getRecordAudioParams()=0
agora::media::base::VideoFrame::textureId
int textureId
Definition: AgoraMediaBase.h:732
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_ARRAY
@ VIDEO_BUFFER_ARRAY
Definition: AgoraMediaBase.h:544
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_TEXTURE
@ VIDEO_BUFFER_TEXTURE
Definition: AgoraMediaBase.h:548
agora::media::base::VideoFrame::avsync_type
int avsync_type
Definition: AgoraMediaBase.h:714
agora::media::base::VideoFrame::matrix
float matrix[16]
Definition: AgoraMediaBase.h:736
agora::media::base::ExternalVideoFrame::cropLeft
int cropLeft
Definition: AgoraMediaBase.h:576
agora::media::IAudioFrameObserverBase::AudioFrame::samplesPerSec
int samplesPerSec
Definition: AgoraMediaBase.h:827
agora::media::ContentInspectModule
Definition: AgoraMediaBase.h:214
agora::media::IAudioFrameObserverBase::AudioFrame::buffer
void * buffer
Definition: AgoraMediaBase.h:831
agora::media::IAudioFrameObserverBase::onPlaybackAudioFrameBeforeMixing
virtual bool onPlaybackAudioFrameBeforeMixing(const char *channelId, base::user_id_t userId, AudioFrame &audioFrame)
Definition: AgoraMediaBase.h:949
agora::media::IAudioSpectrumObserver::onRemoteAudioSpectrum
virtual bool onRemoteAudioSpectrum(const UserAudioSpectrumInfo *spectrums, unsigned int spectrumNumber)=0
agora::media::base::ExternalVideoFrame
Definition: AgoraMediaBase.h:499
agora::media::base::AudioEncodedFrameInfo::sendTs
uint64_t sendTs
Definition: AgoraMediaBase.h:282
agora::media::ContentInspectConfig::moduleCount
int moduleCount
Definition: AgoraMediaBase.h:239
agora::media::base::AudioPcmFrame::capture_timestamp
uint32_t capture_timestamp
Definition: AgoraMediaBase.h:314
agora::media::base::VideoFrame::type
VIDEO_PIXEL_FORMAT type
Definition: AgoraMediaBase.h:667
agora::media::base::ExternalVideoFrame::timestamp
long long timestamp
Definition: AgoraMediaBase.h:604
agora::media::IVideoFrameObserver::onScreenCaptureVideoFrame
virtual bool onScreenCaptureVideoFrame(VideoFrame &videoFrame)=0
agora::media::base::AudioPcmFrame::sample_rate_hz_
int sample_rate_hz_
Definition: AgoraMediaBase.h:320
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION
AUDIO_FRAME_POSITION
Definition: AgoraMediaBase.h:852
agora::media::base::ExternalVideoFrame::height
int height
Definition: AgoraMediaBase.h:571
agora::media::base::VideoFrame::sharedContext
void * sharedContext
Definition: AgoraMediaBase.h:728
agora::media::base::ExternalVideoFrame::rotation
int rotation
Definition: AgoraMediaBase.h:596
agora::media::RecorderInfo
Definition: AgoraMediaBase.h:1466
agora::media::UserAudioSpectrumInfo::spectrumData
struct AudioSpectrumData spectrumData
Definition: AgoraMediaBase.h:1064
agora::media::IAudioFrameObserverBase::AudioParams::samples_per_call
int samples_per_call
Definition: AgoraMediaBase.h:896
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_PLAYBACK
@ AUDIO_FRAME_POSITION_PLAYBACK
Definition: AgoraMediaBase.h:856
agora::media::base::PacketOptions
Definition: AgoraMediaBase.h:262
agora::media::base::PacketOptions::timestamp
uint32_t timestamp
Definition: AgoraMediaBase.h:266
agora::media::base::IAudioFrameObserver::onFrame
virtual void onFrame(AudioPcmFrame *frame)=0
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_TYPE
AUDIO_FRAME_TYPE
Definition: AgoraMediaBase.h:797
agora::media::base::VideoFrame::yBuffer
uint8_t * yBuffer
Definition: AgoraMediaBase.h:691
agora::media::base::AudioPcmFrame::bytes_per_sample
rtc::BYTES_PER_SAMPLE bytes_per_sample
Definition: AgoraMediaBase.h:326
agora::media::UserAudioSpectrumInfo
Definition: AgoraMediaBase.h:1056
agora::media::IMediaRecorderObserver::onRecorderStateChanged
virtual void onRecorderStateChanged(RecorderState state, RecorderErrorCode error)=0
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_EAR_MONITORING
@ AUDIO_FRAME_POSITION_EAR_MONITORING
Definition: AgoraMediaBase.h:868
agora::media::RecorderInfo::fileName
const char * fileName
Definition: AgoraMediaBase.h:1470
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:1330
agora::media::IVideoFrameObserver::onPreEncodeVideoFrame
virtual bool onPreEncodeVideoFrame(VideoFrame &videoFrame)=0
agora::media::ContentInspectModule::interval
unsigned int interval
Definition: AgoraMediaBase.h:222
agora::media::IVideoFrameObserver::getObservedFramePosition
virtual uint32_t getObservedFramePosition()
Definition: AgoraMediaBase.h:1319
agora::media::base::VideoFrame::yStride
int yStride
Definition: AgoraMediaBase.h:679
agora::media::base::ExternalVideoFrame::alphaBuffer
uint8_t * alphaBuffer
Definition: AgoraMediaBase.h:638
agora::media::base::ExternalVideoFrame::metadata_buffer
uint8_t * metadata_buffer
Definition: AgoraMediaBase.h:627
agora::media::ContentInspectModule::type
CONTENT_INSPECT_TYPE type
Definition: AgoraMediaBase.h:218
agora::media::MediaRecorderConfiguration::containerFormat
MediaRecorderContainerFormat containerFormat
Definition: AgoraMediaBase.h:1441
agora::media::base::ExternalVideoFrame::EGL_CONTEXT14
@ EGL_CONTEXT14
Definition: AgoraMediaBase.h:530
agora::media::RecorderInfo::fileSize
unsigned int fileSize
Definition: AgoraMediaBase.h:1478
agora::media::base::ExternalVideoFrame::cropTop
int cropTop
Definition: AgoraMediaBase.h:581
agora::media::base::ExternalVideoFrame::type
VIDEO_BUFFER_TYPE type
Definition: AgoraMediaBase.h:554
agora::media::IVideoFrameObserver::getRotationApplied
virtual bool getRotationApplied()
Definition: AgoraMediaBase.h:1291
agora::media::base::VideoFrame::vBuffer
uint8_t * vBuffer
Definition: AgoraMediaBase.h:699
agora::media::AudioSpectrumData::dataLength
int dataLength
Definition: AgoraMediaBase.h:1049
agora::media::base::ExternalVideoFrame::EGL_CONTEXT_TYPE
EGL_CONTEXT_TYPE
Definition: AgoraMediaBase.h:522
agora::media::IAudioFrameObserverBase::onMixedAudioFrame
virtual bool onMixedAudioFrame(const char *channelId, AudioFrame &audioFrame)=0
agora::media::IAudioFrameObserverBase::AudioParams
Definition: AgoraMediaBase.h:871
agora::media::base::AudioPcmFrame::num_channels_
size_t num_channels_
Definition: AgoraMediaBase.h:323
agora::media::IAudioFrameObserverBase::getObservedAudioFramePosition
virtual int getObservedAudioFramePosition()=0
agora::media::MediaRecorderConfiguration
Definition: AgoraMediaBase.h:1428
agora::media::base::VideoFrame::metadata_buffer
uint8_t * metadata_buffer
Definition: AgoraMediaBase.h:719
agora::media::MediaRecorderConfiguration::streamType
MediaRecorderStreamType streamType
Definition: AgoraMediaBase.h:1445
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_BEFORE_MIXING
@ AUDIO_FRAME_POSITION_BEFORE_MIXING
Definition: AgoraMediaBase.h:865
agora::media::base::IAudioFrameObserver
Definition: AgoraMediaBase.h:388
agora::media::MediaRecorderConfiguration::storagePath
const char * storagePath
Definition: AgoraMediaBase.h:1437
agora::media::AudioSpectrumData
Definition: AgoraMediaBase.h:1041
agora::media::base::VideoFrame::width
int width
Definition: AgoraMediaBase.h:671
agora::media::RecorderInfo::durationMs
unsigned int durationMs
Definition: AgoraMediaBase.h:1474
agora::media::base::VideoFrame::renderTimeMs
int64_t renderTimeMs
Definition: AgoraMediaBase.h:710
agora::media::base::ExternalVideoFrame::metadata_size
int metadata_size
Definition: AgoraMediaBase.h:632
agora::media::base::AudioPcmFrame::samples_per_channel_
size_t samples_per_channel_
Definition: AgoraMediaBase.h:317
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:819
agora::media::base::ExternalVideoFrame::textureId
int textureId
Definition: AgoraMediaBase.h:618
agora::media::IAudioFrameObserverBase::AudioFrame::type
AUDIO_FRAME_TYPE type
Definition: AgoraMediaBase.h:811
agora::media::IVideoEncodedFrameObserver
Definition: AgoraMediaBase.h:1115
agora::media::IAudioFrameObserverBase::AudioFrame::samplesPerChannel
int samplesPerChannel
Definition: AgoraMediaBase.h:815
agora::media::IVideoFrameObserver::getMirrorApplied
virtual bool getMirrorApplied()
Definition: AgoraMediaBase.h:1300
agora::media::IAudioSpectrumObserver::onLocalAudioSpectrum
virtual bool onLocalAudioSpectrum(const AudioSpectrumData &data)=0
agora::media::base::AudioEncodedFrameInfo
Definition: AgoraMediaBase.h:278
agora::media::IMediaRecorderObserver::onRecorderInfoUpdated
virtual void onRecorderInfoUpdated(const RecorderInfo &info)=0
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_RECORD
@ AUDIO_FRAME_POSITION_RECORD
Definition: AgoraMediaBase.h:859
agora::media::base::VideoFrame::vStride
int vStride
Definition: AgoraMediaBase.h:687
agora::media::ContentInspectConfig
Definition: AgoraMediaBase.h:230
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_MIXED
@ AUDIO_FRAME_POSITION_MIXED
Definition: AgoraMediaBase.h:862
agora::media::base::AudioPcmFrame
Definition: AgoraMediaBase.h:295
agora::media::IVideoFrameObserver::onCaptureVideoFrame
virtual bool onCaptureVideoFrame(VideoFrame &videoFrame)=0
agora::media::IAudioFrameObserverBase::AudioParams::sample_rate
int sample_rate
Definition: AgoraMediaBase.h:880
agora::media::base::VideoFrame::uBuffer
uint8_t * uBuffer
Definition: AgoraMediaBase.h:695
agora::media::IAudioFrameObserverBase::onPlaybackAudioFrame
virtual bool onPlaybackAudioFrame(const char *channelId, AudioFrame &audioFrame)=0
agora::media::base::ExternalVideoFrame::EGL_CONTEXT10
@ EGL_CONTEXT10
Definition: AgoraMediaBase.h:526
agora::media::UserAudioSpectrumInfo::uid
agora::rtc::uid_t uid
Definition: AgoraMediaBase.h:1060
agora::media::base::ExternalVideoFrame::format
VIDEO_PIXEL_FORMAT format
Definition: AgoraMediaBase.h:558
agora::media::base::ExternalVideoFrame::stride
int stride
Definition: AgoraMediaBase.h:567
agora::media::IVideoFrameObserver::onSecondaryPreEncodeCameraVideoFrame
virtual bool onSecondaryPreEncodeCameraVideoFrame(VideoFrame &videoFrame)=0
agora::media::base::ExternalVideoFrame::eglType
EGL_CONTEXT_TYPE eglType
Definition: AgoraMediaBase.h:614