Agora Java API Reference for Android
AgoraMediaBase.h
1 // Agora Engine SDK
2 //
3 // Created by Sting Feng in 2017-11.
4 // Copyright (c) 2017 Agora.io. All rights reserved.
5 
6 #pragma once // NOLINT(build/header_guard)
7 
8 #include <cstring>
9 #include <stdint.h>
10 #include <limits>
11 #include <stddef.h>
12 
13 #ifndef OPTIONAL_ENUM_SIZE_T
14 #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)
15 #define OPTIONAL_ENUM_SIZE_T enum : size_t
16 #else
17 #define OPTIONAL_ENUM_SIZE_T enum
18 #endif
19 #endif
20 
21 #if !defined(__APPLE__)
22 #define __deprecated
23 #endif
24 
25 namespace agora {
26 namespace rtc {
27 
28 typedef unsigned int uid_t;
29 typedef unsigned int track_id_t;
30 typedef unsigned int conn_id_t;
31 typedef unsigned int video_track_id_t;
32 
33 static const unsigned int INVALID_TRACK_ID = 0xffffffff;
34 static const unsigned int DEFAULT_CONNECTION_ID = 0;
35 static const unsigned int DUMMY_CONNECTION_ID = (std::numeric_limits<unsigned int>::max)();
36 
37 struct EncodedVideoFrameInfo;
38 
42 enum VIDEO_SOURCE_TYPE {
45  VIDEO_SOURCE_CAMERA_PRIMARY = 0,
46  VIDEO_SOURCE_CAMERA = VIDEO_SOURCE_CAMERA_PRIMARY,
49  VIDEO_SOURCE_CAMERA_SECONDARY = 1,
52  VIDEO_SOURCE_SCREEN_PRIMARY = 2,
53  VIDEO_SOURCE_SCREEN = VIDEO_SOURCE_SCREEN_PRIMARY,
56  VIDEO_SOURCE_SCREEN_SECONDARY = 3,
59  VIDEO_SOURCE_CUSTOM = 4,
62  VIDEO_SOURCE_MEDIA_PLAYER = 5,
65  VIDEO_SOURCE_RTC_IMAGE_PNG = 6,
68  VIDEO_SOURCE_RTC_IMAGE_JPEG = 7,
71  VIDEO_SOURCE_RTC_IMAGE_GIF = 8,
74  VIDEO_SOURCE_REMOTE = 9,
77  VIDEO_SOURCE_TRANSCODED = 10,
78 
81  VIDEO_SOURCE_CAMERA_THIRD = 11,
84  VIDEO_SOURCE_CAMERA_FOURTH = 12,
87  VIDEO_SOURCE_SCREEN_THIRD = 13,
90  VIDEO_SOURCE_SCREEN_FOURTH = 14,
93  VIDEO_SOURCE_SPEECH_DRIVEN = 15,
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_BLUETOOTH_DEVICE_HFP = 5,
134  ROUTE_USB = 6,
138  ROUTE_HDMI = 7,
142  ROUTE_DISPLAYPORT = 8,
146  ROUTE_AIRPLAY = 9,
150  ROUTE_BLUETOOTH_DEVICE_A2DP = 10,
151 };
152 
156 enum BYTES_PER_SAMPLE {
160  TWO_BYTES_PER_SAMPLE = 2,
161 };
162 
164  int sample_rate;
165  size_t channels;
166  size_t frames_per_buffer;
167 
169  : sample_rate(0),
170  channels(0),
171  frames_per_buffer(0) {}
172 };
173 
177 enum RAW_AUDIO_FRAME_OP_MODE_TYPE {
181  RAW_AUDIO_FRAME_OP_MODE_READ_ONLY = 0,
182 
186  RAW_AUDIO_FRAME_OP_MODE_READ_WRITE = 2,
187 };
188 
189 } // namespace rtc
190 
191 namespace media {
195 enum MEDIA_SOURCE_TYPE {
199  AUDIO_PLAYOUT_SOURCE = 0,
203  AUDIO_RECORDING_SOURCE = 1,
207  PRIMARY_CAMERA_SOURCE = 2,
211  SECONDARY_CAMERA_SOURCE = 3,
215  PRIMARY_SCREEN_SOURCE = 4,
219  SECONDARY_SCREEN_SOURCE = 5,
223  CUSTOM_VIDEO_SOURCE = 6,
227  MEDIA_PLAYER_SOURCE = 7,
231  RTC_IMAGE_PNG_SOURCE = 8,
235  RTC_IMAGE_JPEG_SOURCE = 9,
239  RTC_IMAGE_GIF_SOURCE = 10,
243  REMOTE_VIDEO_SOURCE = 11,
247  TRANSCODED_VIDEO_SOURCE = 12,
251  SPEECH_DRIVEN_VIDEO_SOURCE = 13,
255  UNKNOWN_MEDIA_SOURCE = 100
256 };
257 
258 namespace base {
259 
260 typedef void* view_t;
261 
262 typedef const char* user_id_t;
263 
264 static const uint8_t kMaxCodecNameLength = 50;
265 
274  uint32_t timestamp;
275  // Audio level indication.
276  uint8_t audioLevelIndication;
277  PacketOptions()
278  : timestamp(0),
279  audioLevelIndication(127) {}
280 };
281 
290  uint64_t sendTs;
294  uint8_t codec;
296  : sendTs(0),
297  codec(0) {}
298 };
299 
308  // Stereo, 32 kHz, 60 ms (2 * 32 * 60)
315  kMaxDataSizeSamples = 3840,
317  kMaxDataSizeBytes = kMaxDataSizeSamples * sizeof(int16_t),
318  };
319 
337  rtc::BYTES_PER_SAMPLE bytes_per_sample;
339  int16_t data_[kMaxDataSizeSamples];
340 
341  AudioPcmFrame& operator=(const AudioPcmFrame& src) {
342  if(this == &src) {
343  return *this;
344  }
345 
346  this->capture_timestamp = src.capture_timestamp;
347  this->samples_per_channel_ = src.samples_per_channel_;
348  this->sample_rate_hz_ = src.sample_rate_hz_;
349  this->bytes_per_sample = src.bytes_per_sample;
350  this->num_channels_ = src.num_channels_;
351  this->audio_track_number_ = src.audio_track_number_;
352 
353  size_t length = src.samples_per_channel_ * src.num_channels_;
354  if (length > kMaxDataSizeSamples) {
355  length = kMaxDataSizeSamples;
356  }
357 
358  memcpy(this->data_, src.data_, length * sizeof(int16_t));
359 
360  return *this;
361  }
362 
363  AudioPcmFrame()
364  : capture_timestamp(0),
366  sample_rate_hz_(0),
367  num_channels_(0),
369  bytes_per_sample(rtc::TWO_BYTES_PER_SAMPLE) {
370  memset(data_, 0, sizeof(data_));
371  }
372 
373  AudioPcmFrame(const AudioPcmFrame& src)
380  size_t length = src.samples_per_channel_ * src.num_channels_;
381  if (length > kMaxDataSizeSamples) {
382  length = kMaxDataSizeSamples;
383  }
384 
385  memcpy(this->data_, src.data_, length * sizeof(int16_t));
386  }
387 };
388 
391 enum AUDIO_DUAL_MONO_MODE {
393  AUDIO_DUAL_MONO_STEREO = 0,
395  AUDIO_DUAL_MONO_L = 1,
397  AUDIO_DUAL_MONO_R = 2,
399  AUDIO_DUAL_MONO_MIX = 3
400 };
401 
405 enum VIDEO_PIXEL_FORMAT {
409  VIDEO_PIXEL_DEFAULT = 0,
413  VIDEO_PIXEL_I420 = 1,
417  VIDEO_PIXEL_BGRA = 2,
421  VIDEO_PIXEL_NV21 = 3,
425  VIDEO_PIXEL_RGBA = 4,
429  VIDEO_PIXEL_NV12 = 8,
433  VIDEO_TEXTURE_2D = 10,
437  VIDEO_TEXTURE_OES = 11,
438  /*
439  12: pixel format for iOS CVPixelBuffer NV12
440  */
441  VIDEO_CVPIXEL_NV12 = 12,
442  /*
443  13: pixel format for iOS CVPixelBuffer I420
444  */
445  VIDEO_CVPIXEL_I420 = 13,
446  /*
447  14: pixel format for iOS CVPixelBuffer BGRA
448  */
449  VIDEO_CVPIXEL_BGRA = 14,
453  VIDEO_PIXEL_I422 = 16,
457  VIDEO_TEXTURE_ID3D11TEXTURE2D = 17,
462  VIDEO_PIXEL_I010 = 18,
463 };
464 
468 enum RENDER_MODE_TYPE {
473  RENDER_MODE_HIDDEN = 1,
479  RENDER_MODE_FIT = 2,
484  RENDER_MODE_ADAPTIVE __deprecated = 3,
485 };
486 
490 enum CAMERA_VIDEO_SOURCE_TYPE {
494  CAMERA_SOURCE_FRONT = 0,
498  CAMERA_SOURCE_BACK = 1,
502  VIDEO_SOURCE_UNSPECIFIED = 2,
503 };
504 
510  public:
511  enum META_INFO_KEY {
512  KEY_FACE_CAPTURE = 0,
513  };
514  virtual ~IVideoFrameMetaInfo() {};
515  virtual const char* getMetaInfoStr(META_INFO_KEY key) const = 0;
516 };
517 
524  format(VIDEO_PIXEL_DEFAULT),
525  buffer(NULL),
526  stride(0),
527  height(0),
528  cropLeft(0),
529  cropTop(0),
530  cropRight(0),
531  cropBottom(0),
532  rotation(0),
533  timestamp(0),
534  eglContext(NULL),
536  textureId(0),
537  fence_object(0),
538  metadata_buffer(NULL),
539  metadata_size(0),
540  alphaBuffer(NULL),
541  fillAlphaBuffer(false),
542  d3d11_texture_2d(NULL),
544 
557  };
558 
575  };
576 
584  VIDEO_PIXEL_FORMAT format;
588  void* buffer;
593  int stride;
597  int height;
602  int cropLeft;
607  int cropTop;
622  int rotation;
630  long long timestamp;
636  void *eglContext;
649  long long fence_object;
653  float matrix[16];
658  uint8_t* metadata_buffer;
670  uint8_t* alphaBuffer;
677 
682 
687 };
688 
692 struct VideoFrame {
693  VideoFrame():
694  type(VIDEO_PIXEL_DEFAULT),
695  width(0),
696  height(0),
697  yStride(0),
698  uStride(0),
699  vStride(0),
700  yBuffer(NULL),
701  uBuffer(NULL),
702  vBuffer(NULL),
703  rotation(0),
704  renderTimeMs(0),
705  avsync_type(0),
706  metadata_buffer(NULL),
707  metadata_size(0),
708  sharedContext(0),
709  textureId(0),
710  d3d11Texture2d(NULL),
711  alphaBuffer(NULL),
712  pixelBuffer(NULL),
713  metaInfo(NULL){
714  memset(matrix, 0, sizeof(matrix));
715  }
719  VIDEO_PIXEL_FORMAT type;
723  int width;
727  int height;
731  int yStride;
735  int uStride;
739  int vStride;
743  uint8_t* yBuffer;
747  uint8_t* uBuffer;
751  uint8_t* vBuffer;
755  int rotation;
762  int64_t renderTimeMs;
771  uint8_t* metadata_buffer;
792  float matrix[16];
799  uint8_t* alphaBuffer;
803  void* pixelBuffer;
808 };
809 
814  public:
822  virtual void onFrame(const VideoFrame* frame) = 0;
823  virtual ~IVideoFrameObserver() {}
824  virtual bool isExternal() { return true; }
825  virtual VIDEO_PIXEL_FORMAT getVideoFormatPreference() { return VIDEO_PIXEL_DEFAULT; }
826 };
827 
828 enum MEDIA_PLAYER_SOURCE_TYPE {
834  MEDIA_PLAYER_SOURCE_DEFAULT,
840  MEDIA_PLAYER_SOURCE_FULL_FEATURED,
845  MEDIA_PLAYER_SOURCE_SIMPLE,
846 };
847 
848 enum VIDEO_MODULE_POSITION {
849  POSITION_POST_CAPTURER = 1 << 0,
850  POSITION_PRE_RENDERER = 1 << 1,
851  POSITION_PRE_ENCODER = 1 << 2,
852  POSITION_POST_CAPTURER_ORIGIN = 1 << 3,
853 };
854 
855 } // namespace base
856 
859 #define MAX_CONTENT_INSPECT_MODULE_COUNT 32
860 enum CONTENT_INSPECT_RESULT {
861  CONTENT_INSPECT_NEUTRAL = 1,
862  CONTENT_INSPECT_SEXY = 2,
863  CONTENT_INSPECT_PORN = 3,
864 };
865 
866 enum CONTENT_INSPECT_TYPE {
870  CONTENT_INSPECT_INVALID = 0,
875  CONTENT_INSPECT_MODERATION __deprecated = 1,
879  CONTENT_INSPECT_SUPERVISION = 2,
883  CONTENT_INSPECT_IMAGE_MODERATION = 3
884 };
885 
890  CONTENT_INSPECT_TYPE type;
894  unsigned int interval;
898  base::VIDEO_MODULE_POSITION position;
900  type = CONTENT_INSPECT_INVALID;
901  interval = 0;
902  position = base::POSITION_PRE_ENCODER;
903  }
904 };
908  const char* extraInfo;
912  const char* serverConfig;
916  ContentInspectModule modules[MAX_CONTENT_INSPECT_MODULE_COUNT];
920  ContentInspectConfig& operator=(const ContentInspectConfig& rth) {
921  extraInfo = rth.extraInfo;
923  moduleCount = rth.moduleCount;
924  memcpy(&modules, &rth.modules, MAX_CONTENT_INSPECT_MODULE_COUNT * sizeof(ContentInspectModule));
925  return *this;
926  }
927  ContentInspectConfig() : extraInfo(NULL), serverConfig(NULL), moduleCount(0) {}
928 };
939  const char* filePath;
940 
949  media::base::VIDEO_MODULE_POSITION position;
950  SnapshotConfig() :filePath(NULL), position(media::base::POSITION_PRE_ENCODER) {}
951 };
952 
957  public:
966  virtual void onFrame(agora::media::base::AudioPcmFrame* frame) = 0;
967  virtual ~IAudioPcmFrameSink() {}
968 };
969 
974  public:
983  };
984  enum { MAX_HANDLE_TIME_CNT = 10 };
988  struct AudioFrame {
1000  agora::rtc::BYTES_PER_SAMPLE bytesPerSample;
1017  void* buffer;
1025  int64_t renderTimeMs;
1048  uint32_t rtpTimestamp;
1049 
1051  samplesPerChannel(0),
1052  bytesPerSample(rtc::TWO_BYTES_PER_SAMPLE),
1053  channels(0),
1054  samplesPerSec(0),
1055  buffer(NULL),
1056  renderTimeMs(0),
1057  avsync_type(0),
1058  presentationMs(0),
1059  audioTrackNumber(0),
1060  rtpTimestamp(0) {}
1061  };
1062 
1064  AUDIO_FRAME_POSITION_NONE = 0x0000,
1080  };
1081 
1082  struct AudioParams {
1092 
1093  /* The number of audio channels, which can be set as either of the following values:
1094 
1095  - `1`: Mono (Default)
1096  - `2`: Stereo
1097  */
1098  int channels;
1099 
1100  /* The use mode of the audio data. See AgoraAudioRawFrameOperationMode.
1101  */
1102  rtc::RAW_AUDIO_FRAME_OP_MODE_TYPE mode;
1103 
1108 
1109  AudioParams() : sample_rate(0), channels(0), mode(rtc::RAW_AUDIO_FRAME_OP_MODE_READ_ONLY), samples_per_call(0) {}
1110  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) {}
1111  };
1112 
1113  public:
1114  virtual ~IAudioFrameObserverBase() {}
1115 
1124  virtual bool onRecordAudioFrame(const char* channelId, AudioFrame& audioFrame) = 0;
1133  virtual bool onPlaybackAudioFrame(const char* channelId, AudioFrame& audioFrame) = 0;
1142  virtual bool onMixedAudioFrame(const char* channelId, AudioFrame& audioFrame) = 0;
1150  virtual bool onEarMonitoringAudioFrame(AudioFrame& audioFrame) = 0;
1160  virtual bool onPlaybackAudioFrameBeforeMixing(const char* channelId, base::user_id_t userId, AudioFrame& audioFrame) {
1161  (void) channelId;
1162  (void) userId;
1163  (void) audioFrame;
1164  return true;
1165  }
1166 
1183 
1196 
1208 
1220 
1232 };
1233 
1238  public:
1249  virtual bool onPlaybackAudioFrameBeforeMixing(const char* channelId, rtc::uid_t uid, AudioFrame& audioFrame) = 0;
1250 };
1251 
1256  const float *audioSpectrumData;
1261 
1263  AudioSpectrumData(const float *data, int length) :
1264  audioSpectrumData(data), dataLength(length) {}
1265 };
1266 
1271  agora::rtc::uid_t uid;
1276 
1277  UserAudioSpectrumInfo() : uid(0) {}
1278 
1279  UserAudioSpectrumInfo(agora::rtc::uid_t uid, const float* data, int length) : uid(uid), spectrumData(data, length) {}
1280 };
1281 
1286 public:
1287  virtual ~IAudioSpectrumObserver() {}
1288 
1301  virtual bool onLocalAudioSpectrum(const AudioSpectrumData& data) = 0;
1319  virtual bool onRemoteAudioSpectrum(const UserAudioSpectrumInfo* spectrums, unsigned int spectrumNumber) = 0;
1320 };
1321 
1326  public:
1337  virtual bool onEncodedVideoFrameReceived(rtc::uid_t uid, const uint8_t* imageBuffer, size_t length,
1338  const rtc::EncodedVideoFrameInfo& videoEncodedFrameInfo) = 0;
1339 
1340  virtual ~IVideoEncodedFrameObserver() {}
1341 };
1342 
1347  public:
1358  PROCESS_MODE_READ_ONLY, // Observer works as a pure renderer and will not modify the original frame.
1364  PROCESS_MODE_READ_WRITE, // Observer works as a filter that will process the video frame and affect the following frame processing in SDK.
1365  };
1366 
1367  public:
1368  virtual ~IVideoFrameObserver() {}
1369 
1390  virtual bool onCaptureVideoFrame(agora::rtc::VIDEO_SOURCE_TYPE sourceType, VideoFrame& videoFrame) = 0;
1391 
1413  virtual bool onPreEncodeVideoFrame(agora::rtc::VIDEO_SOURCE_TYPE sourceType, VideoFrame& videoFrame) = 0;
1414 
1435  virtual bool onMediaPlayerVideoFrame(VideoFrame& videoFrame, int mediaPlayerId) = 0;
1436 
1456  virtual bool onRenderVideoFrame(const char* channelId, rtc::uid_t remoteUid, VideoFrame& videoFrame) = 0;
1457 
1458  virtual bool onTranscodedVideoFrame(VideoFrame& videoFrame) = 0;
1459 
1468  return PROCESS_MODE_READ_ONLY;
1469  }
1470 
1485  virtual base::VIDEO_PIXEL_FORMAT getVideoFormatPreference() { return base::VIDEO_PIXEL_DEFAULT; }
1486 
1501  virtual bool getRotationApplied() { return false; }
1502 
1517  virtual bool getMirrorApplied() { return false; }
1518 
1536  virtual uint32_t getObservedFramePosition() {
1537  return base::POSITION_POST_CAPTURER | base::POSITION_PRE_RENDERER;
1538  }
1539 
1547  virtual bool isExternal() { return true; }
1548 };
1549 
1553 enum EXTERNAL_VIDEO_SOURCE_TYPE {
1557  VIDEO_FRAME = 0,
1561  ENCODED_VIDEO_FRAME,
1562 };
1563 
1569 enum MediaRecorderContainerFormat {
1573  FORMAT_MP4 = 1,
1574 };
1580 enum MediaRecorderStreamType {
1584  STREAM_TYPE_AUDIO = 0x01,
1588  STREAM_TYPE_VIDEO = 0x02,
1592  STREAM_TYPE_BOTH = STREAM_TYPE_AUDIO | STREAM_TYPE_VIDEO,
1593 };
1599 enum RecorderState {
1603  RECORDER_STATE_ERROR = -1,
1607  RECORDER_STATE_START = 2,
1611  RECORDER_STATE_STOP = 3,
1612 };
1618 enum RecorderReasonCode {
1622  RECORDER_REASON_NONE = 0,
1626  RECORDER_REASON_WRITE_FAILED = 1,
1630  RECORDER_REASON_NO_STREAM = 2,
1634  RECORDER_REASON_OVER_MAX_DURATION = 3,
1638  RECORDER_REASON_CONFIG_CHANGED = 4,
1639 };
1654  const char* storagePath;
1658  MediaRecorderContainerFormat containerFormat;
1662  MediaRecorderStreamType streamType;
1674 
1675  MediaRecorderConfiguration() : storagePath(NULL), containerFormat(FORMAT_MP4), streamType(STREAM_TYPE_BOTH), maxDurationMs(120000), recorderInfoUpdateInterval(0) {}
1676  MediaRecorderConfiguration(const char* path, MediaRecorderContainerFormat format, MediaRecorderStreamType type, int duration, int interval) : storagePath(path), containerFormat(format), streamType(type), maxDurationMs(duration), recorderInfoUpdateInterval(interval) {}
1677 };
1678 
1680 public:
1688  virtual bool onFaceInfo(const char* outFaceInfo) = 0;
1689 
1690  virtual ~IFaceInfoObserver() {}
1691 };
1692 
1702  const char* fileName;
1706  unsigned int durationMs;
1710  unsigned int fileSize;
1711 
1712  RecorderInfo() : fileName(NULL), durationMs(0), fileSize(0) {}
1713  RecorderInfo(const char* name, unsigned int dur, unsigned int size) : fileName(name), durationMs(dur), fileSize(size) {}
1714 };
1715 
1717  public:
1731  virtual void onRecorderStateChanged(const char* channelId, rtc::uid_t uid, RecorderState state, RecorderReasonCode reason) = 0;
1746  virtual void onRecorderInfoUpdated(const char* channelId, rtc::uid_t uid, const RecorderInfo& info) = 0;
1747 
1748  virtual ~IMediaRecorderObserver() {}
1749 };
1750 
1751 } // namespace media
1752 } // namespace agora
agora::media::IVideoFrameObserver::PROCESS_MODE_READ_ONLY
@ PROCESS_MODE_READ_ONLY
Definition: AgoraMediaBase.h:1358
agora::media::base::VideoFrame
Definition: AgoraMediaBase.h:692
agora::media::base::ExternalVideoFrame::cropBottom
int cropBottom
Definition: AgoraMediaBase.h:617
agora::media::base::VideoFrame::metadata_size
int metadata_size
Definition: AgoraMediaBase.h:776
agora::media::SnapshotConfig::filePath
const char * filePath
Definition: AgoraMediaBase.h:939
agora::media::AudioSpectrumData::audioSpectrumData
const float * audioSpectrumData
Definition: AgoraMediaBase.h:1256
agora::media::IAudioFrameObserverBase::onEarMonitoringAudioFrame
virtual bool onEarMonitoringAudioFrame(AudioFrame &audioFrame)=0
agora::media::base::ExternalVideoFrame::matrix
float matrix[16]
Definition: AgoraMediaBase.h:653
agora::media::IAudioPcmFrameSink
Definition: AgoraMediaBase.h:956
agora::media::IMediaRecorderObserver
Definition: AgoraMediaBase.h:1716
agora::media::IAudioFrameObserverBase
Definition: AgoraMediaBase.h:973
agora::media::ContentInspectConfig::modules
ContentInspectModule modules[MAX_CONTENT_INSPECT_MODULE_COUNT]
Definition: AgoraMediaBase.h:916
agora::media::base::VideoFrame::uStride
int uStride
Definition: AgoraMediaBase.h:735
agora::media::IAudioFrameObserverBase::AudioFrame::rtpTimestamp
uint32_t rtpTimestamp
Definition: AgoraMediaBase.h:1048
agora::media::IAudioFrameObserverBase::FRAME_TYPE_PCM16
@ FRAME_TYPE_PCM16
Definition: AgoraMediaBase.h:982
agora::media::IAudioFrameObserverBase::AudioFrame::audioTrackNumber
int audioTrackNumber
Definition: AgoraMediaBase.h:1044
agora::media::base::VideoFrame::alphaBuffer
uint8_t * alphaBuffer
Definition: AgoraMediaBase.h:799
agora::media::IFaceInfoObserver
Definition: AgoraMediaBase.h:1679
agora::media::base::VideoFrame::height
int height
Definition: AgoraMediaBase.h:727
agora::media::base::AudioPcmFrame::data_
int16_t data_[kMaxDataSizeSamples]
Definition: AgoraMediaBase.h:339
agora::media::IAudioFrameObserverBase::onRecordAudioFrame
virtual bool onRecordAudioFrame(const char *channelId, AudioFrame &audioFrame)=0
agora::media::MediaRecorderConfiguration::maxDurationMs
int maxDurationMs
Definition: AgoraMediaBase.h:1666
agora::media::IAudioSpectrumObserver
Definition: AgoraMediaBase.h:1285
agora::rtc::AudioParameters
Definition: AgoraMediaBase.h:163
agora::media::IAudioFrameObserverBase::AudioFrame::renderTimeMs
int64_t renderTimeMs
Definition: AgoraMediaBase.h:1025
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_RAW_DATA
@ VIDEO_BUFFER_RAW_DATA
Definition: AgoraMediaBase.h:566
agora::media::IAudioFrameObserverBase::getPlaybackAudioParams
virtual AudioParams getPlaybackAudioParams()=0
agora::media::base::ExternalVideoFrame::buffer
void * buffer
Definition: AgoraMediaBase.h:588
agora::media::IAudioFrameObserverBase::AudioFrame::channels
int channels
Definition: AgoraMediaBase.h:1006
agora::media::IVideoFrameObserver::getVideoFormatPreference
virtual base::VIDEO_PIXEL_FORMAT getVideoFormatPreference()
Definition: AgoraMediaBase.h:1485
agora::rtc::EncodedVideoFrameInfo
Definition: AgoraBase.h:1611
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_TYPE
VIDEO_BUFFER_TYPE
Definition: AgoraMediaBase.h:562
agora::media::ContentInspectConfig::serverConfig
const char * serverConfig
Definition: AgoraMediaBase.h:912
agora::media::base::IVideoFrameObserver
Definition: AgoraMediaBase.h:813
agora::media::IVideoFrameObserver::getVideoFrameProcessMode
virtual VIDEO_FRAME_PROCESS_MODE getVideoFrameProcessMode()
Definition: AgoraMediaBase.h:1467
agora::media::IVideoFrameObserver
Definition: AgoraMediaBase.h:1346
agora::media::IAudioFrameObserverBase::AudioFrame
Definition: AgoraMediaBase.h:988
agora::media::base::AudioEncodedFrameInfo::codec
uint8_t codec
Definition: AgoraMediaBase.h:294
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:1673
agora::media::IAudioFrameObserver
Definition: AgoraMediaBase.h:1237
agora::media::IAudioFrameObserverBase::getEarMonitoringAudioParams
virtual AudioParams getEarMonitoringAudioParams()=0
agora::media::base::VideoFrame::d3d11Texture2d
void * d3d11Texture2d
Definition: AgoraMediaBase.h:788
agora::media::base::VideoFrame::rotation
int rotation
Definition: AgoraMediaBase.h:755
agora::media::base::IVideoFrameObserver::onFrame
virtual void onFrame(const VideoFrame *frame)=0
agora::media::IMediaRecorderObserver::onRecorderStateChanged
virtual void onRecorderStateChanged(const char *channelId, rtc::uid_t uid, RecorderState state, RecorderReasonCode reason)=0
agora::media::IAudioFrameObserverBase::getMixedAudioParams
virtual AudioParams getMixedAudioParams()=0
agora::media::base::AudioPcmFrame::OPTIONAL_ENUM_SIZE_T
OPTIONAL_ENUM_SIZE_T
Definition: AgoraMediaBase.h:307
agora::media::base::ExternalVideoFrame::eglContext
void * eglContext
Definition: AgoraMediaBase.h:636
agora::media::base::VideoFrame::metaInfo
IVideoFrameMetaInfo * metaInfo
Definition: AgoraMediaBase.h:807
agora::media::base::ExternalVideoFrame::cropRight
int cropRight
Definition: AgoraMediaBase.h:612
agora::media::IAudioFrameObserverBase::getRecordAudioParams
virtual AudioParams getRecordAudioParams()=0
agora::media::base::VideoFrame::textureId
int textureId
Definition: AgoraMediaBase.h:784
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_ARRAY
@ VIDEO_BUFFER_ARRAY
Definition: AgoraMediaBase.h:570
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_TEXTURE
@ VIDEO_BUFFER_TEXTURE
Definition: AgoraMediaBase.h:574
agora::media::IAudioFrameObserverBase::AudioFrame::presentationMs
int64_t presentationMs
Definition: AgoraMediaBase.h:1040
agora::media::base::VideoFrame::avsync_type
int avsync_type
Definition: AgoraMediaBase.h:766
agora::media::base::VideoFrame::matrix
float matrix[16]
Definition: AgoraMediaBase.h:792
agora::media::base::ExternalVideoFrame::cropLeft
int cropLeft
Definition: AgoraMediaBase.h:602
agora::media::IAudioFrameObserverBase::AudioFrame::samplesPerSec
int samplesPerSec
Definition: AgoraMediaBase.h:1010
agora::media::ContentInspectModule
Definition: AgoraMediaBase.h:886
agora::media::IAudioFrameObserverBase::AudioFrame::buffer
void * buffer
Definition: AgoraMediaBase.h:1017
agora::media::IAudioFrameObserverBase::onPlaybackAudioFrameBeforeMixing
virtual bool onPlaybackAudioFrameBeforeMixing(const char *channelId, base::user_id_t userId, AudioFrame &audioFrame)
Definition: AgoraMediaBase.h:1160
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:521
agora::media::base::AudioEncodedFrameInfo::sendTs
uint64_t sendTs
Definition: AgoraMediaBase.h:290
agora::media::ContentInspectConfig::moduleCount
int moduleCount
Definition: AgoraMediaBase.h:919
agora::media::base::VideoFrame::type
VIDEO_PIXEL_FORMAT type
Definition: AgoraMediaBase.h:719
agora::media::base::AudioPcmFrame::capture_timestamp
int64_t capture_timestamp
Definition: AgoraMediaBase.h:322
agora::media::base::ExternalVideoFrame::timestamp
long long timestamp
Definition: AgoraMediaBase.h:630
agora::media::base::AudioPcmFrame::sample_rate_hz_
int sample_rate_hz_
Definition: AgoraMediaBase.h:328
agora::media::IFaceInfoObserver::onFaceInfo
virtual bool onFaceInfo(const char *outFaceInfo)=0
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION
AUDIO_FRAME_POSITION
Definition: AgoraMediaBase.h:1063
agora::media::base::ExternalVideoFrame::height
int height
Definition: AgoraMediaBase.h:597
agora::media::base::VideoFrame::sharedContext
void * sharedContext
Definition: AgoraMediaBase.h:780
agora::media::base::ExternalVideoFrame::rotation
int rotation
Definition: AgoraMediaBase.h:622
agora::media::RecorderInfo
Definition: AgoraMediaBase.h:1698
agora::media::base::ExternalVideoFrame::d3d11_texture_2d
void * d3d11_texture_2d
Definition: AgoraMediaBase.h:681
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:1275
agora::media::IAudioFrameObserverBase::AudioParams::samples_per_call
int samples_per_call
Definition: AgoraMediaBase.h:1107
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_PLAYBACK
@ AUDIO_FRAME_POSITION_PLAYBACK
Definition: AgoraMediaBase.h:1067
agora::media::base::PacketOptions
Definition: AgoraMediaBase.h:270
agora::media::base::PacketOptions::timestamp
uint32_t timestamp
Definition: AgoraMediaBase.h:274
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_TYPE
AUDIO_FRAME_TYPE
Definition: AgoraMediaBase.h:978
agora::media::base::VideoFrame::yBuffer
uint8_t * yBuffer
Definition: AgoraMediaBase.h:743
agora::media::base::AudioPcmFrame::bytes_per_sample
rtc::BYTES_PER_SAMPLE bytes_per_sample
Definition: AgoraMediaBase.h:337
agora::media::UserAudioSpectrumInfo
Definition: AgoraMediaBase.h:1267
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_EAR_MONITORING
@ AUDIO_FRAME_POSITION_EAR_MONITORING
Definition: AgoraMediaBase.h:1079
agora::media::RecorderInfo::fileName
const char * fileName
Definition: AgoraMediaBase.h:1702
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:1364
agora::media::IVideoFrameObserver::isExternal
virtual bool isExternal()
Definition: AgoraMediaBase.h:1547
agora::media::ContentInspectModule::interval
unsigned int interval
Definition: AgoraMediaBase.h:894
agora::media::IVideoFrameObserver::getObservedFramePosition
virtual uint32_t getObservedFramePosition()
Definition: AgoraMediaBase.h:1536
agora::media::base::VideoFrame::yStride
int yStride
Definition: AgoraMediaBase.h:731
agora::media::base::ExternalVideoFrame::alphaBuffer
uint8_t * alphaBuffer
Definition: AgoraMediaBase.h:670
agora::media::base::ExternalVideoFrame::metadata_buffer
uint8_t * metadata_buffer
Definition: AgoraMediaBase.h:658
agora::media::ContentInspectModule::type
CONTENT_INSPECT_TYPE type
Definition: AgoraMediaBase.h:890
agora::media::MediaRecorderConfiguration::containerFormat
MediaRecorderContainerFormat containerFormat
Definition: AgoraMediaBase.h:1658
agora::media::base::ExternalVideoFrame::EGL_CONTEXT14
@ EGL_CONTEXT14
Definition: AgoraMediaBase.h:556
agora::media::RecorderInfo::fileSize
unsigned int fileSize
Definition: AgoraMediaBase.h:1710
agora::media::base::ExternalVideoFrame::cropTop
int cropTop
Definition: AgoraMediaBase.h:607
agora::media::base::ExternalVideoFrame::type
VIDEO_BUFFER_TYPE type
Definition: AgoraMediaBase.h:580
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:1501
agora::media::SnapshotConfig
Definition: AgoraMediaBase.h:931
agora::media::base::VideoFrame::vBuffer
uint8_t * vBuffer
Definition: AgoraMediaBase.h:751
agora::media::AudioSpectrumData::dataLength
int dataLength
Definition: AgoraMediaBase.h:1260
agora::media::base::ExternalVideoFrame::EGL_CONTEXT_TYPE
EGL_CONTEXT_TYPE
Definition: AgoraMediaBase.h:548
agora::media::IAudioFrameObserverBase::onMixedAudioFrame
virtual bool onMixedAudioFrame(const char *channelId, AudioFrame &audioFrame)=0
agora::media::IAudioFrameObserverBase::AudioParams
Definition: AgoraMediaBase.h:1082
agora::media::base::AudioPcmFrame::num_channels_
size_t num_channels_
Definition: AgoraMediaBase.h:331
agora::media::IAudioFrameObserverBase::AudioFrame::avsync_type
int avsync_type
Definition: AgoraMediaBase.h:1033
agora::media::IAudioFrameObserverBase::getObservedAudioFramePosition
virtual int getObservedAudioFramePosition()=0
agora::media::MediaRecorderConfiguration
Definition: AgoraMediaBase.h:1645
agora::media::base::VideoFrame::metadata_buffer
uint8_t * metadata_buffer
Definition: AgoraMediaBase.h:771
agora::media::MediaRecorderConfiguration::streamType
MediaRecorderStreamType streamType
Definition: AgoraMediaBase.h:1662
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_BEFORE_MIXING
@ AUDIO_FRAME_POSITION_BEFORE_MIXING
Definition: AgoraMediaBase.h:1076
agora::media::ContentInspectModule::position
base::VIDEO_MODULE_POSITION position
Definition: AgoraMediaBase.h:898
agora::media::MediaRecorderConfiguration::storagePath
const char * storagePath
Definition: AgoraMediaBase.h:1654
agora::media::AudioSpectrumData
Definition: AgoraMediaBase.h:1252
agora::media::base::VideoFrame::width
int width
Definition: AgoraMediaBase.h:723
agora::media::base::AudioPcmFrame::audio_track_number_
int audio_track_number_
Definition: AgoraMediaBase.h:334
agora::media::RecorderInfo::durationMs
unsigned int durationMs
Definition: AgoraMediaBase.h:1706
agora::media::base::VideoFrame::renderTimeMs
int64_t renderTimeMs
Definition: AgoraMediaBase.h:762
agora::media::base::ExternalVideoFrame::metadata_size
int metadata_size
Definition: AgoraMediaBase.h:663
agora::media::base::AudioPcmFrame::samples_per_channel_
size_t samples_per_channel_
Definition: AgoraMediaBase.h:325
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:1000
agora::media::base::ExternalVideoFrame::textureId
int textureId
Definition: AgoraMediaBase.h:644
agora::media::base::VideoFrame::pixelBuffer
void * pixelBuffer
Definition: AgoraMediaBase.h:803
agora::media::IAudioFrameObserverBase::AudioFrame::type
AUDIO_FRAME_TYPE type
Definition: AgoraMediaBase.h:992
agora::media::IAudioPcmFrameSink::onFrame
virtual void onFrame(agora::media::base::AudioPcmFrame *frame)=0
agora::media::IVideoEncodedFrameObserver
Definition: AgoraMediaBase.h:1325
agora::media::IAudioFrameObserverBase::AudioFrame::samplesPerChannel
int samplesPerChannel
Definition: AgoraMediaBase.h:996
agora::media::base::ExternalVideoFrame::fence_object
long long fence_object
Definition: AgoraMediaBase.h:649
agora::media::IVideoFrameObserver::getMirrorApplied
virtual bool getMirrorApplied()
Definition: AgoraMediaBase.h:1517
agora::media::IAudioSpectrumObserver::onLocalAudioSpectrum
virtual bool onLocalAudioSpectrum(const AudioSpectrumData &data)=0
agora::media::base::AudioEncodedFrameInfo
Definition: AgoraMediaBase.h:286
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_RECORD
@ AUDIO_FRAME_POSITION_RECORD
Definition: AgoraMediaBase.h:1070
agora::media::base::ExternalVideoFrame::texture_slice_index
int texture_slice_index
Definition: AgoraMediaBase.h:686
agora::media::base::VideoFrame::vStride
int vStride
Definition: AgoraMediaBase.h:739
agora::media::ContentInspectConfig
Definition: AgoraMediaBase.h:907
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_MIXED
@ AUDIO_FRAME_POSITION_MIXED
Definition: AgoraMediaBase.h:1073
agora::media::base::AudioPcmFrame
Definition: AgoraMediaBase.h:303
agora::media::base::ExternalVideoFrame::fillAlphaBuffer
bool fillAlphaBuffer
Definition: AgoraMediaBase.h:676
agora::media::IAudioFrameObserverBase::AudioParams::sample_rate
int sample_rate
Definition: AgoraMediaBase.h:1091
agora::media::base::VideoFrame::uBuffer
uint8_t * uBuffer
Definition: AgoraMediaBase.h:747
agora::media::IAudioFrameObserverBase::onPlaybackAudioFrame
virtual bool onPlaybackAudioFrame(const char *channelId, AudioFrame &audioFrame)=0
agora::media::base::ExternalVideoFrame::EGL_CONTEXT10
@ EGL_CONTEXT10
Definition: AgoraMediaBase.h:552
agora::media::base::IVideoFrameMetaInfo
Definition: AgoraMediaBase.h:509
agora::media::UserAudioSpectrumInfo::uid
agora::rtc::uid_t uid
Definition: AgoraMediaBase.h:1271
agora::media::SnapshotConfig::position
media::base::VIDEO_MODULE_POSITION position
Definition: AgoraMediaBase.h:949
agora::media::IVideoFrameObserver::VIDEO_FRAME_PROCESS_MODE
VIDEO_FRAME_PROCESS_MODE
Definition: AgoraMediaBase.h:1352
agora::media::base::ExternalVideoFrame::format
VIDEO_PIXEL_FORMAT format
Definition: AgoraMediaBase.h:584
agora::media::base::ExternalVideoFrame::stride
int stride
Definition: AgoraMediaBase.h:593
agora::media::base::ExternalVideoFrame::eglType
EGL_CONTEXT_TYPE eglType
Definition: AgoraMediaBase.h:640