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;
47  bool isValid;
52  uid_t uid;
56  const char *providerName;
60  const char *extensionName;
61  ExtensionContext():isValid(false), uid(0), providerName(NULL), extensionName(NULL) {}
62 };
63 
64 
68 enum VIDEO_SOURCE_TYPE {
71  VIDEO_SOURCE_CAMERA_PRIMARY = 0,
72  VIDEO_SOURCE_CAMERA = VIDEO_SOURCE_CAMERA_PRIMARY,
75  VIDEO_SOURCE_CAMERA_SECONDARY = 1,
78  VIDEO_SOURCE_SCREEN_PRIMARY = 2,
79  VIDEO_SOURCE_SCREEN = VIDEO_SOURCE_SCREEN_PRIMARY,
82  VIDEO_SOURCE_SCREEN_SECONDARY = 3,
85  VIDEO_SOURCE_CUSTOM = 4,
88  VIDEO_SOURCE_MEDIA_PLAYER = 5,
91  VIDEO_SOURCE_RTC_IMAGE_PNG = 6,
94  VIDEO_SOURCE_RTC_IMAGE_JPEG = 7,
97  VIDEO_SOURCE_RTC_IMAGE_GIF = 8,
100  VIDEO_SOURCE_REMOTE = 9,
103  VIDEO_SOURCE_TRANSCODED = 10,
104 
107  VIDEO_SOURCE_CAMERA_THIRD = 11,
110  VIDEO_SOURCE_CAMERA_FOURTH = 12,
113  VIDEO_SOURCE_SCREEN_THIRD = 13,
116  VIDEO_SOURCE_SCREEN_FOURTH = 14,
119  VIDEO_SOURCE_SPEECH_DRIVEN = 15,
120 
121  VIDEO_SOURCE_UNKNOWN = 100
122 };
123 
127 enum AUDIO_SOURCE_TYPE {
130  AUDIO_SOURCE_MICROPHONE = 0,
133  AUDIO_SOURCE_CUSTOM = 1,
136  AUDIO_SOURCE_MEDIA_PLAYER = 2,
139  AUDIO_SOURCE_LOOPBACK_RECORDING = 3,
142  AUDIO_SOURCE_MIXED_STREAM = 4,
145  AUDIO_SOURCE_REMOTE_USER = 5,
148  AUDIO_SOURCE_REMOTE_CHANNEL = 6,
149 
150  AUDIO_SOURCE_UNKNOWN = 100
151 };
152 
156 enum AudioRoute {
160  ROUTE_DEFAULT = -1,
164  ROUTE_HEADSET = 0,
168  ROUTE_EARPIECE = 1,
172  ROUTE_HEADSETNOMIC = 2,
176  ROUTE_SPEAKERPHONE = 3,
180  ROUTE_LOUDSPEAKER = 4,
184  ROUTE_BLUETOOTH_DEVICE_HFP = 5,
188  ROUTE_USB = 6,
192  ROUTE_HDMI = 7,
196  ROUTE_DISPLAYPORT = 8,
200  ROUTE_AIRPLAY = 9,
204  ROUTE_BLUETOOTH_DEVICE_A2DP = 10,
205 };
206 
210 enum BYTES_PER_SAMPLE {
214  TWO_BYTES_PER_SAMPLE = 2,
215 };
216 
218  int sample_rate;
219  size_t channels;
220  size_t frames_per_buffer;
221 
222  AudioParameters() : sample_rate(0), channels(0), frames_per_buffer(0) {}
223 };
224 
228 enum RAW_AUDIO_FRAME_OP_MODE_TYPE {
232  RAW_AUDIO_FRAME_OP_MODE_READ_ONLY = 0,
233 
238  RAW_AUDIO_FRAME_OP_MODE_READ_WRITE = 2,
239 };
240 
241 } // namespace rtc
242 
243 namespace media {
247 enum MEDIA_SOURCE_TYPE {
251  AUDIO_PLAYOUT_SOURCE = 0,
255  AUDIO_RECORDING_SOURCE = 1,
259  PRIMARY_CAMERA_SOURCE = 2,
263  SECONDARY_CAMERA_SOURCE = 3,
267  PRIMARY_SCREEN_SOURCE = 4,
271  SECONDARY_SCREEN_SOURCE = 5,
275  CUSTOM_VIDEO_SOURCE = 6,
279  MEDIA_PLAYER_SOURCE = 7,
283  RTC_IMAGE_PNG_SOURCE = 8,
287  RTC_IMAGE_JPEG_SOURCE = 9,
291  RTC_IMAGE_GIF_SOURCE = 10,
295  REMOTE_VIDEO_SOURCE = 11,
299  TRANSCODED_VIDEO_SOURCE = 12,
303  SPEECH_DRIVEN_VIDEO_SOURCE = 13,
307  UNKNOWN_MEDIA_SOURCE = 100
308 };
311 #define MAX_CONTENT_INSPECT_MODULE_COUNT 32
312 enum CONTENT_INSPECT_RESULT {
313  CONTENT_INSPECT_NEUTRAL = 1,
314  CONTENT_INSPECT_SEXY = 2,
315  CONTENT_INSPECT_PORN = 3,
316 };
317 
318 enum CONTENT_INSPECT_TYPE {
322  CONTENT_INSPECT_INVALID = 0,
327  CONTENT_INSPECT_MODERATION __deprecated = 1,
331  CONTENT_INSPECT_SUPERVISION = 2,
335  CONTENT_INSPECT_IMAGE_MODERATION = 3
336 };
337 
342  CONTENT_INSPECT_TYPE type;
346  unsigned int interval;
348  type = CONTENT_INSPECT_INVALID;
349  interval = 0;
350  }
351 };
355  const char* extraInfo;
359  const char* serverConfig;
363  ContentInspectModule modules[MAX_CONTENT_INSPECT_MODULE_COUNT];
367  ContentInspectConfig& operator=(const ContentInspectConfig& rth) {
368  extraInfo = rth.extraInfo;
370  moduleCount = rth.moduleCount;
371  memcpy(&modules, &rth.modules, MAX_CONTENT_INSPECT_MODULE_COUNT * sizeof(ContentInspectModule));
372  return *this;
373  }
374  ContentInspectConfig() : extraInfo(NULL), serverConfig(NULL), moduleCount(0) {}
375 };
376 
377 namespace base {
378 
379 typedef void* view_t;
380 
381 typedef const char* user_id_t;
382 
383 static const uint8_t kMaxCodecNameLength = 50;
384 
393  uint32_t timestamp;
394  // Audio level indication.
395  uint8_t audioLevelIndication;
396  PacketOptions() : timestamp(0), audioLevelIndication(127) {}
397 };
398 
407  uint64_t sendTs;
411  uint8_t codec;
412  AudioEncodedFrameInfo() : sendTs(0), codec(0) {}
413 };
414 
423  // Stereo, 32 kHz, 60 ms (2 * 32 * 60)
431  kMaxDataSizeSamples = 3840,
433  kMaxDataSizeBytes = kMaxDataSizeSamples * sizeof(int16_t),
434  };
435 
454  rtc::BYTES_PER_SAMPLE bytes_per_sample;
456  int16_t data_[kMaxDataSizeSamples];
457 
463 
464  AudioPcmFrame& operator=(const AudioPcmFrame& src) {
465  if (this == &src) {
466  return *this;
467  }
468 
474  is_stereo_ = src.is_stereo_;
475  this->audio_track_number_ = src.audio_track_number_;
476 
477  size_t length = src.samples_per_channel_ * src.num_channels_;
478  if (length > kMaxDataSizeSamples) {
479  length = kMaxDataSizeSamples;
480  }
481 
482  memcpy(data_, src.data_, length * sizeof(int16_t));
483 
484  return *this;
485  }
486 
487  AudioPcmFrame()
488  : capture_timestamp(0),
490  sample_rate_hz_(0),
491  num_channels_(0),
493  bytes_per_sample(rtc::TWO_BYTES_PER_SAMPLE),
494  is_stereo_(false) {
495  memset(data_, 0, sizeof(data_));
496  }
497 
498  AudioPcmFrame(const AudioPcmFrame& src)
505  is_stereo_(src.is_stereo_) {
506  size_t length = src.samples_per_channel_ * src.num_channels_;
507  if (length > kMaxDataSizeSamples) {
508  length = kMaxDataSizeSamples;
509  }
510 
511  memcpy(this->data_, src.data_, length * sizeof(int16_t));
512  }
513 };
514 
517 enum AUDIO_DUAL_MONO_MODE {
519  AUDIO_DUAL_MONO_STEREO = 0,
521  AUDIO_DUAL_MONO_L = 1,
523  AUDIO_DUAL_MONO_R = 2,
525  AUDIO_DUAL_MONO_MIX = 3
526 };
527 
531 enum VIDEO_PIXEL_FORMAT {
535  VIDEO_PIXEL_DEFAULT = 0,
539  VIDEO_PIXEL_I420 = 1,
543  VIDEO_PIXEL_BGRA = 2,
547  VIDEO_PIXEL_NV21 = 3,
551  VIDEO_PIXEL_RGBA = 4,
555  VIDEO_PIXEL_NV12 = 8,
559  VIDEO_TEXTURE_2D = 10,
563  VIDEO_TEXTURE_OES = 11,
564  /*
565  12: pixel format for iOS CVPixelBuffer NV12
566  */
567  VIDEO_CVPIXEL_NV12 = 12,
568  /*
569  13: pixel format for iOS CVPixelBuffer I420
570  */
571  VIDEO_CVPIXEL_I420 = 13,
572  /*
573  14: pixel format for iOS CVPixelBuffer BGRA
574  */
575  VIDEO_CVPIXEL_BGRA = 14,
579  VIDEO_CVPIXEL_P010 = 15,
583  VIDEO_PIXEL_I422 = 16,
588  VIDEO_TEXTURE_ID3D11TEXTURE2D = 17,
593  VIDEO_PIXEL_I010 = 18,
594 };
595 
599 enum RENDER_MODE_TYPE {
604  RENDER_MODE_HIDDEN = 1,
610  RENDER_MODE_FIT = 2,
615  RENDER_MODE_ADAPTIVE __deprecated = 3,
616 };
617 
621 enum CAMERA_VIDEO_SOURCE_TYPE {
625  CAMERA_SOURCE_FRONT = 0,
629  CAMERA_SOURCE_BACK = 1,
633  VIDEO_SOURCE_UNSPECIFIED = 2,
634 };
635 
641  public:
642  enum META_INFO_KEY {
643  KEY_FACE_CAPTURE = 0,
644  };
645  virtual ~IVideoFrameMetaInfo(){};
646  virtual const char* getMetaInfoStr(META_INFO_KEY key) const = 0;
647 };
648 
649 struct ColorSpace {
650  enum PrimaryID {
651  // The indices are equal to the values specified in T-REC H.273 Table 2.
652  PRIMARYID_BT709 = 1,
653  PRIMARYID_UNSPECIFIED = 2,
654  PRIMARYID_BT470M = 4,
655  PRIMARYID_BT470BG = 5,
656  PRIMARYID_SMPTE170M = 6, // Identical to BT601
657  PRIMARYID_SMPTE240M = 7,
658  PRIMARYID_FILM = 8,
659  PRIMARYID_BT2020 = 9,
660  PRIMARYID_SMPTEST428 = 10,
661  PRIMARYID_SMPTEST431 = 11,
662  PRIMARYID_SMPTEST432 = 12,
663  PRIMARYID_JEDECP22 = 22, // Identical to EBU3213-E
664  };
665 
666  enum RangeID {
667  // The indices are equal to the values specified at
668  // https://www.webmproject.org/docs/container/#colour for the element Range.
669  RANGEID_INVALID = 0,
670  // Limited Rec. 709 color range with RGB values ranging from 16 to 235.
671  RANGEID_LIMITED = 1,
672  // Full RGB color range with RGB valees from 0 to 255.
673  RANGEID_FULL = 2,
674  // Range is defined by MatrixCoefficients/TransferCharacteristics.
675  RANGEID_DERIVED = 3,
676  };
677 
678  enum MatrixID {
679  // The indices are equal to the values specified in T-REC H.273 Table 4.
680  MATRIXID_RGB = 0,
681  MATRIXID_BT709 = 1,
682  MATRIXID_UNSPECIFIED = 2,
683  MATRIXID_FCC = 4,
684  MATRIXID_BT470BG = 5,
685  MATRIXID_SMPTE170M = 6,
686  MATRIXID_SMPTE240M = 7,
687  MATRIXID_YCOCG = 8,
688  MATRIXID_BT2020_NCL = 9,
689  MATRIXID_BT2020_CL = 10,
690  MATRIXID_SMPTE2085 = 11,
691  MATRIXID_CDNCLS = 12,
692  MATRIXID_CDCLS = 13,
693  MATRIXID_BT2100_ICTCP = 14,
694  };
695 
696  enum TransferID {
697  // The indices are equal to the values specified in T-REC H.273 Table 3.
698  TRANSFERID_BT709 = 1,
699  TRANSFERID_UNSPECIFIED = 2,
700  TRANSFERID_GAMMA22 = 4,
701  TRANSFERID_GAMMA28 = 5,
702  TRANSFERID_SMPTE170M = 6,
703  TRANSFERID_SMPTE240M = 7,
704  TRANSFERID_LINEAR = 8,
705  TRANSFERID_LOG = 9,
706  TRANSFERID_LOG_SQRT = 10,
707  TRANSFERID_IEC61966_2_4 = 11,
708  TRANSFERID_BT1361_ECG = 12,
709  TRANSFERID_IEC61966_2_1 = 13,
710  TRANSFERID_BT2020_10 = 14,
711  TRANSFERID_BT2020_12 = 15,
712  TRANSFERID_SMPTEST2084 = 16,
713  TRANSFERID_SMPTEST428 = 17,
714  TRANSFERID_ARIB_STD_B67 = 18,
715  };
716 
717  PrimaryID primaries;
718  TransferID transfer;
719  MatrixID matrix;
720  RangeID range;
721 
722  ColorSpace()
723  : primaries(PRIMARYID_UNSPECIFIED), transfer(TRANSFERID_UNSPECIFIED),
724  matrix(MATRIXID_UNSPECIFIED), range(RANGEID_INVALID) {}
725 
726  bool validate() const {
727  return primaries != PRIMARYID_UNSPECIFIED || transfer != TRANSFERID_UNSPECIFIED ||
728  matrix != MATRIXID_UNSPECIFIED ||
729  range != RANGEID_INVALID;
730  }
731 };
732 
740  uint16_t redPrimaryX;
744  uint16_t redPrimaryY;
748  uint16_t greenPrimaryX;
752  uint16_t greenPrimaryY;
756  uint16_t bluePrimaryX;
760  uint16_t bluePrimaryY;
764  uint16_t whitePointX;
768  uint16_t whitePointY;
772  unsigned int maxMasteringLuminance;
776  unsigned int minMasteringLuminance;
785 
787  : redPrimaryX(0),
788  redPrimaryY(0),
789  greenPrimaryX(0),
790  greenPrimaryY(0),
791  bluePrimaryX(0),
792  bluePrimaryY(0),
793  whitePointX(0),
794  whitePointY(0),
799 
800  bool validate() const {
801  return maxContentLightLevel >= 0 && maxContentLightLevel <= 20000 &&
803  maxFrameAverageLightLevel <= 20000;
804  }
805 };
806 
810 enum ALPHA_STITCH_MODE {
814  NO_ALPHA_STITCH = 0,
818  ALPHA_STITCH_UP = 1,
822  ALPHA_STITCH_BELOW = 2,
826  ALPHA_STITCH_LEFT = 3,
830  ALPHA_STITCH_RIGHT = 4,
831 };
832 
833 
840  format(VIDEO_PIXEL_DEFAULT),
841  buffer(NULL),
842  stride(0),
843  height(0),
844  cropLeft(0),
845  cropTop(0),
846  cropRight(0),
847  cropBottom(0),
848  rotation(0),
849  timestamp(0),
850  eglContext(NULL),
852  textureId(0),
853  fenceObject(0),
854  metadataBuffer(NULL),
855  metadataSize(0),
856  alphaBuffer(NULL),
857  fillAlphaBuffer(false),
858  alphaStitchMode(NO_ALPHA_STITCH),
859  d3d11Texture2d(NULL),
860  textureSliceIndex(0){}
861 
874  };
875 
892  };
893 
901  VIDEO_PIXEL_FORMAT format;
902 
906  void* buffer;
911  int stride;
915  int height;
920  int cropLeft;
925  int cropTop;
940  int rotation;
948  long long timestamp;
955  void* eglContext;
969  long long fenceObject;
973  float matrix[16];
978  uint8_t* metadataBuffer;
989  uint8_t* alphaBuffer;
1004  ALPHA_STITCH_MODE alphaStitchMode;
1005 
1010 
1015 
1020 
1025 };
1026 
1030 struct VideoFrame {
1031  VideoFrame():
1032  type(VIDEO_PIXEL_DEFAULT),
1033  width(0),
1034  height(0),
1035  yStride(0),
1036  uStride(0),
1037  vStride(0),
1038  yBuffer(NULL),
1039  uBuffer(NULL),
1040  vBuffer(NULL),
1041  rotation(0),
1042  renderTimeMs(0),
1043  avsync_type(0),
1044  metadata_buffer(NULL),
1045  metadata_size(0),
1046  sharedContext(0),
1047  textureId(0),
1048  d3d11Texture2d(NULL),
1049  alphaBuffer(NULL),
1050  alphaStitchMode(NO_ALPHA_STITCH),
1051  pixelBuffer(NULL),
1052  metaInfo(NULL){
1053  memset(matrix, 0, sizeof(matrix));
1054  }
1058  VIDEO_PIXEL_FORMAT type;
1062  int width;
1066  int height;
1070  int yStride;
1074  int uStride;
1078  int vStride;
1082  uint8_t* yBuffer;
1086  uint8_t* uBuffer;
1090  uint8_t* vBuffer;
1101  int64_t renderTimeMs;
1132  float matrix[16];
1138  uint8_t* alphaBuffer;
1148  ALPHA_STITCH_MODE alphaStitchMode;
1158 
1163 
1168 };
1169 
1174  public:
1183  virtual void onFrame(const VideoFrame* frame) = 0;
1184  virtual ~IVideoFrameObserver() {}
1185  virtual bool isExternal() { return true; }
1186  virtual VIDEO_PIXEL_FORMAT getVideoFormatPreference() { return VIDEO_PIXEL_DEFAULT; }
1187 };
1188 
1189 enum MEDIA_PLAYER_SOURCE_TYPE {
1195  MEDIA_PLAYER_SOURCE_DEFAULT,
1201  MEDIA_PLAYER_SOURCE_FULL_FEATURED,
1206  MEDIA_PLAYER_SOURCE_SIMPLE,
1207 };
1208 
1209 enum VIDEO_MODULE_POSITION {
1210  POSITION_POST_CAPTURER = 1 << 0,
1211  POSITION_PRE_RENDERER = 1 << 1,
1212  POSITION_PRE_ENCODER = 1 << 2,
1213  POSITION_POST_CAPTURER_ORIGIN = 1 << 3,
1214 };
1215 
1216 } // namespace base
1217 
1228  const char* filePath;
1229 
1238  media::base::VIDEO_MODULE_POSITION position;
1239  SnapshotConfig() :filePath(NULL), position(media::base::POSITION_PRE_ENCODER) {}
1240 };
1241 
1246  public:
1255  virtual void onFrame(agora::media::base::AudioPcmFrame* frame) = 0;
1256  virtual ~IAudioPcmFrameSink() {}
1257 };
1258 
1263  public:
1272  };
1273  enum { MAX_HANDLE_TIME_CNT = 10 };
1277  struct AudioFrame {
1289  agora::rtc::BYTES_PER_SAMPLE bytesPerSample;
1306  void* buffer;
1314  int64_t renderTimeMs;
1337  uint32_t rtpTimestamp;
1338 
1339  AudioFrame()
1341  samplesPerChannel(0),
1342  bytesPerSample(rtc::TWO_BYTES_PER_SAMPLE),
1343  channels(0),
1344  samplesPerSec(0),
1345  buffer(NULL),
1346  renderTimeMs(0),
1347  avsync_type(0),
1348  presentationMs(0),
1349  audioTrackNumber(0),
1350  rtpTimestamp(0) {}
1351  };
1352 
1354  AUDIO_FRAME_POSITION_NONE = 0x0000,
1370  };
1371 
1372  struct AudioParams {
1382 
1383  /* The number of audio channels, which can be set as either of the following values:
1384 
1385  - `1`: Mono (Default)
1386  - `2`: Stereo
1387  */
1388  int channels;
1389 
1390  /* The use mode of the audio data. See AgoraAudioRawFrameOperationMode.
1391  */
1392  rtc::RAW_AUDIO_FRAME_OP_MODE_TYPE mode;
1393 
1398 
1399  AudioParams()
1400  : sample_rate(0),
1401  channels(0),
1402  mode(rtc::RAW_AUDIO_FRAME_OP_MODE_READ_ONLY),
1403  samples_per_call(0) {}
1404  AudioParams(int samplerate, int channel, rtc::RAW_AUDIO_FRAME_OP_MODE_TYPE type,
1405  int samplesPerCall)
1406  : sample_rate(samplerate),
1407  channels(channel),
1408  mode(type),
1409  samples_per_call(samplesPerCall) {}
1410  };
1411 
1412  public:
1413  virtual ~IAudioFrameObserverBase() {}
1414 
1423  virtual bool onRecordAudioFrame(const char* channelId, AudioFrame& audioFrame) = 0;
1432  virtual bool onPlaybackAudioFrame(const char* channelId, AudioFrame& audioFrame) = 0;
1441  virtual bool onMixedAudioFrame(const char* channelId, AudioFrame& audioFrame) = 0;
1449  virtual bool onEarMonitoringAudioFrame(AudioFrame& audioFrame) = 0;
1459  virtual bool onPlaybackAudioFrameBeforeMixing(const char* channelId, base::user_id_t userId,
1460  AudioFrame& audioFrame) {
1461  (void)channelId;
1462  (void)userId;
1463  (void)audioFrame;
1464  return true;
1465  }
1466 
1490 
1503 
1515 
1527 
1539 };
1540 
1545  public:
1556  virtual bool onPlaybackAudioFrameBeforeMixing(const char* channelId, rtc::uid_t uid,
1557  AudioFrame& audioFrame) = 0;
1558 };
1559 
1564  const float* audioSpectrumData;
1569 
1571  AudioSpectrumData(const float* data, int length) : audioSpectrumData(data), dataLength(length) {}
1572 };
1573 
1578  agora::rtc::uid_t uid;
1583 
1584  UserAudioSpectrumInfo() : uid(0) {}
1585 
1586  UserAudioSpectrumInfo(agora::rtc::uid_t uid, const float* data, int length)
1587  : uid(uid), spectrumData(data, length) {}
1588 };
1589 
1594  public:
1595  virtual ~IAudioSpectrumObserver() {}
1596 
1610  virtual bool onLocalAudioSpectrum(const AudioSpectrumData& data) = 0;
1630  virtual bool onRemoteAudioSpectrum(const UserAudioSpectrumInfo* spectrums,
1631  unsigned int spectrumNumber) = 0;
1632 };
1633 
1638  public:
1650  rtc::uid_t uid, const uint8_t* imageBuffer, size_t length,
1651  const rtc::EncodedVideoFrameInfo& videoEncodedFrameInfo) = 0;
1652 
1653  virtual ~IVideoEncodedFrameObserver() {}
1654 };
1655 
1660  public:
1671  PROCESS_MODE_READ_ONLY, // Observer works as a pure renderer and will not modify the original
1672  // frame.
1678  PROCESS_MODE_READ_WRITE, // Observer works as a filter that will process the video frame and
1679  // affect the following frame processing in SDK.
1680  };
1681 
1682  public:
1683  virtual ~IVideoFrameObserver() {}
1684 
1707  virtual bool onCaptureVideoFrame(agora::rtc::VIDEO_SOURCE_TYPE sourceType,
1708  VideoFrame& videoFrame) = 0;
1709 
1733  virtual bool onPreEncodeVideoFrame(agora::rtc::VIDEO_SOURCE_TYPE sourceType,
1734  VideoFrame& videoFrame) = 0;
1735 
1759  virtual bool onMediaPlayerVideoFrame(VideoFrame& videoFrame, int mediaPlayerId) = 0;
1760 
1780  virtual bool onRenderVideoFrame(const char* channelId, rtc::uid_t remoteUid,
1781  VideoFrame& videoFrame) = 0;
1782 
1783  virtual bool onTranscodedVideoFrame(VideoFrame& videoFrame) = 0;
1784 
1795 
1811  virtual base::VIDEO_PIXEL_FORMAT getVideoFormatPreference() { return base::VIDEO_PIXEL_DEFAULT; }
1812 
1828  virtual bool getRotationApplied() { return false; }
1829 
1846  virtual bool getMirrorApplied() { return false; }
1847 
1870  virtual uint32_t getObservedFramePosition() {
1871  return base::POSITION_POST_CAPTURER | base::POSITION_PRE_RENDERER;
1872  }
1873 
1881  virtual bool isExternal() { return true; }
1882 };
1883 
1887 enum EXTERNAL_VIDEO_SOURCE_TYPE {
1891  VIDEO_FRAME = 0,
1895  ENCODED_VIDEO_FRAME,
1896 };
1897 
1903 enum MediaRecorderContainerFormat {
1907  FORMAT_MP4 = 1,
1908 };
1914 enum MediaRecorderStreamType {
1918  STREAM_TYPE_AUDIO = 0x01,
1922  STREAM_TYPE_VIDEO = 0x02,
1926  STREAM_TYPE_BOTH = STREAM_TYPE_AUDIO | STREAM_TYPE_VIDEO,
1927 };
1933 enum RecorderState {
1937  RECORDER_STATE_ERROR = -1,
1941  RECORDER_STATE_START = 2,
1945  RECORDER_STATE_STOP = 3,
1946 };
1952 enum RecorderReasonCode {
1956  RECORDER_REASON_NONE = 0,
1960  RECORDER_REASON_WRITE_FAILED = 1,
1965  RECORDER_REASON_NO_STREAM = 2,
1969  RECORDER_REASON_OVER_MAX_DURATION = 3,
1973  RECORDER_REASON_CONFIG_CHANGED = 4,
1974 };
1989  const char* storagePath;
1994  MediaRecorderContainerFormat containerFormat;
1998  MediaRecorderStreamType streamType;
2013  int width;
2017  int height;
2021  int fps;
2033  agora::rtc::VIDEO_SOURCE_TYPE videoSourceType;
2034 
2036  : storagePath(NULL),
2037  containerFormat(FORMAT_MP4),
2038  streamType(STREAM_TYPE_BOTH),
2039  maxDurationMs(120000),
2041  width(1280),
2042  height(720),
2043  fps(30),
2044  sample_rate(48000),
2045  channel_num(1),
2046  videoSourceType(rtc::VIDEO_SOURCE_CAMERA_PRIMARY) {}
2047  MediaRecorderConfiguration(const char* path, MediaRecorderContainerFormat format,
2048  MediaRecorderStreamType type, int duration, int interval)
2049  : storagePath(path),
2050  containerFormat(format),
2051  streamType(type),
2052  maxDurationMs(duration),
2053  recorderInfoUpdateInterval(interval),
2054  width(1280),
2055  height(720),
2056  fps(30),
2057  sample_rate(48000),
2058  channel_num(1),
2059  videoSourceType(rtc::VIDEO_SOURCE_CAMERA_PRIMARY) {}
2060 };
2061 
2063  public:
2071  virtual bool onFaceInfo(const char* outFaceInfo) = 0;
2072 
2073  virtual ~IFaceInfoObserver() {}
2074 };
2075 
2085  const char* fileName;
2089  unsigned int durationMs;
2093  unsigned int fileSize;
2094 
2095  RecorderInfo() : fileName(NULL), durationMs(0), fileSize(0) {}
2096  RecorderInfo(const char* name, unsigned int dur, unsigned int size)
2097  : fileName(name), durationMs(dur), fileSize(size) {}
2098 };
2099 
2101  public:
2116  virtual void onRecorderStateChanged(const char* channelId, rtc::uid_t uid, RecorderState state,
2117  RecorderReasonCode reason) = 0;
2134  virtual void onRecorderInfoUpdated(const char* channelId, rtc::uid_t uid,
2135  const RecorderInfo& info) = 0;
2136 
2137  virtual ~IMediaRecorderObserver() {}
2138 };
2139 
2140 } // namespace media
2141 } // namespace agora
agora::media::IVideoFrameObserver::PROCESS_MODE_READ_ONLY
@ PROCESS_MODE_READ_ONLY
Definition: AgoraMediaBase.h:1671
agora::media::base::VideoFrame
Definition: AgoraMediaBase.h:1030
agora::media::base::ExternalVideoFrame::cropBottom
int cropBottom
Definition: AgoraMediaBase.h:935
agora::media::base::Hdr10MetadataInfo::redPrimaryY
uint16_t redPrimaryY
Definition: AgoraMediaBase.h:744
agora::media::base::VideoFrame::metadata_size
int metadata_size
Definition: AgoraMediaBase.h:1115
agora::media::SnapshotConfig::filePath
const char * filePath
Definition: AgoraMediaBase.h:1228
agora::media::AudioSpectrumData::audioSpectrumData
const float * audioSpectrumData
Definition: AgoraMediaBase.h:1564
agora::media::IAudioFrameObserverBase::onEarMonitoringAudioFrame
virtual bool onEarMonitoringAudioFrame(AudioFrame &audioFrame)=0
agora::rtc::ExtensionContext::providerName
const char * providerName
Definition: AgoraMediaBase.h:56
agora::media::base::ExternalVideoFrame::matrix
float matrix[16]
Definition: AgoraMediaBase.h:973
agora::media::IAudioPcmFrameSink
Definition: AgoraMediaBase.h:1245
agora::media::IMediaRecorderObserver
Definition: AgoraMediaBase.h:2100
agora::media::IAudioFrameObserverBase
Definition: AgoraMediaBase.h:1262
agora::media::base::ExternalVideoFrame::colorSpace
ColorSpace colorSpace
Definition: AgoraMediaBase.h:1024
agora::media::ContentInspectConfig::modules
ContentInspectModule modules[MAX_CONTENT_INSPECT_MODULE_COUNT]
Definition: AgoraMediaBase.h:363
agora::media::base::VideoFrame::uStride
int uStride
Definition: AgoraMediaBase.h:1074
agora::media::IAudioFrameObserverBase::AudioFrame::rtpTimestamp
uint32_t rtpTimestamp
Definition: AgoraMediaBase.h:1337
agora::media::IAudioFrameObserverBase::FRAME_TYPE_PCM16
@ FRAME_TYPE_PCM16
Definition: AgoraMediaBase.h:1271
agora::media::IAudioFrameObserverBase::AudioFrame::audioTrackNumber
int audioTrackNumber
Definition: AgoraMediaBase.h:1333
agora::media::base::VideoFrame::alphaBuffer
uint8_t * alphaBuffer
Definition: AgoraMediaBase.h:1138
agora::media::IFaceInfoObserver
Definition: AgoraMediaBase.h:2062
agora::media::base::VideoFrame::height
int height
Definition: AgoraMediaBase.h:1066
agora::media::base::AudioPcmFrame::data_
int16_t data_[kMaxDataSizeSamples]
Definition: AgoraMediaBase.h:456
agora::media::IAudioFrameObserverBase::onRecordAudioFrame
virtual bool onRecordAudioFrame(const char *channelId, AudioFrame &audioFrame)=0
agora::media::MediaRecorderConfiguration::maxDurationMs
int maxDurationMs
Definition: AgoraMediaBase.h:2002
agora::media::IAudioSpectrumObserver
Definition: AgoraMediaBase.h:1593
agora::rtc::AudioParameters
Definition: AgoraMediaBase.h:217
agora::media::IAudioFrameObserverBase::AudioFrame::renderTimeMs
int64_t renderTimeMs
Definition: AgoraMediaBase.h:1314
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_RAW_DATA
@ VIDEO_BUFFER_RAW_DATA
Definition: AgoraMediaBase.h:883
agora::media::IAudioFrameObserverBase::getPlaybackAudioParams
virtual AudioParams getPlaybackAudioParams()=0
agora::media::base::ExternalVideoFrame::buffer
void * buffer
Definition: AgoraMediaBase.h:906
agora::media::IAudioFrameObserverBase::AudioFrame::channels
int channels
Definition: AgoraMediaBase.h:1295
agora::media::IVideoFrameObserver::getVideoFormatPreference
virtual base::VIDEO_PIXEL_FORMAT getVideoFormatPreference()
Definition: AgoraMediaBase.h:1811
agora::rtc::EncodedVideoFrameInfo
Definition: AgoraBase.h:1640
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_TYPE
VIDEO_BUFFER_TYPE
Definition: AgoraMediaBase.h:879
agora::media::ContentInspectConfig::serverConfig
const char * serverConfig
Definition: AgoraMediaBase.h:359
agora::media::base::IVideoFrameObserver
Definition: AgoraMediaBase.h:1173
agora::media::IVideoFrameObserver::getVideoFrameProcessMode
virtual VIDEO_FRAME_PROCESS_MODE getVideoFrameProcessMode()
Definition: AgoraMediaBase.h:1794
agora::media::IVideoFrameObserver
Definition: AgoraMediaBase.h:1659
agora::media::IAudioFrameObserverBase::AudioFrame
Definition: AgoraMediaBase.h:1277
agora::media::base::AudioEncodedFrameInfo::codec
uint8_t codec
Definition: AgoraMediaBase.h:411
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:2009
agora::media::IAudioFrameObserver
Definition: AgoraMediaBase.h:1544
agora::media::base::Hdr10MetadataInfo
Definition: AgoraMediaBase.h:736
agora::media::IAudioFrameObserverBase::getEarMonitoringAudioParams
virtual AudioParams getEarMonitoringAudioParams()=0
agora::media::base::VideoFrame::d3d11Texture2d
void * d3d11Texture2d
Definition: AgoraMediaBase.h:1128
agora::media::base::VideoFrame::rotation
int rotation
Definition: AgoraMediaBase.h:1094
agora::media::base::VideoFrame::alphaStitchMode
ALPHA_STITCH_MODE alphaStitchMode
Definition: AgoraMediaBase.h:1148
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:422
agora::media::MediaRecorderConfiguration::sample_rate
int sample_rate
Definition: AgoraMediaBase.h:2025
agora::media::base::ExternalVideoFrame::eglContext
void * eglContext
Definition: AgoraMediaBase.h:955
agora::media::base::VideoFrame::metaInfo
IVideoFrameMetaInfo * metaInfo
Definition: AgoraMediaBase.h:1157
agora::media::base::ExternalVideoFrame::cropRight
int cropRight
Definition: AgoraMediaBase.h:930
agora::media::IAudioFrameObserverBase::getRecordAudioParams
virtual AudioParams getRecordAudioParams()=0
agora::media::base::VideoFrame::textureId
int textureId
Definition: AgoraMediaBase.h:1123
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_ARRAY
@ VIDEO_BUFFER_ARRAY
Definition: AgoraMediaBase.h:887
agora::rtc::ExtensionContext
Definition: AgoraMediaBase.h:41
agora::media::MediaRecorderConfiguration::videoSourceType
agora::rtc::VIDEO_SOURCE_TYPE videoSourceType
Definition: AgoraMediaBase.h:2033
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_TEXTURE
@ VIDEO_BUFFER_TEXTURE
Definition: AgoraMediaBase.h:891
agora::media::IAudioFrameObserverBase::AudioFrame::presentationMs
int64_t presentationMs
Definition: AgoraMediaBase.h:1329
agora::media::base::VideoFrame::avsync_type
int avsync_type
Definition: AgoraMediaBase.h:1105
agora::media::base::Hdr10MetadataInfo::greenPrimaryY
uint16_t greenPrimaryY
Definition: AgoraMediaBase.h:752
agora::media::base::VideoFrame::matrix
float matrix[16]
Definition: AgoraMediaBase.h:1132
agora::media::base::ExternalVideoFrame::fenceObject
long long fenceObject
Definition: AgoraMediaBase.h:969
agora::media::base::ExternalVideoFrame::cropLeft
int cropLeft
Definition: AgoraMediaBase.h:920
agora::media::IAudioFrameObserverBase::AudioFrame::samplesPerSec
int samplesPerSec
Definition: AgoraMediaBase.h:1299
agora::media::ContentInspectModule
Definition: AgoraMediaBase.h:338
agora::media::IAudioFrameObserverBase::AudioFrame::buffer
void * buffer
Definition: AgoraMediaBase.h:1306
agora::media::IAudioFrameObserverBase::onPlaybackAudioFrameBeforeMixing
virtual bool onPlaybackAudioFrameBeforeMixing(const char *channelId, base::user_id_t userId, AudioFrame &audioFrame)
Definition: AgoraMediaBase.h:1459
agora::media::IAudioSpectrumObserver::onRemoteAudioSpectrum
virtual bool onRemoteAudioSpectrum(const UserAudioSpectrumInfo *spectrums, unsigned int spectrumNumber)=0
agora::media::MediaRecorderConfiguration::fps
int fps
Definition: AgoraMediaBase.h:2021
agora::media::base::ColorSpace
Definition: AgoraMediaBase.h:649
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:837
agora::media::base::ExternalVideoFrame::d3d11Texture2d
void * d3d11Texture2d
Definition: AgoraMediaBase.h:1009
agora::media::base::AudioEncodedFrameInfo::sendTs
uint64_t sendTs
Definition: AgoraMediaBase.h:407
agora::media::ContentInspectConfig::moduleCount
int moduleCount
Definition: AgoraMediaBase.h:366
agora::media::base::Hdr10MetadataInfo::whitePointX
uint16_t whitePointX
Definition: AgoraMediaBase.h:764
agora::media::base::VideoFrame::type
VIDEO_PIXEL_FORMAT type
Definition: AgoraMediaBase.h:1058
agora::media::base::AudioPcmFrame::capture_timestamp
int64_t capture_timestamp
Definition: AgoraMediaBase.h:438
agora::media::base::ExternalVideoFrame::timestamp
long long timestamp
Definition: AgoraMediaBase.h:948
agora::media::base::AudioPcmFrame::sample_rate_hz_
int sample_rate_hz_
Definition: AgoraMediaBase.h:444
agora::media::MediaRecorderConfiguration::height
int height
Definition: AgoraMediaBase.h:2017
agora::media::IFaceInfoObserver::onFaceInfo
virtual bool onFaceInfo(const char *outFaceInfo)=0
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION
AUDIO_FRAME_POSITION
Definition: AgoraMediaBase.h:1353
agora::media::base::ExternalVideoFrame::height
int height
Definition: AgoraMediaBase.h:915
agora::media::base::VideoFrame::sharedContext
void * sharedContext
Definition: AgoraMediaBase.h:1119
agora::media::base::ExternalVideoFrame::rotation
int rotation
Definition: AgoraMediaBase.h:940
agora::media::RecorderInfo
Definition: AgoraMediaBase.h:2081
agora::media::base::ExternalVideoFrame::metadataBuffer
uint8_t * metadataBuffer
Definition: AgoraMediaBase.h:978
agora::media::IVideoFrameObserver::onCaptureVideoFrame
virtual bool onCaptureVideoFrame(agora::rtc::VIDEO_SOURCE_TYPE sourceType, VideoFrame &videoFrame)=0
agora::media::base::Hdr10MetadataInfo::minMasteringLuminance
unsigned int minMasteringLuminance
Definition: AgoraMediaBase.h:776
agora::media::UserAudioSpectrumInfo::spectrumData
struct AudioSpectrumData spectrumData
Definition: AgoraMediaBase.h:1582
agora::media::IAudioFrameObserverBase::AudioParams::samples_per_call
int samples_per_call
Definition: AgoraMediaBase.h:1397
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_PLAYBACK
@ AUDIO_FRAME_POSITION_PLAYBACK
Definition: AgoraMediaBase.h:1357
agora::media::base::ExternalVideoFrame::alphaStitchMode
ALPHA_STITCH_MODE alphaStitchMode
Definition: AgoraMediaBase.h:1004
agora::media::base::PacketOptions
Definition: AgoraMediaBase.h:389
agora::media::base::PacketOptions::timestamp
uint32_t timestamp
Definition: AgoraMediaBase.h:393
agora::media::base::Hdr10MetadataInfo::maxMasteringLuminance
unsigned int maxMasteringLuminance
Definition: AgoraMediaBase.h:772
agora::media::base::Hdr10MetadataInfo::whitePointY
uint16_t whitePointY
Definition: AgoraMediaBase.h:768
agora::media::base::Hdr10MetadataInfo::greenPrimaryX
uint16_t greenPrimaryX
Definition: AgoraMediaBase.h:748
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_TYPE
AUDIO_FRAME_TYPE
Definition: AgoraMediaBase.h:1267
agora::media::MediaRecorderConfiguration::channel_num
int channel_num
Definition: AgoraMediaBase.h:2029
agora::media::base::VideoFrame::yBuffer
uint8_t * yBuffer
Definition: AgoraMediaBase.h:1082
agora::media::base::VideoFrame::hdr10MetadataInfo
Hdr10MetadataInfo hdr10MetadataInfo
Definition: AgoraMediaBase.h:1162
agora::media::base::VideoFrame::colorSpace
ColorSpace colorSpace
Definition: AgoraMediaBase.h:1167
agora::media::base::AudioPcmFrame::bytes_per_sample
rtc::BYTES_PER_SAMPLE bytes_per_sample
Definition: AgoraMediaBase.h:454
agora::media::UserAudioSpectrumInfo
Definition: AgoraMediaBase.h:1574
agora::media::base::Hdr10MetadataInfo::redPrimaryX
uint16_t redPrimaryX
Definition: AgoraMediaBase.h:740
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_EAR_MONITORING
@ AUDIO_FRAME_POSITION_EAR_MONITORING
Definition: AgoraMediaBase.h:1369
agora::media::RecorderInfo::fileName
const char * fileName
Definition: AgoraMediaBase.h:2085
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:1678
agora::media::IVideoFrameObserver::isExternal
virtual bool isExternal()
Definition: AgoraMediaBase.h:1881
agora::media::ContentInspectModule::interval
unsigned int interval
Definition: AgoraMediaBase.h:346
agora::media::IVideoFrameObserver::getObservedFramePosition
virtual uint32_t getObservedFramePosition()
Definition: AgoraMediaBase.h:1870
agora::media::base::VideoFrame::yStride
int yStride
Definition: AgoraMediaBase.h:1070
agora::media::base::ExternalVideoFrame::alphaBuffer
uint8_t * alphaBuffer
Definition: AgoraMediaBase.h:989
agora::media::base::Hdr10MetadataInfo::bluePrimaryX
uint16_t bluePrimaryX
Definition: AgoraMediaBase.h:756
agora::media::ContentInspectModule::type
CONTENT_INSPECT_TYPE type
Definition: AgoraMediaBase.h:342
agora::media::MediaRecorderConfiguration::containerFormat
MediaRecorderContainerFormat containerFormat
Definition: AgoraMediaBase.h:1994
agora::media::base::ExternalVideoFrame::EGL_CONTEXT14
@ EGL_CONTEXT14
Definition: AgoraMediaBase.h:873
agora::media::RecorderInfo::fileSize
unsigned int fileSize
Definition: AgoraMediaBase.h:2093
agora::media::base::ExternalVideoFrame::cropTop
int cropTop
Definition: AgoraMediaBase.h:925
agora::media::base::ExternalVideoFrame::type
VIDEO_BUFFER_TYPE type
Definition: AgoraMediaBase.h:897
agora::media::IVideoFrameObserver::onPreEncodeVideoFrame
virtual bool onPreEncodeVideoFrame(agora::rtc::VIDEO_SOURCE_TYPE sourceType, VideoFrame &videoFrame)=0
agora::media::base::ExternalVideoFrame::textureSliceIndex
int textureSliceIndex
Definition: AgoraMediaBase.h:1014
agora::media::base::Hdr10MetadataInfo::bluePrimaryY
uint16_t bluePrimaryY
Definition: AgoraMediaBase.h:760
agora::media::IVideoFrameObserver::getRotationApplied
virtual bool getRotationApplied()
Definition: AgoraMediaBase.h:1828
agora::media::base::Hdr10MetadataInfo::maxContentLightLevel
uint16_t maxContentLightLevel
Definition: AgoraMediaBase.h:780
agora::media::SnapshotConfig
Definition: AgoraMediaBase.h:1220
agora::media::base::VideoFrame::vBuffer
uint8_t * vBuffer
Definition: AgoraMediaBase.h:1090
agora::media::AudioSpectrumData::dataLength
int dataLength
Definition: AgoraMediaBase.h:1568
agora::media::base::ExternalVideoFrame::EGL_CONTEXT_TYPE
EGL_CONTEXT_TYPE
Definition: AgoraMediaBase.h:865
agora::media::IAudioFrameObserverBase::onMixedAudioFrame
virtual bool onMixedAudioFrame(const char *channelId, AudioFrame &audioFrame)=0
agora::media::IAudioFrameObserverBase::AudioParams
Definition: AgoraMediaBase.h:1372
agora::media::base::AudioPcmFrame::num_channels_
size_t num_channels_
Definition: AgoraMediaBase.h:447
agora::rtc::ExtensionContext::uid
uid_t uid
Definition: AgoraMediaBase.h:52
agora::media::IAudioFrameObserverBase::AudioFrame::avsync_type
int avsync_type
Definition: AgoraMediaBase.h:1322
agora::media::IAudioFrameObserverBase::getObservedAudioFramePosition
virtual int getObservedAudioFramePosition()=0
agora::media::MediaRecorderConfiguration
Definition: AgoraMediaBase.h:1980
agora::media::base::VideoFrame::metadata_buffer
uint8_t * metadata_buffer
Definition: AgoraMediaBase.h:1110
agora::rtc::ExtensionContext::isValid
bool isValid
Definition: AgoraMediaBase.h:47
agora::media::MediaRecorderConfiguration::streamType
MediaRecorderStreamType streamType
Definition: AgoraMediaBase.h:1998
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_BEFORE_MIXING
@ AUDIO_FRAME_POSITION_BEFORE_MIXING
Definition: AgoraMediaBase.h:1366
agora::media::MediaRecorderConfiguration::storagePath
const char * storagePath
Definition: AgoraMediaBase.h:1989
agora::media::AudioSpectrumData
Definition: AgoraMediaBase.h:1560
agora::media::base::VideoFrame::width
int width
Definition: AgoraMediaBase.h:1062
agora::media::base::AudioPcmFrame::audio_track_number_
int audio_track_number_
Definition: AgoraMediaBase.h:451
agora::media::RecorderInfo::durationMs
unsigned int durationMs
Definition: AgoraMediaBase.h:2089
agora::media::base::VideoFrame::renderTimeMs
int64_t renderTimeMs
Definition: AgoraMediaBase.h:1101
agora::media::base::AudioPcmFrame::samples_per_channel_
size_t samples_per_channel_
Definition: AgoraMediaBase.h:441
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:1289
agora::media::base::ExternalVideoFrame::textureId
int textureId
Definition: AgoraMediaBase.h:964
agora::media::base::VideoFrame::pixelBuffer
void * pixelBuffer
Definition: AgoraMediaBase.h:1152
agora::media::IAudioFrameObserverBase::AudioFrame::type
AUDIO_FRAME_TYPE type
Definition: AgoraMediaBase.h:1281
agora::media::IAudioPcmFrameSink::onFrame
virtual void onFrame(agora::media::base::AudioPcmFrame *frame)=0
agora::media::base::AudioPcmFrame::is_stereo_
bool is_stereo_
Definition: AgoraMediaBase.h:462
agora::media::IVideoEncodedFrameObserver
Definition: AgoraMediaBase.h:1637
agora::media::IAudioFrameObserverBase::AudioFrame::samplesPerChannel
int samplesPerChannel
Definition: AgoraMediaBase.h:1285
agora::media::IVideoFrameObserver::getMirrorApplied
virtual bool getMirrorApplied()
Definition: AgoraMediaBase.h:1846
agora::media::IAudioSpectrumObserver::onLocalAudioSpectrum
virtual bool onLocalAudioSpectrum(const AudioSpectrumData &data)=0
agora::media::base::AudioEncodedFrameInfo
Definition: AgoraMediaBase.h:403
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_RECORD
@ AUDIO_FRAME_POSITION_RECORD
Definition: AgoraMediaBase.h:1360
agora::media::MediaRecorderConfiguration::width
int width
Definition: AgoraMediaBase.h:2013
agora::media::base::VideoFrame::vStride
int vStride
Definition: AgoraMediaBase.h:1078
agora::media::base::ExternalVideoFrame::hdr10MetadataInfo
Hdr10MetadataInfo hdr10MetadataInfo
Definition: AgoraMediaBase.h:1019
agora::media::ContentInspectConfig
Definition: AgoraMediaBase.h:354
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_MIXED
@ AUDIO_FRAME_POSITION_MIXED
Definition: AgoraMediaBase.h:1363
agora::media::base::AudioPcmFrame
Definition: AgoraMediaBase.h:418
agora::media::base::ExternalVideoFrame::fillAlphaBuffer
bool fillAlphaBuffer
Definition: AgoraMediaBase.h:994
agora::media::IAudioFrameObserverBase::AudioParams::sample_rate
int sample_rate
Definition: AgoraMediaBase.h:1381
agora::media::base::VideoFrame::uBuffer
uint8_t * uBuffer
Definition: AgoraMediaBase.h:1086
agora::media::IAudioFrameObserverBase::onPlaybackAudioFrame
virtual bool onPlaybackAudioFrame(const char *channelId, AudioFrame &audioFrame)=0
agora::media::base::ExternalVideoFrame::EGL_CONTEXT10
@ EGL_CONTEXT10
Definition: AgoraMediaBase.h:869
agora::media::base::IVideoFrameMetaInfo
Definition: AgoraMediaBase.h:640
agora::media::UserAudioSpectrumInfo::uid
agora::rtc::uid_t uid
Definition: AgoraMediaBase.h:1578
agora::media::SnapshotConfig::position
media::base::VIDEO_MODULE_POSITION position
Definition: AgoraMediaBase.h:1238
agora::rtc::ExtensionContext::extensionName
const char * extensionName
Definition: AgoraMediaBase.h:60
agora::media::IVideoFrameObserver::VIDEO_FRAME_PROCESS_MODE
VIDEO_FRAME_PROCESS_MODE
Definition: AgoraMediaBase.h:1665
agora::media::base::ExternalVideoFrame::format
VIDEO_PIXEL_FORMAT format
Definition: AgoraMediaBase.h:901
agora::media::base::ExternalVideoFrame::metadataSize
int metadataSize
Definition: AgoraMediaBase.h:983
agora::media::base::Hdr10MetadataInfo::maxFrameAverageLightLevel
uint16_t maxFrameAverageLightLevel
Definition: AgoraMediaBase.h:784
agora::media::base::ExternalVideoFrame::stride
int stride
Definition: AgoraMediaBase.h:911
agora::media::base::ExternalVideoFrame::eglType
EGL_CONTEXT_TYPE eglType
Definition: AgoraMediaBase.h:959