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 
39 struct EncodedVideoFrameInfo;
40 
41 
45 enum VIDEO_SOURCE_TYPE {
48  VIDEO_SOURCE_CAMERA_PRIMARY = 0,
49  VIDEO_SOURCE_CAMERA = VIDEO_SOURCE_CAMERA_PRIMARY,
52  VIDEO_SOURCE_CAMERA_SECONDARY = 1,
55  VIDEO_SOURCE_SCREEN_PRIMARY = 2,
56  VIDEO_SOURCE_SCREEN = VIDEO_SOURCE_SCREEN_PRIMARY,
59  VIDEO_SOURCE_SCREEN_SECONDARY = 3,
62  VIDEO_SOURCE_CUSTOM = 4,
65  VIDEO_SOURCE_MEDIA_PLAYER = 5,
68  VIDEO_SOURCE_RTC_IMAGE_PNG = 6,
71  VIDEO_SOURCE_RTC_IMAGE_JPEG = 7,
74  VIDEO_SOURCE_RTC_IMAGE_GIF = 8,
77  VIDEO_SOURCE_REMOTE = 9,
80  VIDEO_SOURCE_TRANSCODED = 10,
81 
84  VIDEO_SOURCE_CAMERA_THIRD = 11,
87  VIDEO_SOURCE_CAMERA_FOURTH = 12,
90  VIDEO_SOURCE_SCREEN_THIRD = 13,
93  VIDEO_SOURCE_SCREEN_FOURTH = 14,
94 
95  VIDEO_SOURCE_UNKNOWN = 100
96 };
97 
101 enum AudioRoute
102 {
106  ROUTE_DEFAULT = -1,
110  ROUTE_HEADSET = 0,
114  ROUTE_EARPIECE = 1,
118  ROUTE_HEADSETNOMIC = 2,
122  ROUTE_SPEAKERPHONE = 3,
126  ROUTE_LOUDSPEAKER = 4,
130  ROUTE_HEADSETBLUETOOTH = 5,
134  ROUTE_USB = 6,
138  ROUTE_HDMI = 7,
142  ROUTE_DISPLAYPORT = 8,
146  ROUTE_AIRPLAY = 9,
147 };
148 
152 enum BYTES_PER_SAMPLE {
156  TWO_BYTES_PER_SAMPLE = 2,
157 };
158 
160  int sample_rate;
161  size_t channels;
162  size_t frames_per_buffer;
163 
165  : sample_rate(0),
166  channels(0),
167  frames_per_buffer(0) {}
168 };
169 
173 enum RAW_AUDIO_FRAME_OP_MODE_TYPE {
177  RAW_AUDIO_FRAME_OP_MODE_READ_ONLY = 0,
178 
182  RAW_AUDIO_FRAME_OP_MODE_READ_WRITE = 2,
183 };
184 
185 } // namespace rtc
186 
187 namespace media {
191 enum MEDIA_SOURCE_TYPE {
195  AUDIO_PLAYOUT_SOURCE = 0,
199  AUDIO_RECORDING_SOURCE = 1,
203  PRIMARY_CAMERA_SOURCE = 2,
207  SECONDARY_CAMERA_SOURCE = 3,
211  PRIMARY_SCREEN_SOURCE = 4,
215  SECONDARY_SCREEN_SOURCE = 5,
219  CUSTOM_VIDEO_SOURCE = 6,
223  MEDIA_PLAYER_SOURCE = 7,
227  RTC_IMAGE_PNG_SOURCE = 8,
231  RTC_IMAGE_JPEG_SOURCE = 9,
235  RTC_IMAGE_GIF_SOURCE = 10,
239  REMOTE_VIDEO_SOURCE = 11,
243  TRANSCODED_VIDEO_SOURCE = 12,
247  UNKNOWN_MEDIA_SOURCE = 100
248 };
251 #define MAX_CONTENT_INSPECT_MODULE_COUNT 32
252 enum CONTENT_INSPECT_RESULT {
253  CONTENT_INSPECT_NEUTRAL = 1,
254  CONTENT_INSPECT_SEXY = 2,
255  CONTENT_INSPECT_PORN = 3,
256 };
257 
258 enum CONTENT_INSPECT_TYPE {
262 CONTENT_INSPECT_INVALID = 0,
266 CONTENT_INSPECT_MODERATION = 1,
270 CONTENT_INSPECT_SUPERVISION = 2
271 };
272 
277  CONTENT_INSPECT_TYPE type;
281  unsigned int interval;
283  type = CONTENT_INSPECT_INVALID;
284  interval = 0;
285  }
286 };
290  const char* extraInfo;
291 
295  ContentInspectModule modules[MAX_CONTENT_INSPECT_MODULE_COUNT];
299  ContentInspectConfig& operator=(const ContentInspectConfig& rth)
300  {
301  extraInfo = rth.extraInfo;
302  moduleCount = rth.moduleCount;
303  memcpy(&modules, &rth.modules, MAX_CONTENT_INSPECT_MODULE_COUNT * sizeof(ContentInspectModule));
304  return *this;
305  }
306  ContentInspectConfig() :extraInfo(NULL), moduleCount(0){}
307 };
308 
309 namespace base {
310 
311 typedef void* view_t;
312 
313 typedef const char* user_id_t;
314 
315 static const uint8_t kMaxCodecNameLength = 50;
316 
325  uint32_t timestamp;
326  // Audio level indication.
327  uint8_t audioLevelIndication;
328  PacketOptions()
329  : timestamp(0),
330  audioLevelIndication(127) {}
331 };
332 
341  uint64_t sendTs;
345  uint8_t codec;
347  : sendTs(0),
348  codec(0) {}
349 };
350 
359  // Stereo, 32 kHz, 60 ms (2 * 32 * 60)
366  kMaxDataSizeSamples = 3840,
368  kMaxDataSizeBytes = kMaxDataSizeSamples * sizeof(int16_t),
369  };
370 
385  rtc::BYTES_PER_SAMPLE bytes_per_sample;
387  int16_t data_[kMaxDataSizeSamples];
388 
389  AudioPcmFrame& operator=(const AudioPcmFrame& src) {
390  if(this == &src) {
391  return *this;
392  }
393 
394  this->capture_timestamp = src.capture_timestamp;
395  this->samples_per_channel_ = src.samples_per_channel_;
396  this->sample_rate_hz_ = src.sample_rate_hz_;
397  this->bytes_per_sample = src.bytes_per_sample;
398  this->num_channels_ = src.num_channels_;
399 
400  size_t length = src.samples_per_channel_ * src.num_channels_;
401  if (length > kMaxDataSizeSamples) {
402  length = kMaxDataSizeSamples;
403  }
404 
405  memcpy(this->data_, src.data_, length * sizeof(int16_t));
406 
407  return *this;
408  }
409 
410  AudioPcmFrame()
411  : capture_timestamp(0),
413  sample_rate_hz_(0),
414  num_channels_(0),
415  bytes_per_sample(rtc::TWO_BYTES_PER_SAMPLE) {
416  memset(data_, 0, sizeof(data_));
417  }
418 
419  AudioPcmFrame(const AudioPcmFrame& src)
425  size_t length = src.samples_per_channel_ * src.num_channels_;
426  if (length > kMaxDataSizeSamples) {
427  length = kMaxDataSizeSamples;
428  }
429 
430  memcpy(this->data_, src.data_, length * sizeof(int16_t));
431  }
432 };
433 
436 enum AUDIO_DUAL_MONO_MODE {
438  AUDIO_DUAL_MONO_STEREO = 0,
440  AUDIO_DUAL_MONO_L = 1,
442  AUDIO_DUAL_MONO_R = 2,
444  AUDIO_DUAL_MONO_MIX = 3
445 };
446 
450 enum VIDEO_PIXEL_FORMAT {
454  VIDEO_PIXEL_DEFAULT = 0,
458  VIDEO_PIXEL_I420 = 1,
462  VIDEO_PIXEL_BGRA = 2,
466  VIDEO_PIXEL_NV21 = 3,
470  VIDEO_PIXEL_RGBA = 4,
474  VIDEO_PIXEL_NV12 = 8,
478  VIDEO_TEXTURE_2D = 10,
482  VIDEO_TEXTURE_OES = 11,
483  /*
484  12: pixel format for iOS CVPixelBuffer NV12
485  */
486  VIDEO_CVPIXEL_NV12 = 12,
487  /*
488  13: pixel format for iOS CVPixelBuffer I420
489  */
490  VIDEO_CVPIXEL_I420 = 13,
491  /*
492  14: pixel format for iOS CVPixelBuffer BGRA
493  */
494  VIDEO_CVPIXEL_BGRA = 14,
498  VIDEO_PIXEL_I422 = 16,
499 };
500 
504 enum RENDER_MODE_TYPE {
509  RENDER_MODE_HIDDEN = 1,
515  RENDER_MODE_FIT = 2,
520  RENDER_MODE_ADAPTIVE __deprecated = 3,
521 };
522 
526 enum CAMERA_VIDEO_SOURCE_TYPE {
530  CAMERA_SOURCE_FRONT = 0,
534  CAMERA_SOURCE_BACK = 1,
538  VIDEO_SOURCE_UNSPECIFIED = 2,
539 };
540 
547  format(VIDEO_PIXEL_DEFAULT),
548  buffer(NULL),
549  stride(0),
550  height(0),
551  cropLeft(0),
552  cropTop(0),
553  cropRight(0),
554  cropBottom(0),
555  rotation(0),
556  timestamp(0),
557  eglContext(NULL),
559  textureId(0),
560  metadata_buffer(NULL),
561  metadata_size(0),
562  alphaBuffer(NULL){}
563 
576  };
577 
594  };
595 
603  VIDEO_PIXEL_FORMAT format;
607  void* buffer;
612  int stride;
616  int height;
621  int cropLeft;
626  int cropTop;
641  int rotation;
649  long long timestamp;
655  void *eglContext;
667  float matrix[16];
672  uint8_t* metadata_buffer;
683  uint8_t* alphaBuffer;
684 };
685 
689 struct VideoFrame {
690  VideoFrame():
691  type(VIDEO_PIXEL_DEFAULT),
692  width(0),
693  height(0),
694  yStride(0),
695  uStride(0),
696  vStride(0),
697  yBuffer(NULL),
698  uBuffer(NULL),
699  vBuffer(NULL),
700  rotation(0),
701  renderTimeMs(0),
702  avsync_type(0),
703  metadata_buffer(NULL),
704  metadata_size(0),
705  sharedContext(0),
706  textureId(0),
707  alphaBuffer(NULL),
708  pixelBuffer(NULL){
709  memset(matrix, 0, sizeof(matrix));
710  }
714  VIDEO_PIXEL_FORMAT type;
718  int width;
722  int height;
726  int yStride;
730  int uStride;
734  int vStride;
738  uint8_t* yBuffer;
742  uint8_t* uBuffer;
746  uint8_t* vBuffer;
750  int rotation;
757  int64_t renderTimeMs;
766  uint8_t* metadata_buffer;
783  float matrix[16];
789  uint8_t* alphaBuffer;
793  void* pixelBuffer;
794 };
795 
800  public:
808  virtual void onFrame(const VideoFrame* frame) = 0;
809  virtual ~IVideoFrameObserver() {}
810  virtual bool isExternal() { return true; }
811  virtual VIDEO_PIXEL_FORMAT getVideoFormatPreference() { return VIDEO_PIXEL_DEFAULT; }
812 };
813 
814 enum MEDIA_PLAYER_SOURCE_TYPE {
820  MEDIA_PLAYER_SOURCE_DEFAULT,
826  MEDIA_PLAYER_SOURCE_FULL_FEATURED,
831  MEDIA_PLAYER_SOURCE_SIMPLE,
832 };
833 
834 enum VIDEO_MODULE_POSITION {
835  POSITION_POST_CAPTURER = 1 << 0,
836  POSITION_PRE_RENDERER = 1 << 1,
837  POSITION_PRE_ENCODER = 1 << 2,
838 };
839 
840 } // namespace base
841 
846  public:
855  virtual void onFrame(agora::media::base::AudioPcmFrame* frame) = 0;
856  virtual ~IAudioPcmFrameSink() {}
857 };
858 
863  public:
872  };
873  enum { MAX_HANDLE_TIME_CNT = 10 };
877  struct AudioFrame {
889  agora::rtc::BYTES_PER_SAMPLE bytesPerSample;
895  int channels;
906  void* buffer;
914  int64_t renderTimeMs;
926  int64_t presentationMs;
927 
930  bytesPerSample(rtc::TWO_BYTES_PER_SAMPLE),
931  channels(0),
932  samplesPerSec(0),
933  buffer(NULL),
934  renderTimeMs(0),
935  avsync_type(0),
936  presentationMs(0) {}
937  };
938 
940  AUDIO_FRAME_POSITION_NONE = 0x0000,
956  };
957 
958  struct AudioParams {
968 
969  /* The number of audio channels, which can be set as either of the following values:
970 
971  - `1`: Mono (Default)
972  - `2`: Stereo
973  */
974  int channels;
975 
976  /* The use mode of the audio data. See AgoraAudioRawFrameOperationMode.
977  */
978  rtc::RAW_AUDIO_FRAME_OP_MODE_TYPE mode;
979 
984 
985  AudioParams() : sample_rate(0), channels(0), mode(rtc::RAW_AUDIO_FRAME_OP_MODE_READ_ONLY), samples_per_call(0) {}
986  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) {}
987  };
988 
989  public:
990  virtual ~IAudioFrameObserverBase() {}
991 
1000  virtual bool onRecordAudioFrame(const char* channelId, AudioFrame& audioFrame) = 0;
1009  virtual bool onPlaybackAudioFrame(const char* channelId, AudioFrame& audioFrame) = 0;
1018  virtual bool onMixedAudioFrame(const char* channelId, AudioFrame& audioFrame) = 0;
1026  virtual bool onEarMonitoringAudioFrame(AudioFrame& audioFrame) = 0;
1036  virtual bool onPlaybackAudioFrameBeforeMixing(const char* channelId, base::user_id_t userId, AudioFrame& audioFrame) {
1037  (void) channelId;
1038  (void) userId;
1039  (void) audioFrame;
1040  return true;
1041  }
1042 
1059 
1072 
1084 
1096 
1108 };
1109 
1114  public:
1125  virtual bool onPlaybackAudioFrameBeforeMixing(const char* channelId, rtc::uid_t uid, AudioFrame& audioFrame) = 0;
1126 };
1127 
1132  const float *audioSpectrumData;
1137 
1139  AudioSpectrumData(const float *data, int length) :
1140  audioSpectrumData(data), dataLength(length) {}
1141 };
1142 
1147  agora::rtc::uid_t uid;
1152 
1153  UserAudioSpectrumInfo () : uid(0), spectrumData() {}
1154  UserAudioSpectrumInfo(agora::rtc::uid_t _uid, const float *data, int length) :
1155  uid(_uid) { spectrumData.audioSpectrumData = data; spectrumData.dataLength = length; }
1156 };
1157 
1162 public:
1163  virtual ~IAudioSpectrumObserver() {}
1164 
1177  virtual bool onLocalAudioSpectrum(const AudioSpectrumData& data) = 0;
1178 
1196  virtual bool onRemoteAudioSpectrum(const UserAudioSpectrumInfo * spectrums, unsigned int spectrumNumber) = 0;
1197 };
1198 
1203  public:
1214  virtual bool onEncodedVideoFrameReceived(rtc::uid_t uid, const uint8_t* imageBuffer, size_t length,
1215  const rtc::EncodedVideoFrameInfo& videoEncodedFrameInfo) = 0;
1216 
1217  virtual ~IVideoEncodedFrameObserver() {}
1218 };
1219 
1224  public:
1235  PROCESS_MODE_READ_ONLY, // Observer works as a pure renderer and will not modify the original frame.
1241  PROCESS_MODE_READ_WRITE, // Observer works as a filter that will process the video frame and affect the following frame processing in SDK.
1242  };
1243 
1244  public:
1245  virtual ~IVideoFrameObserver() {}
1246 
1267  virtual bool onCaptureVideoFrame(agora::rtc::VIDEO_SOURCE_TYPE sourceType, VideoFrame& videoFrame) = 0;
1268 
1290  virtual bool onPreEncodeVideoFrame(agora::rtc::VIDEO_SOURCE_TYPE sourceType, VideoFrame& videoFrame) = 0;
1291 
1312  virtual bool onMediaPlayerVideoFrame(VideoFrame& videoFrame, int mediaPlayerId) = 0;
1313 
1333  virtual bool onRenderVideoFrame(const char* channelId, rtc::uid_t remoteUid, VideoFrame& videoFrame) = 0;
1334 
1335  virtual bool onTranscodedVideoFrame(VideoFrame& videoFrame) = 0;
1336 
1345  return PROCESS_MODE_READ_ONLY;
1346  }
1347 
1362  virtual base::VIDEO_PIXEL_FORMAT getVideoFormatPreference() { return base::VIDEO_PIXEL_DEFAULT; }
1363 
1378  virtual bool getRotationApplied() { return false; }
1379 
1394  virtual bool getMirrorApplied() { return false; }
1395 
1413  virtual uint32_t getObservedFramePosition() {
1414  return base::POSITION_POST_CAPTURER | base::POSITION_PRE_RENDERER;
1415  }
1416 
1424  virtual bool isExternal() { return true; }
1425 };
1426 
1430 enum EXTERNAL_VIDEO_SOURCE_TYPE {
1434  VIDEO_FRAME = 0,
1438  ENCODED_VIDEO_FRAME,
1439 };
1440 
1446 enum MediaRecorderContainerFormat {
1450  FORMAT_MP4 = 1,
1451 };
1457 enum MediaRecorderStreamType {
1461  STREAM_TYPE_AUDIO = 0x01,
1465  STREAM_TYPE_VIDEO = 0x02,
1469  STREAM_TYPE_BOTH = STREAM_TYPE_AUDIO | STREAM_TYPE_VIDEO,
1470 };
1476 enum RecorderState {
1480  RECORDER_STATE_ERROR = -1,
1484  RECORDER_STATE_START = 2,
1488  RECORDER_STATE_STOP = 3,
1489 };
1495 enum RecorderErrorCode {
1499  RECORDER_ERROR_NONE = 0,
1503  RECORDER_ERROR_WRITE_FAILED = 1,
1507  RECORDER_ERROR_NO_STREAM = 2,
1511  RECORDER_ERROR_OVER_MAX_DURATION = 3,
1515  RECORDER_ERROR_CONFIG_CHANGED = 4,
1516 };
1531  const char* storagePath;
1535  MediaRecorderContainerFormat containerFormat;
1539  MediaRecorderStreamType streamType;
1551 
1552  MediaRecorderConfiguration() : storagePath(NULL), containerFormat(FORMAT_MP4), streamType(STREAM_TYPE_BOTH), maxDurationMs(120000), recorderInfoUpdateInterval(0) {}
1553  MediaRecorderConfiguration(const char* path, MediaRecorderContainerFormat format, MediaRecorderStreamType type, int duration, int interval) : storagePath(path), containerFormat(format), streamType(type), maxDurationMs(duration), recorderInfoUpdateInterval(interval) {}
1554 };
1564  const char* fileName;
1568  unsigned int durationMs;
1572  unsigned int fileSize;
1573 
1574  RecorderInfo() : fileName(NULL), durationMs(0), fileSize(0) {}
1575  RecorderInfo(const char* name, unsigned int dur, unsigned int size) : fileName(name), durationMs(dur), fileSize(size) {}
1576 };
1577 
1578 
1580  public:
1594  virtual void onRecorderStateChanged(const char* channelId, rtc::uid_t uid, RecorderState state, RecorderErrorCode error) = 0;
1609  virtual void onRecorderInfoUpdated(const char* channelId, rtc::uid_t uid, const RecorderInfo& info) = 0;
1610  virtual ~IMediaRecorderObserver() {}
1611 };
1612 } // namespace media
1613 } // namespace agora
agora::media::IVideoFrameObserver::PROCESS_MODE_READ_ONLY
@ PROCESS_MODE_READ_ONLY
Definition: AgoraMediaBase.h:1235
agora::media::base::VideoFrame
Definition: AgoraMediaBase.h:689
agora::media::base::ExternalVideoFrame::cropBottom
int cropBottom
Definition: AgoraMediaBase.h:636
agora::media::base::VideoFrame::metadata_size
int metadata_size
Definition: AgoraMediaBase.h:771
agora::media::AudioSpectrumData::audioSpectrumData
const float * audioSpectrumData
Definition: AgoraMediaBase.h:1132
agora::media::IAudioFrameObserverBase::onEarMonitoringAudioFrame
virtual bool onEarMonitoringAudioFrame(AudioFrame &audioFrame)=0
agora::media::base::ExternalVideoFrame::matrix
float matrix[16]
Definition: AgoraMediaBase.h:667
agora::media::IAudioPcmFrameSink
Definition: AgoraMediaBase.h:845
agora::media::IMediaRecorderObserver
Definition: AgoraMediaBase.h:1579
agora::media::IAudioFrameObserverBase
Definition: AgoraMediaBase.h:862
agora::media::ContentInspectConfig::modules
ContentInspectModule modules[MAX_CONTENT_INSPECT_MODULE_COUNT]
Definition: AgoraMediaBase.h:295
agora::media::base::VideoFrame::uStride
int uStride
Definition: AgoraMediaBase.h:730
agora::media::IAudioFrameObserverBase::FRAME_TYPE_PCM16
@ FRAME_TYPE_PCM16
Definition: AgoraMediaBase.h:871
agora::media::base::VideoFrame::alphaBuffer
uint8_t * alphaBuffer
Definition: AgoraMediaBase.h:789
agora::media::base::VideoFrame::height
int height
Definition: AgoraMediaBase.h:722
agora::media::base::AudioPcmFrame::data_
int16_t data_[kMaxDataSizeSamples]
Definition: AgoraMediaBase.h:387
agora::media::IAudioFrameObserverBase::onRecordAudioFrame
virtual bool onRecordAudioFrame(const char *channelId, AudioFrame &audioFrame)=0
agora::media::MediaRecorderConfiguration::maxDurationMs
int maxDurationMs
Definition: AgoraMediaBase.h:1543
agora::media::IAudioSpectrumObserver
Definition: AgoraMediaBase.h:1161
agora::rtc::AudioParameters
Definition: AgoraMediaBase.h:159
agora::media::IAudioFrameObserverBase::AudioFrame::renderTimeMs
int64_t renderTimeMs
Definition: AgoraMediaBase.h:914
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_RAW_DATA
@ VIDEO_BUFFER_RAW_DATA
Definition: AgoraMediaBase.h:585
agora::media::IAudioFrameObserverBase::getPlaybackAudioParams
virtual AudioParams getPlaybackAudioParams()=0
agora::media::base::ExternalVideoFrame::buffer
void * buffer
Definition: AgoraMediaBase.h:607
agora::media::IAudioFrameObserverBase::AudioFrame::channels
int channels
Definition: AgoraMediaBase.h:895
agora::media::IVideoFrameObserver::getVideoFormatPreference
virtual base::VIDEO_PIXEL_FORMAT getVideoFormatPreference()
Definition: AgoraMediaBase.h:1362
agora::rtc::EncodedVideoFrameInfo
Definition: AgoraBase.h:1544
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_TYPE
VIDEO_BUFFER_TYPE
Definition: AgoraMediaBase.h:581
agora::media::base::IVideoFrameObserver
Definition: AgoraMediaBase.h:799
agora::media::IVideoFrameObserver::getVideoFrameProcessMode
virtual VIDEO_FRAME_PROCESS_MODE getVideoFrameProcessMode()
Definition: AgoraMediaBase.h:1344
agora::media::IVideoFrameObserver
Definition: AgoraMediaBase.h:1223
agora::media::IAudioFrameObserverBase::AudioFrame
Definition: AgoraMediaBase.h:877
agora::media::base::AudioEncodedFrameInfo::codec
uint8_t codec
Definition: AgoraMediaBase.h:345
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:1550
agora::media::IAudioFrameObserver
Definition: AgoraMediaBase.h:1113
agora::media::IAudioFrameObserverBase::getEarMonitoringAudioParams
virtual AudioParams getEarMonitoringAudioParams()=0
agora::media::base::VideoFrame::rotation
int rotation
Definition: AgoraMediaBase.h:750
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:358
agora::media::base::ExternalVideoFrame::eglContext
void * eglContext
Definition: AgoraMediaBase.h:655
agora::media::base::ExternalVideoFrame::cropRight
int cropRight
Definition: AgoraMediaBase.h:631
agora::media::IAudioFrameObserverBase::getRecordAudioParams
virtual AudioParams getRecordAudioParams()=0
agora::media::base::VideoFrame::textureId
int textureId
Definition: AgoraMediaBase.h:779
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_ARRAY
@ VIDEO_BUFFER_ARRAY
Definition: AgoraMediaBase.h:589
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_TEXTURE
@ VIDEO_BUFFER_TEXTURE
Definition: AgoraMediaBase.h:593
agora::media::IAudioFrameObserverBase::AudioFrame::presentationMs
int64_t presentationMs
Definition: AgoraMediaBase.h:926
agora::media::base::VideoFrame::avsync_type
int avsync_type
Definition: AgoraMediaBase.h:761
agora::media::base::VideoFrame::matrix
float matrix[16]
Definition: AgoraMediaBase.h:783
agora::media::base::ExternalVideoFrame::cropLeft
int cropLeft
Definition: AgoraMediaBase.h:621
agora::media::IAudioFrameObserverBase::AudioFrame::samplesPerSec
int samplesPerSec
Definition: AgoraMediaBase.h:899
agora::media::ContentInspectModule
Definition: AgoraMediaBase.h:273
agora::media::IAudioFrameObserverBase::AudioFrame::buffer
void * buffer
Definition: AgoraMediaBase.h:906
agora::media::IAudioFrameObserverBase::onPlaybackAudioFrameBeforeMixing
virtual bool onPlaybackAudioFrameBeforeMixing(const char *channelId, base::user_id_t userId, AudioFrame &audioFrame)
Definition: AgoraMediaBase.h:1036
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:544
agora::media::base::AudioEncodedFrameInfo::sendTs
uint64_t sendTs
Definition: AgoraMediaBase.h:341
agora::media::ContentInspectConfig::moduleCount
int moduleCount
Definition: AgoraMediaBase.h:298
agora::media::base::VideoFrame::type
VIDEO_PIXEL_FORMAT type
Definition: AgoraMediaBase.h:714
agora::media::base::AudioPcmFrame::capture_timestamp
int64_t capture_timestamp
Definition: AgoraMediaBase.h:373
agora::media::base::ExternalVideoFrame::timestamp
long long timestamp
Definition: AgoraMediaBase.h:649
agora::media::base::AudioPcmFrame::sample_rate_hz_
int sample_rate_hz_
Definition: AgoraMediaBase.h:379
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION
AUDIO_FRAME_POSITION
Definition: AgoraMediaBase.h:939
agora::media::base::ExternalVideoFrame::height
int height
Definition: AgoraMediaBase.h:616
agora::media::base::VideoFrame::sharedContext
void * sharedContext
Definition: AgoraMediaBase.h:775
agora::media::base::ExternalVideoFrame::rotation
int rotation
Definition: AgoraMediaBase.h:641
agora::media::RecorderInfo
Definition: AgoraMediaBase.h:1560
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:1151
agora::media::IAudioFrameObserverBase::AudioParams::samples_per_call
int samples_per_call
Definition: AgoraMediaBase.h:983
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_PLAYBACK
@ AUDIO_FRAME_POSITION_PLAYBACK
Definition: AgoraMediaBase.h:943
agora::media::base::PacketOptions
Definition: AgoraMediaBase.h:321
agora::media::base::PacketOptions::timestamp
uint32_t timestamp
Definition: AgoraMediaBase.h:325
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_TYPE
AUDIO_FRAME_TYPE
Definition: AgoraMediaBase.h:867
agora::media::base::VideoFrame::yBuffer
uint8_t * yBuffer
Definition: AgoraMediaBase.h:738
agora::media::base::AudioPcmFrame::bytes_per_sample
rtc::BYTES_PER_SAMPLE bytes_per_sample
Definition: AgoraMediaBase.h:385
agora::media::UserAudioSpectrumInfo
Definition: AgoraMediaBase.h:1143
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_EAR_MONITORING
@ AUDIO_FRAME_POSITION_EAR_MONITORING
Definition: AgoraMediaBase.h:955
agora::media::RecorderInfo::fileName
const char * fileName
Definition: AgoraMediaBase.h:1564
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:1241
agora::media::IVideoFrameObserver::isExternal
virtual bool isExternal()
Definition: AgoraMediaBase.h:1424
agora::media::ContentInspectModule::interval
unsigned int interval
Definition: AgoraMediaBase.h:281
agora::media::IVideoFrameObserver::getObservedFramePosition
virtual uint32_t getObservedFramePosition()
Definition: AgoraMediaBase.h:1413
agora::media::base::VideoFrame::yStride
int yStride
Definition: AgoraMediaBase.h:726
agora::media::base::ExternalVideoFrame::alphaBuffer
uint8_t * alphaBuffer
Definition: AgoraMediaBase.h:683
agora::media::base::ExternalVideoFrame::metadata_buffer
uint8_t * metadata_buffer
Definition: AgoraMediaBase.h:672
agora::media::ContentInspectModule::type
CONTENT_INSPECT_TYPE type
Definition: AgoraMediaBase.h:277
agora::media::MediaRecorderConfiguration::containerFormat
MediaRecorderContainerFormat containerFormat
Definition: AgoraMediaBase.h:1535
agora::media::base::ExternalVideoFrame::EGL_CONTEXT14
@ EGL_CONTEXT14
Definition: AgoraMediaBase.h:575
agora::media::RecorderInfo::fileSize
unsigned int fileSize
Definition: AgoraMediaBase.h:1572
agora::media::base::ExternalVideoFrame::cropTop
int cropTop
Definition: AgoraMediaBase.h:626
agora::media::base::ExternalVideoFrame::type
VIDEO_BUFFER_TYPE type
Definition: AgoraMediaBase.h:599
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:1378
agora::media::base::VideoFrame::vBuffer
uint8_t * vBuffer
Definition: AgoraMediaBase.h:746
agora::media::AudioSpectrumData::dataLength
int dataLength
Definition: AgoraMediaBase.h:1136
agora::media::base::ExternalVideoFrame::EGL_CONTEXT_TYPE
EGL_CONTEXT_TYPE
Definition: AgoraMediaBase.h:567
agora::media::IAudioFrameObserverBase::onMixedAudioFrame
virtual bool onMixedAudioFrame(const char *channelId, AudioFrame &audioFrame)=0
agora::media::IAudioFrameObserverBase::AudioParams
Definition: AgoraMediaBase.h:958
agora::media::base::AudioPcmFrame::num_channels_
size_t num_channels_
Definition: AgoraMediaBase.h:382
agora::media::IAudioFrameObserverBase::AudioFrame::avsync_type
int avsync_type
Definition: AgoraMediaBase.h:918
agora::media::IAudioFrameObserverBase::getObservedAudioFramePosition
virtual int getObservedAudioFramePosition()=0
agora::media::MediaRecorderConfiguration
Definition: AgoraMediaBase.h:1522
agora::media::base::VideoFrame::metadata_buffer
uint8_t * metadata_buffer
Definition: AgoraMediaBase.h:766
agora::media::MediaRecorderConfiguration::streamType
MediaRecorderStreamType streamType
Definition: AgoraMediaBase.h:1539
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_BEFORE_MIXING
@ AUDIO_FRAME_POSITION_BEFORE_MIXING
Definition: AgoraMediaBase.h:952
agora::media::MediaRecorderConfiguration::storagePath
const char * storagePath
Definition: AgoraMediaBase.h:1531
agora::media::AudioSpectrumData
Definition: AgoraMediaBase.h:1128
agora::media::base::VideoFrame::width
int width
Definition: AgoraMediaBase.h:718
agora::media::RecorderInfo::durationMs
unsigned int durationMs
Definition: AgoraMediaBase.h:1568
agora::media::base::VideoFrame::renderTimeMs
int64_t renderTimeMs
Definition: AgoraMediaBase.h:757
agora::media::base::ExternalVideoFrame::metadata_size
int metadata_size
Definition: AgoraMediaBase.h:677
agora::media::base::AudioPcmFrame::samples_per_channel_
size_t samples_per_channel_
Definition: AgoraMediaBase.h:376
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:889
agora::media::base::ExternalVideoFrame::textureId
int textureId
Definition: AgoraMediaBase.h:663
agora::media::base::VideoFrame::pixelBuffer
void * pixelBuffer
Definition: AgoraMediaBase.h:793
agora::media::IAudioFrameObserverBase::AudioFrame::type
AUDIO_FRAME_TYPE type
Definition: AgoraMediaBase.h:881
agora::media::IAudioPcmFrameSink::onFrame
virtual void onFrame(agora::media::base::AudioPcmFrame *frame)=0
agora::media::IVideoEncodedFrameObserver
Definition: AgoraMediaBase.h:1202
agora::media::IAudioFrameObserverBase::AudioFrame::samplesPerChannel
int samplesPerChannel
Definition: AgoraMediaBase.h:885
agora::media::IVideoFrameObserver::getMirrorApplied
virtual bool getMirrorApplied()
Definition: AgoraMediaBase.h:1394
agora::media::IAudioSpectrumObserver::onLocalAudioSpectrum
virtual bool onLocalAudioSpectrum(const AudioSpectrumData &data)=0
agora::media::base::AudioEncodedFrameInfo
Definition: AgoraMediaBase.h:337
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_RECORD
@ AUDIO_FRAME_POSITION_RECORD
Definition: AgoraMediaBase.h:946
agora::media::base::VideoFrame::vStride
int vStride
Definition: AgoraMediaBase.h:734
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:289
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_MIXED
@ AUDIO_FRAME_POSITION_MIXED
Definition: AgoraMediaBase.h:949
agora::media::base::AudioPcmFrame
Definition: AgoraMediaBase.h:354
agora::media::IAudioFrameObserverBase::AudioParams::sample_rate
int sample_rate
Definition: AgoraMediaBase.h:967
agora::media::base::VideoFrame::uBuffer
uint8_t * uBuffer
Definition: AgoraMediaBase.h:742
agora::media::IAudioFrameObserverBase::onPlaybackAudioFrame
virtual bool onPlaybackAudioFrame(const char *channelId, AudioFrame &audioFrame)=0
agora::media::base::ExternalVideoFrame::EGL_CONTEXT10
@ EGL_CONTEXT10
Definition: AgoraMediaBase.h:571
agora::media::UserAudioSpectrumInfo::uid
agora::rtc::uid_t uid
Definition: AgoraMediaBase.h:1147
agora::media::IVideoFrameObserver::VIDEO_FRAME_PROCESS_MODE
VIDEO_FRAME_PROCESS_MODE
Definition: AgoraMediaBase.h:1229
agora::media::base::ExternalVideoFrame::format
VIDEO_PIXEL_FORMAT format
Definition: AgoraMediaBase.h:603
agora::media::base::ExternalVideoFrame::stride
int stride
Definition: AgoraMediaBase.h:612
agora::media::base::ExternalVideoFrame::eglType
EGL_CONTEXT_TYPE eglType
Definition: AgoraMediaBase.h:659