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,
267 CONTENT_INSPECT_MODERATION __deprecated = 1,
271 CONTENT_INSPECT_SUPERVISION = 2,
275 CONTENT_INSPECT_IMAGE_MODERATION = 3
276 };
277 
282  CONTENT_INSPECT_TYPE type;
286  unsigned int interval;
288  type = CONTENT_INSPECT_INVALID;
289  interval = 0;
290  }
291 };
295  const char* extraInfo;
299  const char* serverConfig;
303  ContentInspectModule modules[MAX_CONTENT_INSPECT_MODULE_COUNT];
307  ContentInspectConfig& operator=(const ContentInspectConfig& rth)
308  {
309  extraInfo = rth.extraInfo;
311  moduleCount = rth.moduleCount;
312  memcpy(&modules, &rth.modules, MAX_CONTENT_INSPECT_MODULE_COUNT * sizeof(ContentInspectModule));
313  return *this;
314  }
315  ContentInspectConfig() :extraInfo(NULL), serverConfig(NULL), moduleCount(0){}
316 };
317 
318 namespace base {
319 
320 typedef void* view_t;
321 
322 typedef const char* user_id_t;
323 
324 static const uint8_t kMaxCodecNameLength = 50;
325 
334  uint32_t timestamp;
335  // Audio level indication.
336  uint8_t audioLevelIndication;
337  PacketOptions()
338  : timestamp(0),
339  audioLevelIndication(127) {}
340 };
341 
350  uint64_t sendTs;
354  uint8_t codec;
356  : sendTs(0),
357  codec(0) {}
358 };
359 
368  // Stereo, 32 kHz, 60 ms (2 * 32 * 60)
375  kMaxDataSizeSamples = 3840,
377  kMaxDataSizeBytes = kMaxDataSizeSamples * sizeof(int16_t),
378  };
379 
394  rtc::BYTES_PER_SAMPLE bytes_per_sample;
396  int16_t data_[kMaxDataSizeSamples];
397 
398  AudioPcmFrame& operator=(const AudioPcmFrame& src) {
399  if(this == &src) {
400  return *this;
401  }
402 
403  this->capture_timestamp = src.capture_timestamp;
404  this->samples_per_channel_ = src.samples_per_channel_;
405  this->sample_rate_hz_ = src.sample_rate_hz_;
406  this->bytes_per_sample = src.bytes_per_sample;
407  this->num_channels_ = src.num_channels_;
408 
409  size_t length = src.samples_per_channel_ * src.num_channels_;
410  if (length > kMaxDataSizeSamples) {
411  length = kMaxDataSizeSamples;
412  }
413 
414  memcpy(this->data_, src.data_, length * sizeof(int16_t));
415 
416  return *this;
417  }
418 
419  AudioPcmFrame()
420  : capture_timestamp(0),
422  sample_rate_hz_(0),
423  num_channels_(0),
424  bytes_per_sample(rtc::TWO_BYTES_PER_SAMPLE) {
425  memset(data_, 0, sizeof(data_));
426  }
427 
428  AudioPcmFrame(const AudioPcmFrame& src)
434  size_t length = src.samples_per_channel_ * src.num_channels_;
435  if (length > kMaxDataSizeSamples) {
436  length = kMaxDataSizeSamples;
437  }
438 
439  memcpy(this->data_, src.data_, length * sizeof(int16_t));
440  }
441 };
442 
445 enum AUDIO_DUAL_MONO_MODE {
447  AUDIO_DUAL_MONO_STEREO = 0,
449  AUDIO_DUAL_MONO_L = 1,
451  AUDIO_DUAL_MONO_R = 2,
453  AUDIO_DUAL_MONO_MIX = 3
454 };
455 
459 enum VIDEO_PIXEL_FORMAT {
463  VIDEO_PIXEL_DEFAULT = 0,
467  VIDEO_PIXEL_I420 = 1,
471  VIDEO_PIXEL_BGRA = 2,
475  VIDEO_PIXEL_NV21 = 3,
479  VIDEO_PIXEL_RGBA = 4,
483  VIDEO_PIXEL_NV12 = 8,
487  VIDEO_TEXTURE_2D = 10,
491  VIDEO_TEXTURE_OES = 11,
492  /*
493  12: pixel format for iOS CVPixelBuffer NV12
494  */
495  VIDEO_CVPIXEL_NV12 = 12,
496  /*
497  13: pixel format for iOS CVPixelBuffer I420
498  */
499  VIDEO_CVPIXEL_I420 = 13,
500  /*
501  14: pixel format for iOS CVPixelBuffer BGRA
502  */
503  VIDEO_CVPIXEL_BGRA = 14,
507  VIDEO_PIXEL_I422 = 16,
511  VIDEO_TEXTURE_ID3D11TEXTURE2D = 17,
512 };
513 
517 enum RENDER_MODE_TYPE {
522  RENDER_MODE_HIDDEN = 1,
528  RENDER_MODE_FIT = 2,
533  RENDER_MODE_ADAPTIVE __deprecated = 3,
534 };
535 
539 enum CAMERA_VIDEO_SOURCE_TYPE {
543  CAMERA_SOURCE_FRONT = 0,
547  CAMERA_SOURCE_BACK = 1,
551  VIDEO_SOURCE_UNSPECIFIED = 2,
552 };
553 
560  format(VIDEO_PIXEL_DEFAULT),
561  buffer(NULL),
562  stride(0),
563  height(0),
564  cropLeft(0),
565  cropTop(0),
566  cropRight(0),
567  cropBottom(0),
568  rotation(0),
569  timestamp(0),
570  eglContext(NULL),
572  textureId(0),
573  metadata_buffer(NULL),
574  metadata_size(0),
575  alphaBuffer(NULL),
576  d3d11_texture_2d(NULL),
578 
591  };
592 
609  };
610 
618  VIDEO_PIXEL_FORMAT format;
622  void* buffer;
627  int stride;
631  int height;
636  int cropLeft;
641  int cropTop;
656  int rotation;
664  long long timestamp;
670  void *eglContext;
682  float matrix[16];
687  uint8_t* metadata_buffer;
698  uint8_t* alphaBuffer;
699 
704 
709 };
710 
714 struct VideoFrame {
715  VideoFrame():
716  type(VIDEO_PIXEL_DEFAULT),
717  width(0),
718  height(0),
719  yStride(0),
720  uStride(0),
721  vStride(0),
722  yBuffer(NULL),
723  uBuffer(NULL),
724  vBuffer(NULL),
725  rotation(0),
726  renderTimeMs(0),
727  avsync_type(0),
728  metadata_buffer(NULL),
729  metadata_size(0),
730  sharedContext(0),
731  textureId(0),
732  d3d11Texture2d(NULL),
733  alphaBuffer(NULL),
734  pixelBuffer(NULL){
735  memset(matrix, 0, sizeof(matrix));
736  }
740  VIDEO_PIXEL_FORMAT type;
744  int width;
748  int height;
752  int yStride;
756  int uStride;
760  int vStride;
764  uint8_t* yBuffer;
768  uint8_t* uBuffer;
772  uint8_t* vBuffer;
776  int rotation;
783  int64_t renderTimeMs;
792  uint8_t* metadata_buffer;
813  float matrix[16];
819  uint8_t* alphaBuffer;
823  void* pixelBuffer;
824 };
825 
830  public:
838  virtual void onFrame(const VideoFrame* frame) = 0;
839  virtual ~IVideoFrameObserver() {}
840  virtual bool isExternal() { return true; }
841  virtual VIDEO_PIXEL_FORMAT getVideoFormatPreference() { return VIDEO_PIXEL_DEFAULT; }
842 };
843 
844 enum MEDIA_PLAYER_SOURCE_TYPE {
850  MEDIA_PLAYER_SOURCE_DEFAULT,
856  MEDIA_PLAYER_SOURCE_FULL_FEATURED,
861  MEDIA_PLAYER_SOURCE_SIMPLE,
862 };
863 
864 enum VIDEO_MODULE_POSITION {
865  POSITION_POST_CAPTURER = 1 << 0,
866  POSITION_PRE_RENDERER = 1 << 1,
867  POSITION_PRE_ENCODER = 1 << 2,
868 };
869 
870 } // namespace base
871 
876  public:
885  virtual void onFrame(agora::media::base::AudioPcmFrame* frame) = 0;
886  virtual ~IAudioPcmFrameSink() {}
887 };
888 
893  public:
902  };
903  enum { MAX_HANDLE_TIME_CNT = 10 };
907  struct AudioFrame {
919  agora::rtc::BYTES_PER_SAMPLE bytesPerSample;
925  int channels;
936  void* buffer;
944  int64_t renderTimeMs;
956  int64_t presentationMs;
957 
960  bytesPerSample(rtc::TWO_BYTES_PER_SAMPLE),
961  channels(0),
962  samplesPerSec(0),
963  buffer(NULL),
964  renderTimeMs(0),
965  avsync_type(0),
966  presentationMs(0) {}
967  };
968 
970  AUDIO_FRAME_POSITION_NONE = 0x0000,
986  };
987 
988  struct AudioParams {
998 
999  /* The number of audio channels, which can be set as either of the following values:
1000 
1001  - `1`: Mono (Default)
1002  - `2`: Stereo
1003  */
1004  int channels;
1005 
1006  /* The use mode of the audio data. See AgoraAudioRawFrameOperationMode.
1007  */
1008  rtc::RAW_AUDIO_FRAME_OP_MODE_TYPE mode;
1009 
1014 
1015  AudioParams() : sample_rate(0), channels(0), mode(rtc::RAW_AUDIO_FRAME_OP_MODE_READ_ONLY), samples_per_call(0) {}
1016  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) {}
1017  };
1018 
1019  public:
1020  virtual ~IAudioFrameObserverBase() {}
1021 
1030  virtual bool onRecordAudioFrame(const char* channelId, AudioFrame& audioFrame) = 0;
1039  virtual bool onPlaybackAudioFrame(const char* channelId, AudioFrame& audioFrame) = 0;
1048  virtual bool onMixedAudioFrame(const char* channelId, AudioFrame& audioFrame) = 0;
1056  virtual bool onEarMonitoringAudioFrame(AudioFrame& audioFrame) = 0;
1066  virtual bool onPlaybackAudioFrameBeforeMixing(const char* channelId, base::user_id_t userId, AudioFrame& audioFrame) {
1067  (void) channelId;
1068  (void) userId;
1069  (void) audioFrame;
1070  return true;
1071  }
1072 
1089 
1102 
1114 
1126 
1138 };
1139 
1144  public:
1155  virtual bool onPlaybackAudioFrameBeforeMixing(const char* channelId, rtc::uid_t uid, AudioFrame& audioFrame) = 0;
1156 };
1157 
1162  const float *audioSpectrumData;
1167 
1169  AudioSpectrumData(const float *data, int length) :
1170  audioSpectrumData(data), dataLength(length) {}
1171 };
1172 
1177  agora::rtc::uid_t uid;
1182 
1183  UserAudioSpectrumInfo () : uid(0), spectrumData() {}
1184  UserAudioSpectrumInfo(agora::rtc::uid_t _uid, const float *data, int length) :
1185  uid(_uid) { spectrumData.audioSpectrumData = data; spectrumData.dataLength = length; }
1186 };
1187 
1192 public:
1193  virtual ~IAudioSpectrumObserver() {}
1194 
1207  virtual bool onLocalAudioSpectrum(const AudioSpectrumData& data) = 0;
1208 
1226  virtual bool onRemoteAudioSpectrum(const UserAudioSpectrumInfo * spectrums, unsigned int spectrumNumber) = 0;
1227 };
1228 
1233  public:
1244  virtual bool onEncodedVideoFrameReceived(rtc::uid_t uid, const uint8_t* imageBuffer, size_t length,
1245  const rtc::EncodedVideoFrameInfo& videoEncodedFrameInfo) = 0;
1246 
1247  virtual ~IVideoEncodedFrameObserver() {}
1248 };
1249 
1254  public:
1265  PROCESS_MODE_READ_ONLY, // Observer works as a pure renderer and will not modify the original frame.
1271  PROCESS_MODE_READ_WRITE, // Observer works as a filter that will process the video frame and affect the following frame processing in SDK.
1272  };
1273 
1274  public:
1275  virtual ~IVideoFrameObserver() {}
1276 
1297  virtual bool onCaptureVideoFrame(agora::rtc::VIDEO_SOURCE_TYPE sourceType, VideoFrame& videoFrame) = 0;
1298 
1320  virtual bool onPreEncodeVideoFrame(agora::rtc::VIDEO_SOURCE_TYPE sourceType, VideoFrame& videoFrame) = 0;
1321 
1342  virtual bool onMediaPlayerVideoFrame(VideoFrame& videoFrame, int mediaPlayerId) = 0;
1343 
1363  virtual bool onRenderVideoFrame(const char* channelId, rtc::uid_t remoteUid, VideoFrame& videoFrame) = 0;
1364 
1365  virtual bool onTranscodedVideoFrame(VideoFrame& videoFrame) = 0;
1366 
1375  return PROCESS_MODE_READ_ONLY;
1376  }
1377 
1392  virtual base::VIDEO_PIXEL_FORMAT getVideoFormatPreference() { return base::VIDEO_PIXEL_DEFAULT; }
1393 
1408  virtual bool getRotationApplied() { return false; }
1409 
1424  virtual bool getMirrorApplied() { return false; }
1425 
1443  virtual uint32_t getObservedFramePosition() {
1444  return base::POSITION_POST_CAPTURER | base::POSITION_PRE_RENDERER;
1445  }
1446 
1454  virtual bool isExternal() { return true; }
1455 };
1456 
1460 enum EXTERNAL_VIDEO_SOURCE_TYPE {
1464  VIDEO_FRAME = 0,
1468  ENCODED_VIDEO_FRAME,
1469 };
1470 
1476 enum MediaRecorderContainerFormat {
1480  FORMAT_MP4 = 1,
1481 };
1487 enum MediaRecorderStreamType {
1491  STREAM_TYPE_AUDIO = 0x01,
1495  STREAM_TYPE_VIDEO = 0x02,
1499  STREAM_TYPE_BOTH = STREAM_TYPE_AUDIO | STREAM_TYPE_VIDEO,
1500 };
1506 enum RecorderState {
1510  RECORDER_STATE_ERROR = -1,
1514  RECORDER_STATE_START = 2,
1518  RECORDER_STATE_STOP = 3,
1519 };
1525 enum RecorderErrorCode {
1529  RECORDER_ERROR_NONE = 0,
1533  RECORDER_ERROR_WRITE_FAILED = 1,
1537  RECORDER_ERROR_NO_STREAM = 2,
1541  RECORDER_ERROR_OVER_MAX_DURATION = 3,
1545  RECORDER_ERROR_CONFIG_CHANGED = 4,
1546 };
1561  const char* storagePath;
1565  MediaRecorderContainerFormat containerFormat;
1569  MediaRecorderStreamType streamType;
1581 
1582  MediaRecorderConfiguration() : storagePath(NULL), containerFormat(FORMAT_MP4), streamType(STREAM_TYPE_BOTH), maxDurationMs(120000), recorderInfoUpdateInterval(0) {}
1583  MediaRecorderConfiguration(const char* path, MediaRecorderContainerFormat format, MediaRecorderStreamType type, int duration, int interval) : storagePath(path), containerFormat(format), streamType(type), maxDurationMs(duration), recorderInfoUpdateInterval(interval) {}
1584 };
1594  const char* fileName;
1598  unsigned int durationMs;
1602  unsigned int fileSize;
1603 
1604  RecorderInfo() : fileName(NULL), durationMs(0), fileSize(0) {}
1605  RecorderInfo(const char* name, unsigned int dur, unsigned int size) : fileName(name), durationMs(dur), fileSize(size) {}
1606 };
1607 
1608 
1610  public:
1624  virtual void onRecorderStateChanged(const char* channelId, rtc::uid_t uid, RecorderState state, RecorderErrorCode error) = 0;
1639  virtual void onRecorderInfoUpdated(const char* channelId, rtc::uid_t uid, const RecorderInfo& info) = 0;
1640  virtual ~IMediaRecorderObserver() {}
1641 };
1642 } // namespace media
1643 } // namespace agora
agora::media::IVideoFrameObserver::PROCESS_MODE_READ_ONLY
@ PROCESS_MODE_READ_ONLY
Definition: AgoraMediaBase.h:1265
agora::media::base::VideoFrame
Definition: AgoraMediaBase.h:714
agora::media::base::ExternalVideoFrame::cropBottom
int cropBottom
Definition: AgoraMediaBase.h:651
agora::media::base::VideoFrame::metadata_size
int metadata_size
Definition: AgoraMediaBase.h:797
agora::media::AudioSpectrumData::audioSpectrumData
const float * audioSpectrumData
Definition: AgoraMediaBase.h:1162
agora::media::IAudioFrameObserverBase::onEarMonitoringAudioFrame
virtual bool onEarMonitoringAudioFrame(AudioFrame &audioFrame)=0
agora::media::base::ExternalVideoFrame::matrix
float matrix[16]
Definition: AgoraMediaBase.h:682
agora::media::IAudioPcmFrameSink
Definition: AgoraMediaBase.h:875
agora::media::IMediaRecorderObserver
Definition: AgoraMediaBase.h:1609
agora::media::IAudioFrameObserverBase
Definition: AgoraMediaBase.h:892
agora::media::ContentInspectConfig::modules
ContentInspectModule modules[MAX_CONTENT_INSPECT_MODULE_COUNT]
Definition: AgoraMediaBase.h:303
agora::media::base::VideoFrame::uStride
int uStride
Definition: AgoraMediaBase.h:756
agora::media::IAudioFrameObserverBase::FRAME_TYPE_PCM16
@ FRAME_TYPE_PCM16
Definition: AgoraMediaBase.h:901
agora::media::base::VideoFrame::alphaBuffer
uint8_t * alphaBuffer
Definition: AgoraMediaBase.h:819
agora::media::base::VideoFrame::height
int height
Definition: AgoraMediaBase.h:748
agora::media::base::AudioPcmFrame::data_
int16_t data_[kMaxDataSizeSamples]
Definition: AgoraMediaBase.h:396
agora::media::IAudioFrameObserverBase::onRecordAudioFrame
virtual bool onRecordAudioFrame(const char *channelId, AudioFrame &audioFrame)=0
agora::media::MediaRecorderConfiguration::maxDurationMs
int maxDurationMs
Definition: AgoraMediaBase.h:1573
agora::media::IAudioSpectrumObserver
Definition: AgoraMediaBase.h:1191
agora::rtc::AudioParameters
Definition: AgoraMediaBase.h:159
agora::media::IAudioFrameObserverBase::AudioFrame::renderTimeMs
int64_t renderTimeMs
Definition: AgoraMediaBase.h:944
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_RAW_DATA
@ VIDEO_BUFFER_RAW_DATA
Definition: AgoraMediaBase.h:600
agora::media::IAudioFrameObserverBase::getPlaybackAudioParams
virtual AudioParams getPlaybackAudioParams()=0
agora::media::base::ExternalVideoFrame::buffer
void * buffer
Definition: AgoraMediaBase.h:622
agora::media::IAudioFrameObserverBase::AudioFrame::channels
int channels
Definition: AgoraMediaBase.h:925
agora::media::IVideoFrameObserver::getVideoFormatPreference
virtual base::VIDEO_PIXEL_FORMAT getVideoFormatPreference()
Definition: AgoraMediaBase.h:1392
agora::rtc::EncodedVideoFrameInfo
Definition: AgoraBase.h:1548
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_TYPE
VIDEO_BUFFER_TYPE
Definition: AgoraMediaBase.h:596
agora::media::ContentInspectConfig::serverConfig
const char * serverConfig
Definition: AgoraMediaBase.h:299
agora::media::base::IVideoFrameObserver
Definition: AgoraMediaBase.h:829
agora::media::IVideoFrameObserver::getVideoFrameProcessMode
virtual VIDEO_FRAME_PROCESS_MODE getVideoFrameProcessMode()
Definition: AgoraMediaBase.h:1374
agora::media::IVideoFrameObserver
Definition: AgoraMediaBase.h:1253
agora::media::IAudioFrameObserverBase::AudioFrame
Definition: AgoraMediaBase.h:907
agora::media::base::AudioEncodedFrameInfo::codec
uint8_t codec
Definition: AgoraMediaBase.h:354
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:1580
agora::media::IAudioFrameObserver
Definition: AgoraMediaBase.h:1143
agora::media::IAudioFrameObserverBase::getEarMonitoringAudioParams
virtual AudioParams getEarMonitoringAudioParams()=0
agora::media::base::VideoFrame::d3d11Texture2d
void * d3d11Texture2d
Definition: AgoraMediaBase.h:809
agora::media::base::VideoFrame::rotation
int rotation
Definition: AgoraMediaBase.h:776
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:367
agora::media::base::ExternalVideoFrame::eglContext
void * eglContext
Definition: AgoraMediaBase.h:670
agora::media::base::ExternalVideoFrame::cropRight
int cropRight
Definition: AgoraMediaBase.h:646
agora::media::IAudioFrameObserverBase::getRecordAudioParams
virtual AudioParams getRecordAudioParams()=0
agora::media::base::VideoFrame::textureId
int textureId
Definition: AgoraMediaBase.h:805
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_ARRAY
@ VIDEO_BUFFER_ARRAY
Definition: AgoraMediaBase.h:604
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_TEXTURE
@ VIDEO_BUFFER_TEXTURE
Definition: AgoraMediaBase.h:608
agora::media::IAudioFrameObserverBase::AudioFrame::presentationMs
int64_t presentationMs
Definition: AgoraMediaBase.h:956
agora::media::base::VideoFrame::avsync_type
int avsync_type
Definition: AgoraMediaBase.h:787
agora::media::base::VideoFrame::matrix
float matrix[16]
Definition: AgoraMediaBase.h:813
agora::media::base::ExternalVideoFrame::cropLeft
int cropLeft
Definition: AgoraMediaBase.h:636
agora::media::IAudioFrameObserverBase::AudioFrame::samplesPerSec
int samplesPerSec
Definition: AgoraMediaBase.h:929
agora::media::ContentInspectModule
Definition: AgoraMediaBase.h:278
agora::media::IAudioFrameObserverBase::AudioFrame::buffer
void * buffer
Definition: AgoraMediaBase.h:936
agora::media::IAudioFrameObserverBase::onPlaybackAudioFrameBeforeMixing
virtual bool onPlaybackAudioFrameBeforeMixing(const char *channelId, base::user_id_t userId, AudioFrame &audioFrame)
Definition: AgoraMediaBase.h:1066
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:557
agora::media::base::AudioEncodedFrameInfo::sendTs
uint64_t sendTs
Definition: AgoraMediaBase.h:350
agora::media::ContentInspectConfig::moduleCount
int moduleCount
Definition: AgoraMediaBase.h:306
agora::media::base::VideoFrame::type
VIDEO_PIXEL_FORMAT type
Definition: AgoraMediaBase.h:740
agora::media::base::AudioPcmFrame::capture_timestamp
int64_t capture_timestamp
Definition: AgoraMediaBase.h:382
agora::media::base::ExternalVideoFrame::timestamp
long long timestamp
Definition: AgoraMediaBase.h:664
agora::media::base::AudioPcmFrame::sample_rate_hz_
int sample_rate_hz_
Definition: AgoraMediaBase.h:388
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION
AUDIO_FRAME_POSITION
Definition: AgoraMediaBase.h:969
agora::media::base::ExternalVideoFrame::height
int height
Definition: AgoraMediaBase.h:631
agora::media::base::VideoFrame::sharedContext
void * sharedContext
Definition: AgoraMediaBase.h:801
agora::media::base::ExternalVideoFrame::rotation
int rotation
Definition: AgoraMediaBase.h:656
agora::media::RecorderInfo
Definition: AgoraMediaBase.h:1590
agora::media::base::ExternalVideoFrame::d3d11_texture_2d
void * d3d11_texture_2d
Definition: AgoraMediaBase.h:703
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:1181
agora::media::IAudioFrameObserverBase::AudioParams::samples_per_call
int samples_per_call
Definition: AgoraMediaBase.h:1013
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_PLAYBACK
@ AUDIO_FRAME_POSITION_PLAYBACK
Definition: AgoraMediaBase.h:973
agora::media::base::PacketOptions
Definition: AgoraMediaBase.h:330
agora::media::base::PacketOptions::timestamp
uint32_t timestamp
Definition: AgoraMediaBase.h:334
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_TYPE
AUDIO_FRAME_TYPE
Definition: AgoraMediaBase.h:897
agora::media::base::VideoFrame::yBuffer
uint8_t * yBuffer
Definition: AgoraMediaBase.h:764
agora::media::base::AudioPcmFrame::bytes_per_sample
rtc::BYTES_PER_SAMPLE bytes_per_sample
Definition: AgoraMediaBase.h:394
agora::media::UserAudioSpectrumInfo
Definition: AgoraMediaBase.h:1173
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_EAR_MONITORING
@ AUDIO_FRAME_POSITION_EAR_MONITORING
Definition: AgoraMediaBase.h:985
agora::media::RecorderInfo::fileName
const char * fileName
Definition: AgoraMediaBase.h:1594
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:1271
agora::media::IVideoFrameObserver::isExternal
virtual bool isExternal()
Definition: AgoraMediaBase.h:1454
agora::media::ContentInspectModule::interval
unsigned int interval
Definition: AgoraMediaBase.h:286
agora::media::IVideoFrameObserver::getObservedFramePosition
virtual uint32_t getObservedFramePosition()
Definition: AgoraMediaBase.h:1443
agora::media::base::VideoFrame::yStride
int yStride
Definition: AgoraMediaBase.h:752
agora::media::base::ExternalVideoFrame::alphaBuffer
uint8_t * alphaBuffer
Definition: AgoraMediaBase.h:698
agora::media::base::ExternalVideoFrame::metadata_buffer
uint8_t * metadata_buffer
Definition: AgoraMediaBase.h:687
agora::media::ContentInspectModule::type
CONTENT_INSPECT_TYPE type
Definition: AgoraMediaBase.h:282
agora::media::MediaRecorderConfiguration::containerFormat
MediaRecorderContainerFormat containerFormat
Definition: AgoraMediaBase.h:1565
agora::media::base::ExternalVideoFrame::EGL_CONTEXT14
@ EGL_CONTEXT14
Definition: AgoraMediaBase.h:590
agora::media::RecorderInfo::fileSize
unsigned int fileSize
Definition: AgoraMediaBase.h:1602
agora::media::base::ExternalVideoFrame::cropTop
int cropTop
Definition: AgoraMediaBase.h:641
agora::media::base::ExternalVideoFrame::type
VIDEO_BUFFER_TYPE type
Definition: AgoraMediaBase.h:614
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:1408
agora::media::base::VideoFrame::vBuffer
uint8_t * vBuffer
Definition: AgoraMediaBase.h:772
agora::media::AudioSpectrumData::dataLength
int dataLength
Definition: AgoraMediaBase.h:1166
agora::media::base::ExternalVideoFrame::EGL_CONTEXT_TYPE
EGL_CONTEXT_TYPE
Definition: AgoraMediaBase.h:582
agora::media::IAudioFrameObserverBase::onMixedAudioFrame
virtual bool onMixedAudioFrame(const char *channelId, AudioFrame &audioFrame)=0
agora::media::IAudioFrameObserverBase::AudioParams
Definition: AgoraMediaBase.h:988
agora::media::base::AudioPcmFrame::num_channels_
size_t num_channels_
Definition: AgoraMediaBase.h:391
agora::media::IAudioFrameObserverBase::AudioFrame::avsync_type
int avsync_type
Definition: AgoraMediaBase.h:948
agora::media::IAudioFrameObserverBase::getObservedAudioFramePosition
virtual int getObservedAudioFramePosition()=0
agora::media::MediaRecorderConfiguration
Definition: AgoraMediaBase.h:1552
agora::media::base::VideoFrame::metadata_buffer
uint8_t * metadata_buffer
Definition: AgoraMediaBase.h:792
agora::media::MediaRecorderConfiguration::streamType
MediaRecorderStreamType streamType
Definition: AgoraMediaBase.h:1569
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_BEFORE_MIXING
@ AUDIO_FRAME_POSITION_BEFORE_MIXING
Definition: AgoraMediaBase.h:982
agora::media::MediaRecorderConfiguration::storagePath
const char * storagePath
Definition: AgoraMediaBase.h:1561
agora::media::AudioSpectrumData
Definition: AgoraMediaBase.h:1158
agora::media::base::VideoFrame::width
int width
Definition: AgoraMediaBase.h:744
agora::media::RecorderInfo::durationMs
unsigned int durationMs
Definition: AgoraMediaBase.h:1598
agora::media::base::VideoFrame::renderTimeMs
int64_t renderTimeMs
Definition: AgoraMediaBase.h:783
agora::media::base::ExternalVideoFrame::metadata_size
int metadata_size
Definition: AgoraMediaBase.h:692
agora::media::base::AudioPcmFrame::samples_per_channel_
size_t samples_per_channel_
Definition: AgoraMediaBase.h:385
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:919
agora::media::base::ExternalVideoFrame::textureId
int textureId
Definition: AgoraMediaBase.h:678
agora::media::base::VideoFrame::pixelBuffer
void * pixelBuffer
Definition: AgoraMediaBase.h:823
agora::media::IAudioFrameObserverBase::AudioFrame::type
AUDIO_FRAME_TYPE type
Definition: AgoraMediaBase.h:911
agora::media::IAudioPcmFrameSink::onFrame
virtual void onFrame(agora::media::base::AudioPcmFrame *frame)=0
agora::media::IVideoEncodedFrameObserver
Definition: AgoraMediaBase.h:1232
agora::media::IAudioFrameObserverBase::AudioFrame::samplesPerChannel
int samplesPerChannel
Definition: AgoraMediaBase.h:915
agora::media::IVideoFrameObserver::getMirrorApplied
virtual bool getMirrorApplied()
Definition: AgoraMediaBase.h:1424
agora::media::IAudioSpectrumObserver::onLocalAudioSpectrum
virtual bool onLocalAudioSpectrum(const AudioSpectrumData &data)=0
agora::media::base::AudioEncodedFrameInfo
Definition: AgoraMediaBase.h:346
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_RECORD
@ AUDIO_FRAME_POSITION_RECORD
Definition: AgoraMediaBase.h:976
agora::media::base::ExternalVideoFrame::texture_slice_index
int texture_slice_index
Definition: AgoraMediaBase.h:708
agora::media::base::VideoFrame::vStride
int vStride
Definition: AgoraMediaBase.h:760
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:294
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_MIXED
@ AUDIO_FRAME_POSITION_MIXED
Definition: AgoraMediaBase.h:979
agora::media::base::AudioPcmFrame
Definition: AgoraMediaBase.h:363
agora::media::IAudioFrameObserverBase::AudioParams::sample_rate
int sample_rate
Definition: AgoraMediaBase.h:997
agora::media::base::VideoFrame::uBuffer
uint8_t * uBuffer
Definition: AgoraMediaBase.h:768
agora::media::IAudioFrameObserverBase::onPlaybackAudioFrame
virtual bool onPlaybackAudioFrame(const char *channelId, AudioFrame &audioFrame)=0
agora::media::base::ExternalVideoFrame::EGL_CONTEXT10
@ EGL_CONTEXT10
Definition: AgoraMediaBase.h:586
agora::media::UserAudioSpectrumInfo::uid
agora::rtc::uid_t uid
Definition: AgoraMediaBase.h:1177
agora::media::IVideoFrameObserver::VIDEO_FRAME_PROCESS_MODE
VIDEO_FRAME_PROCESS_MODE
Definition: AgoraMediaBase.h:1259
agora::media::base::ExternalVideoFrame::format
VIDEO_PIXEL_FORMAT format
Definition: AgoraMediaBase.h:618
agora::media::base::ExternalVideoFrame::stride
int stride
Definition: AgoraMediaBase.h:627
agora::media::base::ExternalVideoFrame::eglType
EGL_CONTEXT_TYPE eglType
Definition: AgoraMediaBase.h:674