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 INVALID_TRACK_ID = 0xffffffff;
35 static const unsigned int DEFAULT_CONNECTION_ID = 0;
36 static const unsigned int DUMMY_CONNECTION_ID = (std::numeric_limits<unsigned int>::max)();
37 
38 static const int kAdmMaxDeviceNameSize = 128;
39 static const int kAdmMaxGuidSize = 128;
40 
41 
42 struct EncodedVideoFrameInfo;
43 
44 
48 enum VIDEO_SOURCE_TYPE {
51  VIDEO_SOURCE_CAMERA_PRIMARY = 0,
52  VIDEO_SOURCE_CAMERA = VIDEO_SOURCE_CAMERA_PRIMARY,
55  VIDEO_SOURCE_CAMERA_SECONDARY = 1,
58  VIDEO_SOURCE_SCREEN_PRIMARY = 2,
59  VIDEO_SOURCE_SCREEN = VIDEO_SOURCE_SCREEN_PRIMARY,
62  VIDEO_SOURCE_SCREEN_SECONDARY = 3,
65  VIDEO_SOURCE_CUSTOM = 4,
68  VIDEO_SOURCE_MEDIA_PLAYER = 5,
71  VIDEO_SOURCE_RTC_IMAGE_PNG = 6,
74  VIDEO_SOURCE_RTC_IMAGE_JPEG = 7,
77  VIDEO_SOURCE_RTC_IMAGE_GIF = 8,
80  VIDEO_SOURCE_REMOTE = 9,
83  VIDEO_SOURCE_TRANSCODED = 10,
84 
87  VIDEO_SOURCE_CAMERA_THIRD = 11,
90  VIDEO_SOURCE_CAMERA_FOURTH = 12,
93  VIDEO_SOURCE_SCREEN_THIRD = 13,
96  VIDEO_SOURCE_SCREEN_FOURTH = 14,
99  VIDEO_SOURCE_SPEECH_DRIVEN = 15,
100 
101  VIDEO_SOURCE_UNKNOWN = 100
102 };
103 
107 enum AudioRoute
108 {
112  ROUTE_DEFAULT = -1,
116  ROUTE_HEADSET = 0,
120  ROUTE_EARPIECE = 1,
124  ROUTE_HEADSETNOMIC = 2,
128  ROUTE_SPEAKERPHONE = 3,
132  ROUTE_LOUDSPEAKER = 4,
136  ROUTE_HEADSETBLUETOOTH = 5,
140  ROUTE_USB = 6,
144  ROUTE_HDMI = 7,
148  ROUTE_DISPLAYPORT = 8,
152  ROUTE_AIRPLAY = 9,
156  ROUTE_VIRTUAL = 10,
160  ROUTE_CONTINUITY = 11,
161 };
162 
166 enum BYTES_PER_SAMPLE {
170  TWO_BYTES_PER_SAMPLE = 2,
171 };
172 
174  int sample_rate;
175  size_t channels;
176  size_t frames_per_buffer;
177 
179  : sample_rate(0),
180  channels(0),
181  frames_per_buffer(0) {}
182 };
183 
187 enum RAW_AUDIO_FRAME_OP_MODE_TYPE {
191  RAW_AUDIO_FRAME_OP_MODE_READ_ONLY = 0,
192 
196  RAW_AUDIO_FRAME_OP_MODE_READ_WRITE = 2,
197 };
198 
203 enum TRACK_AUDIO_MIXED_POLICY_TYPE {
206  TRACK_AUDIO_MIXED_LOCAL = 1 << 0,
209  TRACK_AUDIO_MIXED_REMOTE = 1 << 1,
210 };
211 
222  char deviceName[kAdmMaxDeviceNameSize];
226  char deviceId[kAdmMaxGuidSize];
239 
243  AudioRoute routing;
244 
246  isPlayoutDevice(true),
247  routing(ROUTE_DEFAULT){
248  memset(deviceName, 0, sizeof(deviceName));
249  memset(deviceId, 0, sizeof(deviceId));
250  }
251 
254  routing(other.routing){
255  memcpy(deviceName, other.deviceName, sizeof(deviceName));
256  memcpy(deviceId, other.deviceId, sizeof(deviceId));
257  }
258 
259  AudioDeviceInfo& operator=(const AudioDeviceInfo& other) {
260  isCurrentSelected = other.isCurrentSelected;
261  isPlayoutDevice = other.isPlayoutDevice;
262  routing = other.routing;
263  memcpy(deviceName, other.deviceName, sizeof(deviceName));
264  memcpy(deviceId, other.deviceId, sizeof(deviceId));
265  return *this;
266  }
267 };
268 
269 } // namespace rtc
270 
271 namespace media {
275 enum MEDIA_SOURCE_TYPE {
279  AUDIO_PLAYOUT_SOURCE = 0,
283  AUDIO_RECORDING_SOURCE = 1,
287  PRIMARY_CAMERA_SOURCE = 2,
291  SECONDARY_CAMERA_SOURCE = 3,
295  PRIMARY_SCREEN_SOURCE = 4,
299  SECONDARY_SCREEN_SOURCE = 5,
303  CUSTOM_VIDEO_SOURCE = 6,
307  MEDIA_PLAYER_SOURCE = 7,
311  RTC_IMAGE_PNG_SOURCE = 8,
315  RTC_IMAGE_JPEG_SOURCE = 9,
319  RTC_IMAGE_GIF_SOURCE = 10,
323  REMOTE_VIDEO_SOURCE = 11,
327  TRANSCODED_VIDEO_SOURCE = 12,
331  SPEECH_DRIVEN_VIDEO_SOURCE = 13,
335  UNKNOWN_MEDIA_SOURCE = 100
336 };
339 #define MAX_CONTENT_INSPECT_MODULE_COUNT 32
340 enum CONTENT_INSPECT_RESULT {
341  CONTENT_INSPECT_NEUTRAL = 1,
342  CONTENT_INSPECT_SEXY = 2,
343  CONTENT_INSPECT_PORN = 3,
344 };
345 
346 enum CONTENT_INSPECT_TYPE {
350 CONTENT_INSPECT_INVALID = 0,
355 CONTENT_INSPECT_MODERATION __deprecated = 1,
359 CONTENT_INSPECT_SUPERVISION = 2,
363 CONTENT_INSPECT_IMAGE_MODERATION = 3
364 };
365 
370  CONTENT_INSPECT_TYPE type;
374  unsigned int interval;
376  type = CONTENT_INSPECT_INVALID;
377  interval = 0;
378  }
379 };
383  const char* extraInfo;
387  const char* serverConfig;
391  ContentInspectModule modules[MAX_CONTENT_INSPECT_MODULE_COUNT];
395  ContentInspectConfig& operator=(const ContentInspectConfig& rth)
396  {
397  extraInfo = rth.extraInfo;
399  moduleCount = rth.moduleCount;
400  memcpy(&modules, &rth.modules, MAX_CONTENT_INSPECT_MODULE_COUNT * sizeof(ContentInspectModule));
401  return *this;
402  }
403  ContentInspectConfig() :extraInfo(NULL), serverConfig(NULL), moduleCount(0){}
404 };
405 
406 namespace base {
407 
408 typedef void* view_t;
409 
410 typedef const char* user_id_t;
411 
412 static const uint8_t kMaxCodecNameLength = 50;
413 
422  uint32_t timestamp;
423  // Audio level indication.
424  uint8_t audioLevelIndication;
425  PacketOptions()
426  : timestamp(0),
427  audioLevelIndication(127) {}
428 };
429 
438  uint64_t sendTs;
442  uint8_t codec;
444  : sendTs(0),
445  codec(0) {}
446 };
447 
456  // Stereo, 32 kHz, 60 ms (2 * 32 * 60)
463  kMaxDataSizeSamples = 3840,
465  kMaxDataSizeBytes = kMaxDataSizeSamples * sizeof(int16_t),
466  };
467 
482  rtc::BYTES_PER_SAMPLE bytes_per_sample;
484  int16_t data_[kMaxDataSizeSamples];
485 
486  AudioPcmFrame& operator=(const AudioPcmFrame& src) {
487  if(this == &src) {
488  return *this;
489  }
490 
491  this->capture_timestamp = src.capture_timestamp;
492  this->samples_per_channel_ = src.samples_per_channel_;
493  this->sample_rate_hz_ = src.sample_rate_hz_;
494  this->bytes_per_sample = src.bytes_per_sample;
495  this->num_channels_ = src.num_channels_;
496 
497  size_t length = src.samples_per_channel_ * src.num_channels_;
498  if (length > kMaxDataSizeSamples) {
499  length = kMaxDataSizeSamples;
500  }
501 
502  memcpy(this->data_, src.data_, length * sizeof(int16_t));
503 
504  return *this;
505  }
506 
507  AudioPcmFrame()
508  : capture_timestamp(0),
510  sample_rate_hz_(0),
511  num_channels_(0),
512  bytes_per_sample(rtc::TWO_BYTES_PER_SAMPLE) {
513  memset(data_, 0, sizeof(data_));
514  }
515 
516  AudioPcmFrame(const AudioPcmFrame& src)
522  size_t length = src.samples_per_channel_ * src.num_channels_;
523  if (length > kMaxDataSizeSamples) {
524  length = kMaxDataSizeSamples;
525  }
526 
527  memcpy(this->data_, src.data_, length * sizeof(int16_t));
528  }
529 };
530 
533 enum AUDIO_DUAL_MONO_MODE {
535  AUDIO_DUAL_MONO_STEREO = 0,
537  AUDIO_DUAL_MONO_L = 1,
539  AUDIO_DUAL_MONO_R = 2,
541  AUDIO_DUAL_MONO_MIX = 3
542 };
543 
547 enum VIDEO_PIXEL_FORMAT {
551  VIDEO_PIXEL_DEFAULT = 0,
555  VIDEO_PIXEL_I420 = 1,
559  VIDEO_PIXEL_BGRA = 2,
563  VIDEO_PIXEL_NV21 = 3,
567  VIDEO_PIXEL_RGBA = 4,
571  VIDEO_PIXEL_NV12 = 8,
575  VIDEO_TEXTURE_2D = 10,
579  VIDEO_TEXTURE_OES = 11,
580  /*
581  12: pixel format for iOS CVPixelBuffer NV12
582  */
583  VIDEO_CVPIXEL_NV12 = 12,
584  /*
585  13: pixel format for iOS CVPixelBuffer I420
586  */
587  VIDEO_CVPIXEL_I420 = 13,
588  /*
589  14: pixel format for iOS CVPixelBuffer BGRA
590  */
591  VIDEO_CVPIXEL_BGRA = 14,
595  VIDEO_PIXEL_I422 = 16,
599  VIDEO_TEXTURE_ID3D11TEXTURE2D = 17,
603  VIDEO_PIXEL_I010 = 18,
604 };
605 
609 enum RENDER_MODE_TYPE {
614  RENDER_MODE_HIDDEN = 1,
620  RENDER_MODE_FIT = 2,
625  RENDER_MODE_ADAPTIVE __deprecated = 3,
626 };
627 
631 enum CAMERA_VIDEO_SOURCE_TYPE {
635  CAMERA_SOURCE_FRONT = 0,
639  CAMERA_SOURCE_BACK = 1,
643  VIDEO_SOURCE_UNSPECIFIED = 2,
644 };
645 
651  public:
652  enum META_INFO_KEY {
653  KEY_FACE_CAPTURE = 0,
654  };
655  virtual ~IVideoFrameMetaInfo() {};
656  virtual const char* getMetaInfoStr(META_INFO_KEY key) const = 0;
657 };
658 
665  format(VIDEO_PIXEL_DEFAULT),
666  buffer(NULL),
667  stride(0),
668  height(0),
669  cropLeft(0),
670  cropTop(0),
671  cropRight(0),
672  cropBottom(0),
673  rotation(0),
674  timestamp(0),
675  eglContext(NULL),
677  textureId(0),
678  metadata_buffer(NULL),
679  metadata_size(0),
680  alphaBuffer(NULL),
681  fillAlphaBuffer(false),
682  d3d11_texture_2d(NULL),
684 
697  };
698 
715  };
716 
724  VIDEO_PIXEL_FORMAT format;
728  void* buffer;
733  int stride;
737  int height;
742  int cropLeft;
747  int cropTop;
762  int rotation;
770  long long timestamp;
776  void *eglContext;
788  float matrix[16];
793  uint8_t* metadata_buffer;
805  uint8_t* alphaBuffer;
812 
817 
822 };
823 
827 struct VideoFrame {
828  VideoFrame():
829  type(VIDEO_PIXEL_DEFAULT),
830  width(0),
831  height(0),
832  yStride(0),
833  uStride(0),
834  vStride(0),
835  yBuffer(NULL),
836  uBuffer(NULL),
837  vBuffer(NULL),
838  rotation(0),
839  renderTimeMs(0),
840  avsync_type(0),
841  metadata_buffer(NULL),
842  metadata_size(0),
843  sharedContext(0),
844  textureId(0),
845  d3d11Texture2d(NULL),
846  alphaBuffer(NULL),
847  pixelBuffer(NULL),
848  metaInfo(NULL){
849  memset(matrix, 0, sizeof(matrix));
850  }
854  VIDEO_PIXEL_FORMAT type;
858  int width;
862  int height;
866  int yStride;
870  int uStride;
874  int vStride;
878  uint8_t* yBuffer;
882  uint8_t* uBuffer;
886  uint8_t* vBuffer;
890  int rotation;
897  int64_t renderTimeMs;
906  uint8_t* metadata_buffer;
927  float matrix[16];
934  uint8_t* alphaBuffer;
938  void* pixelBuffer;
943 };
944 
949  public:
957  virtual void onFrame(const VideoFrame* frame) = 0;
958  virtual ~IVideoFrameObserver() {}
959  virtual bool isExternal() { return true; }
960  virtual VIDEO_PIXEL_FORMAT getVideoFormatPreference() { return VIDEO_PIXEL_DEFAULT; }
961 };
962 
963 enum MEDIA_PLAYER_SOURCE_TYPE {
969  MEDIA_PLAYER_SOURCE_DEFAULT,
975  MEDIA_PLAYER_SOURCE_FULL_FEATURED,
980  MEDIA_PLAYER_SOURCE_SIMPLE,
981 };
982 
983 enum VIDEO_MODULE_POSITION {
984  POSITION_POST_CAPTURER = 1 << 0,
985  POSITION_PRE_RENDERER = 1 << 1,
986  POSITION_PRE_ENCODER = 1 << 2,
987 };
988 
989 } // namespace base
990 
995  public:
1004  virtual void onFrame(agora::media::base::AudioPcmFrame* frame) = 0;
1005  virtual ~IAudioPcmFrameSink() {}
1006 };
1007 
1012  public:
1021  };
1022  enum { MAX_HANDLE_TIME_CNT = 10 };
1026  struct AudioFrame {
1038  agora::rtc::BYTES_PER_SAMPLE bytesPerSample;
1055  void* buffer;
1063  int64_t renderTimeMs;
1083  uint32_t rtpTimestamp;
1084 
1086  samplesPerChannel(0),
1087  bytesPerSample(rtc::TWO_BYTES_PER_SAMPLE),
1088  channels(0),
1089  samplesPerSec(0),
1090  buffer(NULL),
1091  renderTimeMs(0),
1092  avsync_type(0),
1093  presentationMs(0),
1094  audioTrackNumber(0),
1095  rtpTimestamp(0) {}
1096  };
1097 
1099  AUDIO_FRAME_POSITION_NONE = 0x0000,
1115  };
1116 
1117  struct AudioParams {
1127 
1128  /* The number of audio channels, which can be set as either of the following values:
1129 
1130  - `1`: Mono (Default)
1131  - `2`: Stereo
1132  */
1133  int channels;
1134 
1135  /* The use mode of the audio data. See AgoraAudioRawFrameOperationMode.
1136  */
1137  rtc::RAW_AUDIO_FRAME_OP_MODE_TYPE mode;
1138 
1143 
1144  AudioParams() : sample_rate(0), channels(0), mode(rtc::RAW_AUDIO_FRAME_OP_MODE_READ_ONLY), samples_per_call(0) {}
1145  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) {}
1146  };
1147 
1148  public:
1149  virtual ~IAudioFrameObserverBase() {}
1150 
1159  virtual bool onRecordAudioFrame(const char* channelId, AudioFrame& audioFrame) = 0;
1168  virtual bool onPlaybackAudioFrame(const char* channelId, AudioFrame& audioFrame) = 0;
1177  virtual bool onMixedAudioFrame(const char* channelId, AudioFrame& audioFrame) = 0;
1185  virtual bool onEarMonitoringAudioFrame(AudioFrame& audioFrame) = 0;
1195  virtual bool onPlaybackAudioFrameBeforeMixing(const char* channelId, base::user_id_t userId, AudioFrame& audioFrame) {
1196  (void) channelId;
1197  (void) userId;
1198  (void) audioFrame;
1199  return true;
1200  }
1201 
1218 
1231 
1243 
1255 
1267 };
1268 
1273  public:
1284  virtual bool onPlaybackAudioFrameBeforeMixing(const char* channelId, rtc::uid_t uid, AudioFrame& audioFrame) = 0;
1285 };
1286 
1291  const float *audioSpectrumData;
1296 
1298  AudioSpectrumData(const float *data, int length) :
1299  audioSpectrumData(data), dataLength(length) {}
1300 };
1301 
1306  agora::rtc::uid_t uid;
1311 
1312  UserAudioSpectrumInfo () : uid(0), spectrumData() {}
1313  UserAudioSpectrumInfo(agora::rtc::uid_t _uid, const float *data, int length) :
1314  uid(_uid) { spectrumData.audioSpectrumData = data; spectrumData.dataLength = length; }
1315 };
1316 
1321 public:
1322  virtual ~IAudioSpectrumObserver() {}
1323 
1336  virtual bool onLocalAudioSpectrum(const AudioSpectrumData& data) = 0;
1337 
1355  virtual bool onRemoteAudioSpectrum(const UserAudioSpectrumInfo * spectrums, unsigned int spectrumNumber) = 0;
1356 };
1357 
1362  public:
1373  virtual bool onEncodedVideoFrameReceived(rtc::uid_t uid, const uint8_t* imageBuffer, size_t length,
1374  const rtc::EncodedVideoFrameInfo& videoEncodedFrameInfo) = 0;
1375 
1376  virtual ~IVideoEncodedFrameObserver() {}
1377 };
1378 
1383  public:
1394  PROCESS_MODE_READ_ONLY, // Observer works as a pure renderer and will not modify the original frame.
1400  PROCESS_MODE_READ_WRITE, // Observer works as a filter that will process the video frame and affect the following frame processing in SDK.
1401  };
1402 
1403  public:
1404  virtual ~IVideoFrameObserver() {}
1405 
1426  virtual bool onCaptureVideoFrame(agora::rtc::VIDEO_SOURCE_TYPE sourceType, VideoFrame& videoFrame) = 0;
1427 
1449  virtual bool onPreEncodeVideoFrame(agora::rtc::VIDEO_SOURCE_TYPE sourceType, VideoFrame& videoFrame) = 0;
1450 
1471  virtual bool onMediaPlayerVideoFrame(VideoFrame& videoFrame, int mediaPlayerId) = 0;
1472 
1492  virtual bool onRenderVideoFrame(const char* channelId, rtc::uid_t remoteUid, VideoFrame& videoFrame) = 0;
1493 
1494  virtual bool onTranscodedVideoFrame(VideoFrame& videoFrame) = 0;
1495 
1504  return PROCESS_MODE_READ_ONLY;
1505  }
1506 
1521  virtual base::VIDEO_PIXEL_FORMAT getVideoFormatPreference() { return base::VIDEO_PIXEL_DEFAULT; }
1522 
1537  virtual bool getRotationApplied() { return false; }
1538 
1553  virtual bool getMirrorApplied() { return false; }
1554 
1572  virtual uint32_t getObservedFramePosition() {
1573  return base::POSITION_POST_CAPTURER | base::POSITION_PRE_RENDERER;
1574  }
1575 
1583  virtual bool isExternal() { return true; }
1584 };
1585 
1589 enum EXTERNAL_VIDEO_SOURCE_TYPE {
1593  VIDEO_FRAME = 0,
1597  ENCODED_VIDEO_FRAME,
1598 };
1599 
1605 enum MediaRecorderContainerFormat {
1609  FORMAT_MP4 = 1,
1610 };
1616 enum MediaRecorderStreamType {
1620  STREAM_TYPE_AUDIO = 0x01,
1624  STREAM_TYPE_VIDEO = 0x02,
1628  STREAM_TYPE_BOTH = STREAM_TYPE_AUDIO | STREAM_TYPE_VIDEO,
1629 };
1635 enum RecorderState {
1639  RECORDER_STATE_ERROR = -1,
1643  RECORDER_STATE_START = 2,
1647  RECORDER_STATE_STOP = 3,
1648 };
1654 enum RecorderErrorCode {
1658  RECORDER_ERROR_NONE = 0,
1662  RECORDER_ERROR_WRITE_FAILED = 1,
1666  RECORDER_ERROR_NO_STREAM = 2,
1670  RECORDER_ERROR_OVER_MAX_DURATION = 3,
1674  RECORDER_ERROR_CONFIG_CHANGED = 4,
1675 };
1690  const char* storagePath;
1694  MediaRecorderContainerFormat containerFormat;
1698  MediaRecorderStreamType streamType;
1710 
1711  MediaRecorderConfiguration() : storagePath(NULL), containerFormat(FORMAT_MP4), streamType(STREAM_TYPE_BOTH), maxDurationMs(120000), recorderInfoUpdateInterval(0) {}
1712  MediaRecorderConfiguration(const char* path, MediaRecorderContainerFormat format, MediaRecorderStreamType type, int duration, int interval) : storagePath(path), containerFormat(format), streamType(type), maxDurationMs(duration), recorderInfoUpdateInterval(interval) {}
1713 };
1714 
1716 public:
1724  virtual bool onFaceInfo(const char* outFaceInfo) = 0;
1725 
1726  virtual ~IFaceInfoObserver() {}
1727 };
1728 
1738  const char* fileName;
1742  unsigned int durationMs;
1746  unsigned int fileSize;
1747 
1748  RecorderInfo() : fileName(NULL), durationMs(0), fileSize(0) {}
1749  RecorderInfo(const char* name, unsigned int dur, unsigned int size) : fileName(name), durationMs(dur), fileSize(size) {}
1750 };
1751 
1752 
1754  public:
1768  virtual void onRecorderStateChanged(const char* channelId, rtc::uid_t uid, RecorderState state, RecorderErrorCode error) = 0;
1783  virtual void onRecorderInfoUpdated(const char* channelId, rtc::uid_t uid, const RecorderInfo& info) = 0;
1784  virtual ~IMediaRecorderObserver() {}
1785 };
1786 } // namespace media
1787 } // namespace agora
agora::media::IVideoFrameObserver::PROCESS_MODE_READ_ONLY
@ PROCESS_MODE_READ_ONLY
Definition: AgoraMediaBase.h:1394
agora::media::base::VideoFrame
Definition: AgoraMediaBase.h:827
agora::media::base::ExternalVideoFrame::cropBottom
int cropBottom
Definition: AgoraMediaBase.h:757
agora::media::base::VideoFrame::metadata_size
int metadata_size
Definition: AgoraMediaBase.h:911
agora::media::AudioSpectrumData::audioSpectrumData
const float * audioSpectrumData
Definition: AgoraMediaBase.h:1291
agora::media::IAudioFrameObserverBase::onEarMonitoringAudioFrame
virtual bool onEarMonitoringAudioFrame(AudioFrame &audioFrame)=0
agora::media::base::ExternalVideoFrame::matrix
float matrix[16]
Definition: AgoraMediaBase.h:788
agora::media::IAudioPcmFrameSink
Definition: AgoraMediaBase.h:994
agora::media::IMediaRecorderObserver
Definition: AgoraMediaBase.h:1753
agora::media::IAudioFrameObserverBase
Definition: AgoraMediaBase.h:1011
agora::media::ContentInspectConfig::modules
ContentInspectModule modules[MAX_CONTENT_INSPECT_MODULE_COUNT]
Definition: AgoraMediaBase.h:391
agora::media::base::VideoFrame::uStride
int uStride
Definition: AgoraMediaBase.h:870
agora::rtc::AudioDeviceInfo::isPlayoutDevice
bool isPlayoutDevice
Definition: AgoraMediaBase.h:238
agora::media::IAudioFrameObserverBase::AudioFrame::rtpTimestamp
uint32_t rtpTimestamp
Definition: AgoraMediaBase.h:1083
agora::media::IAudioFrameObserverBase::FRAME_TYPE_PCM16
@ FRAME_TYPE_PCM16
Definition: AgoraMediaBase.h:1020
agora::media::IAudioFrameObserverBase::AudioFrame::audioTrackNumber
int audioTrackNumber
Definition: AgoraMediaBase.h:1079
agora::media::base::VideoFrame::alphaBuffer
uint8_t * alphaBuffer
Definition: AgoraMediaBase.h:934
agora::media::IFaceInfoObserver
Definition: AgoraMediaBase.h:1715
agora::media::base::VideoFrame::height
int height
Definition: AgoraMediaBase.h:862
agora::media::base::AudioPcmFrame::data_
int16_t data_[kMaxDataSizeSamples]
Definition: AgoraMediaBase.h:484
agora::media::IAudioFrameObserverBase::onRecordAudioFrame
virtual bool onRecordAudioFrame(const char *channelId, AudioFrame &audioFrame)=0
agora::media::MediaRecorderConfiguration::maxDurationMs
int maxDurationMs
Definition: AgoraMediaBase.h:1702
agora::media::IAudioSpectrumObserver
Definition: AgoraMediaBase.h:1320
agora::rtc::AudioParameters
Definition: AgoraMediaBase.h:173
agora::media::IAudioFrameObserverBase::AudioFrame::renderTimeMs
int64_t renderTimeMs
Definition: AgoraMediaBase.h:1063
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_RAW_DATA
@ VIDEO_BUFFER_RAW_DATA
Definition: AgoraMediaBase.h:706
agora::media::IAudioFrameObserverBase::getPlaybackAudioParams
virtual AudioParams getPlaybackAudioParams()=0
agora::rtc::AudioDeviceInfo::isCurrentSelected
bool isCurrentSelected
Definition: AgoraMediaBase.h:232
agora::media::base::ExternalVideoFrame::buffer
void * buffer
Definition: AgoraMediaBase.h:728
agora::media::IAudioFrameObserverBase::AudioFrame::channels
int channels
Definition: AgoraMediaBase.h:1044
agora::media::IVideoFrameObserver::getVideoFormatPreference
virtual base::VIDEO_PIXEL_FORMAT getVideoFormatPreference()
Definition: AgoraMediaBase.h:1521
agora::rtc::EncodedVideoFrameInfo
Definition: AgoraBase.h:1565
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_TYPE
VIDEO_BUFFER_TYPE
Definition: AgoraMediaBase.h:702
agora::media::ContentInspectConfig::serverConfig
const char * serverConfig
Definition: AgoraMediaBase.h:387
agora::media::base::IVideoFrameObserver
Definition: AgoraMediaBase.h:948
agora::media::IVideoFrameObserver::getVideoFrameProcessMode
virtual VIDEO_FRAME_PROCESS_MODE getVideoFrameProcessMode()
Definition: AgoraMediaBase.h:1503
agora::media::IVideoFrameObserver
Definition: AgoraMediaBase.h:1382
agora::media::IAudioFrameObserverBase::AudioFrame
Definition: AgoraMediaBase.h:1026
agora::media::base::AudioEncodedFrameInfo::codec
uint8_t codec
Definition: AgoraMediaBase.h:442
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:1709
agora::media::IAudioFrameObserver
Definition: AgoraMediaBase.h:1272
agora::media::IAudioFrameObserverBase::getEarMonitoringAudioParams
virtual AudioParams getEarMonitoringAudioParams()=0
agora::media::base::VideoFrame::d3d11Texture2d
void * d3d11Texture2d
Definition: AgoraMediaBase.h:923
agora::media::base::VideoFrame::rotation
int rotation
Definition: AgoraMediaBase.h:890
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:455
agora::media::base::ExternalVideoFrame::eglContext
void * eglContext
Definition: AgoraMediaBase.h:776
agora::media::base::VideoFrame::metaInfo
IVideoFrameMetaInfo * metaInfo
Definition: AgoraMediaBase.h:942
agora::media::base::ExternalVideoFrame::cropRight
int cropRight
Definition: AgoraMediaBase.h:752
agora::media::IAudioFrameObserverBase::getRecordAudioParams
virtual AudioParams getRecordAudioParams()=0
agora::media::base::VideoFrame::textureId
int textureId
Definition: AgoraMediaBase.h:919
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_ARRAY
@ VIDEO_BUFFER_ARRAY
Definition: AgoraMediaBase.h:710
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_TEXTURE
@ VIDEO_BUFFER_TEXTURE
Definition: AgoraMediaBase.h:714
agora::media::IAudioFrameObserverBase::AudioFrame::presentationMs
int64_t presentationMs
Definition: AgoraMediaBase.h:1075
agora::media::base::VideoFrame::avsync_type
int avsync_type
Definition: AgoraMediaBase.h:901
agora::media::base::VideoFrame::matrix
float matrix[16]
Definition: AgoraMediaBase.h:927
agora::media::base::ExternalVideoFrame::cropLeft
int cropLeft
Definition: AgoraMediaBase.h:742
agora::media::IAudioFrameObserverBase::AudioFrame::samplesPerSec
int samplesPerSec
Definition: AgoraMediaBase.h:1048
agora::media::ContentInspectModule
Definition: AgoraMediaBase.h:366
agora::media::IAudioFrameObserverBase::AudioFrame::buffer
void * buffer
Definition: AgoraMediaBase.h:1055
agora::media::IAudioFrameObserverBase::onPlaybackAudioFrameBeforeMixing
virtual bool onPlaybackAudioFrameBeforeMixing(const char *channelId, base::user_id_t userId, AudioFrame &audioFrame)
Definition: AgoraMediaBase.h:1195
agora::media::IAudioSpectrumObserver::onRemoteAudioSpectrum
virtual bool onRemoteAudioSpectrum(const UserAudioSpectrumInfo *spectrums, unsigned int spectrumNumber)=0
agora::media::IMediaRecorderObserver::onRecorderInfoUpdated
virtual void onRecorderInfoUpdated(const char *channelId, rtc::uid_t uid, const RecorderInfo &info)=0
agora::media::base::ExternalVideoFrame
Definition: AgoraMediaBase.h:662
agora::media::base::AudioEncodedFrameInfo::sendTs
uint64_t sendTs
Definition: AgoraMediaBase.h:438
agora::media::ContentInspectConfig::moduleCount
int moduleCount
Definition: AgoraMediaBase.h:394
agora::media::base::VideoFrame::type
VIDEO_PIXEL_FORMAT type
Definition: AgoraMediaBase.h:854
agora::media::base::AudioPcmFrame::capture_timestamp
int64_t capture_timestamp
Definition: AgoraMediaBase.h:470
agora::media::base::ExternalVideoFrame::timestamp
long long timestamp
Definition: AgoraMediaBase.h:770
agora::media::base::AudioPcmFrame::sample_rate_hz_
int sample_rate_hz_
Definition: AgoraMediaBase.h:476
agora::media::IFaceInfoObserver::onFaceInfo
virtual bool onFaceInfo(const char *outFaceInfo)=0
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION
AUDIO_FRAME_POSITION
Definition: AgoraMediaBase.h:1098
agora::media::base::ExternalVideoFrame::height
int height
Definition: AgoraMediaBase.h:737
agora::media::base::VideoFrame::sharedContext
void * sharedContext
Definition: AgoraMediaBase.h:915
agora::media::base::ExternalVideoFrame::rotation
int rotation
Definition: AgoraMediaBase.h:762
agora::media::RecorderInfo
Definition: AgoraMediaBase.h:1734
agora::media::base::ExternalVideoFrame::d3d11_texture_2d
void * d3d11_texture_2d
Definition: AgoraMediaBase.h:816
agora::media::IVideoFrameObserver::onCaptureVideoFrame
virtual bool onCaptureVideoFrame(agora::rtc::VIDEO_SOURCE_TYPE sourceType, VideoFrame &videoFrame)=0
agora::media::UserAudioSpectrumInfo::spectrumData
struct AudioSpectrumData spectrumData
Definition: AgoraMediaBase.h:1310
agora::media::IAudioFrameObserverBase::AudioParams::samples_per_call
int samples_per_call
Definition: AgoraMediaBase.h:1142
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_PLAYBACK
@ AUDIO_FRAME_POSITION_PLAYBACK
Definition: AgoraMediaBase.h:1102
agora::rtc::AudioDeviceInfo::routing
AudioRoute routing
Definition: AgoraMediaBase.h:243
agora::media::base::PacketOptions
Definition: AgoraMediaBase.h:418
agora::media::base::PacketOptions::timestamp
uint32_t timestamp
Definition: AgoraMediaBase.h:422
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_TYPE
AUDIO_FRAME_TYPE
Definition: AgoraMediaBase.h:1016
agora::media::base::VideoFrame::yBuffer
uint8_t * yBuffer
Definition: AgoraMediaBase.h:878
agora::media::base::AudioPcmFrame::bytes_per_sample
rtc::BYTES_PER_SAMPLE bytes_per_sample
Definition: AgoraMediaBase.h:482
agora::media::UserAudioSpectrumInfo
Definition: AgoraMediaBase.h:1302
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_EAR_MONITORING
@ AUDIO_FRAME_POSITION_EAR_MONITORING
Definition: AgoraMediaBase.h:1114
agora::media::RecorderInfo::fileName
const char * fileName
Definition: AgoraMediaBase.h:1738
agora::media::IVideoFrameObserver::onRenderVideoFrame
virtual bool onRenderVideoFrame(const char *channelId, rtc::uid_t remoteUid, VideoFrame &videoFrame)=0
agora::media::IVideoFrameObserver::PROCESS_MODE_READ_WRITE
@ PROCESS_MODE_READ_WRITE
Definition: AgoraMediaBase.h:1400
agora::media::IVideoFrameObserver::isExternal
virtual bool isExternal()
Definition: AgoraMediaBase.h:1583
agora::media::ContentInspectModule::interval
unsigned int interval
Definition: AgoraMediaBase.h:374
agora::media::IVideoFrameObserver::getObservedFramePosition
virtual uint32_t getObservedFramePosition()
Definition: AgoraMediaBase.h:1572
agora::media::base::VideoFrame::yStride
int yStride
Definition: AgoraMediaBase.h:866
agora::media::base::ExternalVideoFrame::alphaBuffer
uint8_t * alphaBuffer
Definition: AgoraMediaBase.h:805
agora::media::base::ExternalVideoFrame::metadata_buffer
uint8_t * metadata_buffer
Definition: AgoraMediaBase.h:793
agora::media::ContentInspectModule::type
CONTENT_INSPECT_TYPE type
Definition: AgoraMediaBase.h:370
agora::media::MediaRecorderConfiguration::containerFormat
MediaRecorderContainerFormat containerFormat
Definition: AgoraMediaBase.h:1694
agora::media::base::ExternalVideoFrame::EGL_CONTEXT14
@ EGL_CONTEXT14
Definition: AgoraMediaBase.h:696
agora::media::RecorderInfo::fileSize
unsigned int fileSize
Definition: AgoraMediaBase.h:1746
agora::media::base::ExternalVideoFrame::cropTop
int cropTop
Definition: AgoraMediaBase.h:747
agora::media::base::ExternalVideoFrame::type
VIDEO_BUFFER_TYPE type
Definition: AgoraMediaBase.h:720
agora::media::IVideoFrameObserver::onPreEncodeVideoFrame
virtual bool onPreEncodeVideoFrame(agora::rtc::VIDEO_SOURCE_TYPE sourceType, VideoFrame &videoFrame)=0
agora::media::IVideoFrameObserver::getRotationApplied
virtual bool getRotationApplied()
Definition: AgoraMediaBase.h:1537
agora::media::base::VideoFrame::vBuffer
uint8_t * vBuffer
Definition: AgoraMediaBase.h:886
agora::media::AudioSpectrumData::dataLength
int dataLength
Definition: AgoraMediaBase.h:1295
agora::media::base::ExternalVideoFrame::EGL_CONTEXT_TYPE
EGL_CONTEXT_TYPE
Definition: AgoraMediaBase.h:688
agora::media::IAudioFrameObserverBase::onMixedAudioFrame
virtual bool onMixedAudioFrame(const char *channelId, AudioFrame &audioFrame)=0
agora::media::IAudioFrameObserverBase::AudioParams
Definition: AgoraMediaBase.h:1117
agora::media::base::AudioPcmFrame::num_channels_
size_t num_channels_
Definition: AgoraMediaBase.h:479
agora::media::IAudioFrameObserverBase::AudioFrame::avsync_type
int avsync_type
Definition: AgoraMediaBase.h:1067
agora::media::IAudioFrameObserverBase::getObservedAudioFramePosition
virtual int getObservedAudioFramePosition()=0
agora::media::MediaRecorderConfiguration
Definition: AgoraMediaBase.h:1681
agora::media::base::VideoFrame::metadata_buffer
uint8_t * metadata_buffer
Definition: AgoraMediaBase.h:906
agora::media::MediaRecorderConfiguration::streamType
MediaRecorderStreamType streamType
Definition: AgoraMediaBase.h:1698
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_BEFORE_MIXING
@ AUDIO_FRAME_POSITION_BEFORE_MIXING
Definition: AgoraMediaBase.h:1111
agora::media::MediaRecorderConfiguration::storagePath
const char * storagePath
Definition: AgoraMediaBase.h:1690
agora::media::AudioSpectrumData
Definition: AgoraMediaBase.h:1287
agora::media::base::VideoFrame::width
int width
Definition: AgoraMediaBase.h:858
agora::media::RecorderInfo::durationMs
unsigned int durationMs
Definition: AgoraMediaBase.h:1742
agora::media::base::VideoFrame::renderTimeMs
int64_t renderTimeMs
Definition: AgoraMediaBase.h:897
agora::media::base::ExternalVideoFrame::metadata_size
int metadata_size
Definition: AgoraMediaBase.h:798
agora::media::base::AudioPcmFrame::samples_per_channel_
size_t samples_per_channel_
Definition: AgoraMediaBase.h:473
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:1038
agora::media::base::ExternalVideoFrame::textureId
int textureId
Definition: AgoraMediaBase.h:784
agora::media::base::VideoFrame::pixelBuffer
void * pixelBuffer
Definition: AgoraMediaBase.h:938
agora::media::IAudioFrameObserverBase::AudioFrame::type
AUDIO_FRAME_TYPE type
Definition: AgoraMediaBase.h:1030
agora::media::IAudioPcmFrameSink::onFrame
virtual void onFrame(agora::media::base::AudioPcmFrame *frame)=0
agora::media::IVideoEncodedFrameObserver
Definition: AgoraMediaBase.h:1361
agora::media::IAudioFrameObserverBase::AudioFrame::samplesPerChannel
int samplesPerChannel
Definition: AgoraMediaBase.h:1034
agora::rtc::AudioDeviceInfo::deviceName
char deviceName[kAdmMaxDeviceNameSize]
Definition: AgoraMediaBase.h:222
agora::media::IVideoFrameObserver::getMirrorApplied
virtual bool getMirrorApplied()
Definition: AgoraMediaBase.h:1553
agora::media::IAudioSpectrumObserver::onLocalAudioSpectrum
virtual bool onLocalAudioSpectrum(const AudioSpectrumData &data)=0
agora::media::base::AudioEncodedFrameInfo
Definition: AgoraMediaBase.h:434
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_RECORD
@ AUDIO_FRAME_POSITION_RECORD
Definition: AgoraMediaBase.h:1105
agora::media::base::ExternalVideoFrame::texture_slice_index
int texture_slice_index
Definition: AgoraMediaBase.h:821
agora::media::base::VideoFrame::vStride
int vStride
Definition: AgoraMediaBase.h:874
agora::media::IMediaRecorderObserver::onRecorderStateChanged
virtual void onRecorderStateChanged(const char *channelId, rtc::uid_t uid, RecorderState state, RecorderErrorCode error)=0
agora::media::ContentInspectConfig
Definition: AgoraMediaBase.h:382
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_MIXED
@ AUDIO_FRAME_POSITION_MIXED
Definition: AgoraMediaBase.h:1108
agora::media::base::AudioPcmFrame
Definition: AgoraMediaBase.h:451
agora::rtc::AudioDeviceInfo::deviceId
char deviceId[kAdmMaxGuidSize]
Definition: AgoraMediaBase.h:226
agora::media::base::ExternalVideoFrame::fillAlphaBuffer
bool fillAlphaBuffer
Definition: AgoraMediaBase.h:811
agora::media::IAudioFrameObserverBase::AudioParams::sample_rate
int sample_rate
Definition: AgoraMediaBase.h:1126
agora::rtc::AudioDeviceInfo
Definition: AgoraMediaBase.h:218
agora::media::base::VideoFrame::uBuffer
uint8_t * uBuffer
Definition: AgoraMediaBase.h:882
agora::media::IAudioFrameObserverBase::onPlaybackAudioFrame
virtual bool onPlaybackAudioFrame(const char *channelId, AudioFrame &audioFrame)=0
agora::media::base::ExternalVideoFrame::EGL_CONTEXT10
@ EGL_CONTEXT10
Definition: AgoraMediaBase.h:692
agora::media::base::IVideoFrameMetaInfo
Definition: AgoraMediaBase.h:650
agora::media::UserAudioSpectrumInfo::uid
agora::rtc::uid_t uid
Definition: AgoraMediaBase.h:1306
agora::media::IVideoFrameObserver::VIDEO_FRAME_PROCESS_MODE
VIDEO_FRAME_PROCESS_MODE
Definition: AgoraMediaBase.h:1388
agora::media::base::ExternalVideoFrame::format
VIDEO_PIXEL_FORMAT format
Definition: AgoraMediaBase.h:724
agora::media::base::ExternalVideoFrame::stride
int stride
Definition: AgoraMediaBase.h:733
agora::media::base::ExternalVideoFrame::eglType
EGL_CONTEXT_TYPE eglType
Definition: AgoraMediaBase.h:780