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 AudioRoute
128 {
132  ROUTE_DEFAULT = -1,
136  ROUTE_HEADSET = 0,
140  ROUTE_EARPIECE = 1,
144  ROUTE_HEADSETNOMIC = 2,
148  ROUTE_SPEAKERPHONE = 3,
152  ROUTE_LOUDSPEAKER = 4,
156  ROUTE_BLUETOOTH_DEVICE_HFP = 5,
160  ROUTE_USB = 6,
164  ROUTE_HDMI = 7,
168  ROUTE_DISPLAYPORT = 8,
172  ROUTE_AIRPLAY = 9,
176  ROUTE_BLUETOOTH_DEVICE_A2DP = 10,
177 };
178 
182 enum BYTES_PER_SAMPLE {
186  TWO_BYTES_PER_SAMPLE = 2,
187 };
188 
190  int sample_rate;
191  size_t channels;
192  size_t frames_per_buffer;
193 
195  : sample_rate(0),
196  channels(0),
197  frames_per_buffer(0) {}
198 };
199 
203 enum RAW_AUDIO_FRAME_OP_MODE_TYPE {
207  RAW_AUDIO_FRAME_OP_MODE_READ_ONLY = 0,
208 
212  RAW_AUDIO_FRAME_OP_MODE_READ_WRITE = 2,
213 };
214 
215 } // namespace rtc
216 
217 namespace media {
221 enum MEDIA_SOURCE_TYPE {
225  AUDIO_PLAYOUT_SOURCE = 0,
229  AUDIO_RECORDING_SOURCE = 1,
233  PRIMARY_CAMERA_SOURCE = 2,
237  SECONDARY_CAMERA_SOURCE = 3,
241  PRIMARY_SCREEN_SOURCE = 4,
245  SECONDARY_SCREEN_SOURCE = 5,
249  CUSTOM_VIDEO_SOURCE = 6,
253  MEDIA_PLAYER_SOURCE = 7,
257  RTC_IMAGE_PNG_SOURCE = 8,
261  RTC_IMAGE_JPEG_SOURCE = 9,
265  RTC_IMAGE_GIF_SOURCE = 10,
269  REMOTE_VIDEO_SOURCE = 11,
273  TRANSCODED_VIDEO_SOURCE = 12,
277  SPEECH_DRIVEN_VIDEO_SOURCE = 13,
281  UNKNOWN_MEDIA_SOURCE = 100
282 };
285 #define MAX_CONTENT_INSPECT_MODULE_COUNT 32
286 enum CONTENT_INSPECT_RESULT {
287  CONTENT_INSPECT_NEUTRAL = 1,
288  CONTENT_INSPECT_SEXY = 2,
289  CONTENT_INSPECT_PORN = 3,
290 };
291 
292 enum CONTENT_INSPECT_TYPE {
296 CONTENT_INSPECT_INVALID = 0,
301 CONTENT_INSPECT_MODERATION __deprecated = 1,
305 CONTENT_INSPECT_SUPERVISION = 2,
309 CONTENT_INSPECT_IMAGE_MODERATION = 3
310 };
311 
316  CONTENT_INSPECT_TYPE type;
320  unsigned int interval;
322  type = CONTENT_INSPECT_INVALID;
323  interval = 0;
324  }
325 };
329  const char* extraInfo;
333  const char* serverConfig;
337  ContentInspectModule modules[MAX_CONTENT_INSPECT_MODULE_COUNT];
341  ContentInspectConfig& operator=(const ContentInspectConfig& rth)
342  {
343  extraInfo = rth.extraInfo;
345  moduleCount = rth.moduleCount;
346  memcpy(&modules, &rth.modules, MAX_CONTENT_INSPECT_MODULE_COUNT * sizeof(ContentInspectModule));
347  return *this;
348  }
349  ContentInspectConfig() :extraInfo(NULL), serverConfig(NULL), moduleCount(0){}
350 };
351 
352 namespace base {
353 
354 typedef void* view_t;
355 
356 typedef const char* user_id_t;
357 
358 static const uint8_t kMaxCodecNameLength = 50;
359 
368  uint32_t timestamp;
369  // Audio level indication.
370  uint8_t audioLevelIndication;
371  PacketOptions()
372  : timestamp(0),
373  audioLevelIndication(127) {}
374 };
375 
384  uint64_t sendTs;
388  uint8_t codec;
390  : sendTs(0),
391  codec(0) {}
392 };
393 
402  // Stereo, 32 kHz, 60 ms (2 * 32 * 60)
409  kMaxDataSizeSamples = 3840,
411  kMaxDataSizeBytes = kMaxDataSizeSamples * sizeof(int16_t),
412  };
413 
428  rtc::BYTES_PER_SAMPLE bytes_per_sample;
430  int16_t data_[kMaxDataSizeSamples];
431 
437 
438  AudioPcmFrame& operator=(const AudioPcmFrame& src) {
439  if (this == &src) {
440  return *this;
441  }
442 
448  is_stereo_ = src.is_stereo_;
449 
450  size_t length = src.samples_per_channel_ * src.num_channels_;
451  if (length > kMaxDataSizeSamples) {
452  length = kMaxDataSizeSamples;
453  }
454 
455  memcpy(data_, src.data_, length * sizeof(int16_t));
456 
457  return *this;
458  }
459 
460  AudioPcmFrame()
461  : capture_timestamp(0),
463  sample_rate_hz_(0),
464  num_channels_(0),
465  bytes_per_sample(rtc::TWO_BYTES_PER_SAMPLE),
466  is_stereo_(false) {
467  memset(data_, 0, sizeof(data_));
468  }
469 
470  AudioPcmFrame(const AudioPcmFrame& src)
476  is_stereo_(src.is_stereo_) {
477  size_t length = src.samples_per_channel_ * src.num_channels_;
478  if (length > kMaxDataSizeSamples) {
479  length = kMaxDataSizeSamples;
480  }
481 
482  memcpy(this->data_, src.data_, length * sizeof(int16_t));
483  }
484 };
485 
488 enum AUDIO_DUAL_MONO_MODE {
490  AUDIO_DUAL_MONO_STEREO = 0,
492  AUDIO_DUAL_MONO_L = 1,
494  AUDIO_DUAL_MONO_R = 2,
496  AUDIO_DUAL_MONO_MIX = 3
497 };
498 
502 enum VIDEO_PIXEL_FORMAT {
506  VIDEO_PIXEL_DEFAULT = 0,
510  VIDEO_PIXEL_I420 = 1,
514  VIDEO_PIXEL_BGRA = 2,
518  VIDEO_PIXEL_NV21 = 3,
522  VIDEO_PIXEL_RGBA = 4,
526  VIDEO_PIXEL_NV12 = 8,
530  VIDEO_TEXTURE_2D = 10,
534  VIDEO_TEXTURE_OES = 11,
535  /*
536  12: pixel format for iOS CVPixelBuffer NV12
537  */
538  VIDEO_CVPIXEL_NV12 = 12,
539  /*
540  13: pixel format for iOS CVPixelBuffer I420
541  */
542  VIDEO_CVPIXEL_I420 = 13,
543  /*
544  14: pixel format for iOS CVPixelBuffer BGRA
545  */
546  VIDEO_CVPIXEL_BGRA = 14,
550  VIDEO_CVPIXEL_P010 = 15,
554  VIDEO_PIXEL_I422 = 16,
558  VIDEO_TEXTURE_ID3D11TEXTURE2D = 17,
563  VIDEO_PIXEL_I010 = 18,
564 };
565 
569 enum RENDER_MODE_TYPE {
574  RENDER_MODE_HIDDEN = 1,
580  RENDER_MODE_FIT = 2,
585  RENDER_MODE_ADAPTIVE __deprecated = 3,
586 };
587 
591 enum CAMERA_VIDEO_SOURCE_TYPE {
595  CAMERA_SOURCE_FRONT = 0,
599  CAMERA_SOURCE_BACK = 1,
603  VIDEO_SOURCE_UNSPECIFIED = 2,
604 };
605 
611  public:
612  enum META_INFO_KEY {
613  KEY_FACE_CAPTURE = 0,
614  };
615  virtual ~IVideoFrameMetaInfo() {};
616  virtual const char* getMetaInfoStr(META_INFO_KEY key) const = 0;
617 };
618 
619 struct ColorSpace {
620  enum PrimaryID {
621  // The indices are equal to the values specified in T-REC H.273 Table 2.
622  PRIMARYID_BT709 = 1,
623  PRIMARYID_UNSPECIFIED = 2,
624  PRIMARYID_BT470M = 4,
625  PRIMARYID_BT470BG = 5,
626  PRIMARYID_SMPTE170M = 6, // Identical to BT601
627  PRIMARYID_SMPTE240M = 7,
628  PRIMARYID_FILM = 8,
629  PRIMARYID_BT2020 = 9,
630  PRIMARYID_SMPTEST428 = 10,
631  PRIMARYID_SMPTEST431 = 11,
632  PRIMARYID_SMPTEST432 = 12,
633  PRIMARYID_JEDECP22 = 22, // Identical to EBU3213-E
634  };
635 
636  enum RangeID {
637  // The indices are equal to the values specified at
638  // https://www.webmproject.org/docs/container/#colour for the element Range.
639  RANGEID_INVALID = 0,
640  // Limited Rec. 709 color range with RGB values ranging from 16 to 235.
641  RANGEID_LIMITED = 1,
642  // Full RGB color range with RGB valees from 0 to 255.
643  RANGEID_FULL = 2,
644  // Range is defined by MatrixCoefficients/TransferCharacteristics.
645  RANGEID_DERIVED = 3,
646  };
647 
648  enum MatrixID {
649  // The indices are equal to the values specified in T-REC H.273 Table 4.
650  MATRIXID_RGB = 0,
651  MATRIXID_BT709 = 1,
652  MATRIXID_UNSPECIFIED = 2,
653  MATRIXID_FCC = 4,
654  MATRIXID_BT470BG = 5,
655  MATRIXID_SMPTE170M = 6,
656  MATRIXID_SMPTE240M = 7,
657  MATRIXID_YCOCG = 8,
658  MATRIXID_BT2020_NCL = 9,
659  MATRIXID_BT2020_CL = 10,
660  MATRIXID_SMPTE2085 = 11,
661  MATRIXID_CDNCLS = 12,
662  MATRIXID_CDCLS = 13,
663  MATRIXID_BT2100_ICTCP = 14,
664  };
665 
666  enum TransferID {
667  // The indices are equal to the values specified in T-REC H.273 Table 3.
668  TRANSFERID_BT709 = 1,
669  TRANSFERID_UNSPECIFIED = 2,
670  TRANSFERID_GAMMA22 = 4,
671  TRANSFERID_GAMMA28 = 5,
672  TRANSFERID_SMPTE170M = 6,
673  TRANSFERID_SMPTE240M = 7,
674  TRANSFERID_LINEAR = 8,
675  TRANSFERID_LOG = 9,
676  TRANSFERID_LOG_SQRT = 10,
677  TRANSFERID_IEC61966_2_4 = 11,
678  TRANSFERID_BT1361_ECG = 12,
679  TRANSFERID_IEC61966_2_1 = 13,
680  TRANSFERID_BT2020_10 = 14,
681  TRANSFERID_BT2020_12 = 15,
682  TRANSFERID_SMPTEST2084 = 16,
683  TRANSFERID_SMPTEST428 = 17,
684  TRANSFERID_ARIB_STD_B67 = 18,
685  };
686 
687  PrimaryID primaries;
688  TransferID transfer;
689  MatrixID matrix;
690  RangeID range;
691 
692  ColorSpace()
693  : primaries(PRIMARYID_UNSPECIFIED), transfer(TRANSFERID_UNSPECIFIED),
694  matrix(MATRIXID_UNSPECIFIED), range(RANGEID_INVALID) {}
695 
696  bool validate() const {
697  return primaries != PRIMARYID_UNSPECIFIED || transfer != TRANSFERID_UNSPECIFIED ||
698  matrix != MATRIXID_UNSPECIFIED ||
699  range != RANGEID_INVALID;
700  }
701 };
702 
710  uint16_t redPrimaryX;
714  uint16_t redPrimaryY;
718  uint16_t greenPrimaryX;
722  uint16_t greenPrimaryY;
726  uint16_t bluePrimaryX;
730  uint16_t bluePrimaryY;
734  uint16_t whitePointX;
738  uint16_t whitePointY;
742  unsigned int maxMasteringLuminance;
746  unsigned int minMasteringLuminance;
755 
757  : redPrimaryX(0),
758  redPrimaryY(0),
759  greenPrimaryX(0),
760  greenPrimaryY(0),
761  bluePrimaryX(0),
762  bluePrimaryY(0),
763  whitePointX(0),
764  whitePointY(0),
769 
770  bool validate() const {
771  return maxContentLightLevel >= 0 && maxContentLightLevel <= 20000 &&
773  maxFrameAverageLightLevel <= 20000;
774  }
775 };
776 
780 enum ALPHA_STITCH_MODE {
784  NO_ALPHA_STITCH = 0,
788  ALPHA_STITCH_UP = 1,
792  ALPHA_STITCH_BELOW = 2,
796  ALPHA_STITCH_LEFT = 3,
800  ALPHA_STITCH_RIGHT = 4,
801 };
802 
803 
810  format(VIDEO_PIXEL_DEFAULT),
811  buffer(NULL),
812  stride(0),
813  height(0),
814  cropLeft(0),
815  cropTop(0),
816  cropRight(0),
817  cropBottom(0),
818  rotation(0),
819  timestamp(0),
820  eglContext(NULL),
822  textureId(0),
823  fenceObject(0),
824  metadataBuffer(NULL),
825  metadataSize(0),
826  alphaBuffer(NULL),
827  fillAlphaBuffer(false),
828  alphaStitchMode(NO_ALPHA_STITCH),
829  d3d11Texture2d(NULL),
830  textureSliceIndex(0){}
831 
844  };
845 
862  };
863 
871  VIDEO_PIXEL_FORMAT format;
875  void* buffer;
880  int stride;
884  int height;
889  int cropLeft;
894  int cropTop;
909  int rotation;
917  long long timestamp;
923  void *eglContext;
936  long long fenceObject;
940  float matrix[16];
945  uint8_t* metadataBuffer;
956  uint8_t* alphaBuffer;
971  ALPHA_STITCH_MODE alphaStitchMode;
972 
977 
982 
987 
992 };
993 
997 struct VideoFrame {
998  VideoFrame():
999  type(VIDEO_PIXEL_DEFAULT),
1000  width(0),
1001  height(0),
1002  yStride(0),
1003  uStride(0),
1004  vStride(0),
1005  yBuffer(NULL),
1006  uBuffer(NULL),
1007  vBuffer(NULL),
1008  rotation(0),
1009  renderTimeMs(0),
1010  avsync_type(0),
1011  metadata_buffer(NULL),
1012  metadata_size(0),
1013  sharedContext(0),
1014  textureId(0),
1015  d3d11Texture2d(NULL),
1016  alphaBuffer(NULL),
1017  alphaStitchMode(NO_ALPHA_STITCH),
1018  pixelBuffer(NULL),
1019  metaInfo(NULL){
1020  memset(matrix, 0, sizeof(matrix));
1021  }
1025  VIDEO_PIXEL_FORMAT type;
1029  int width;
1033  int height;
1037  int yStride;
1041  int uStride;
1045  int vStride;
1049  uint8_t* yBuffer;
1053  uint8_t* uBuffer;
1057  uint8_t* vBuffer;
1068  int64_t renderTimeMs;
1098  float matrix[16];
1104  uint8_t* alphaBuffer;
1114  ALPHA_STITCH_MODE alphaStitchMode;
1123 
1128 
1133 };
1134 
1139  public:
1147  virtual void onFrame(const VideoFrame* frame) = 0;
1148  virtual ~IVideoFrameObserver() {}
1149  virtual bool isExternal() { return true; }
1150  virtual VIDEO_PIXEL_FORMAT getVideoFormatPreference() { return VIDEO_PIXEL_DEFAULT; }
1151 };
1152 
1153 enum MEDIA_PLAYER_SOURCE_TYPE {
1159  MEDIA_PLAYER_SOURCE_DEFAULT,
1165  MEDIA_PLAYER_SOURCE_FULL_FEATURED,
1170  MEDIA_PLAYER_SOURCE_SIMPLE,
1171 };
1172 
1173 enum VIDEO_MODULE_POSITION {
1174  POSITION_POST_CAPTURER = 1 << 0,
1175  POSITION_PRE_RENDERER = 1 << 1,
1176  POSITION_PRE_ENCODER = 1 << 2,
1177  POSITION_POST_CAPTURER_ORIGIN = 1 << 3,
1178 };
1179 
1180 } // namespace base
1181 
1186  public:
1195  virtual void onFrame(agora::media::base::AudioPcmFrame* frame) = 0;
1196  virtual ~IAudioPcmFrameSink() {}
1197 };
1198 
1203  public:
1212  };
1213  enum { MAX_HANDLE_TIME_CNT = 10 };
1217  struct AudioFrame {
1229  agora::rtc::BYTES_PER_SAMPLE bytesPerSample;
1246  void* buffer;
1254  int64_t renderTimeMs;
1277  uint32_t rtpTimestamp;
1278 
1280  samplesPerChannel(0),
1281  bytesPerSample(rtc::TWO_BYTES_PER_SAMPLE),
1282  channels(0),
1283  samplesPerSec(0),
1284  buffer(NULL),
1285  renderTimeMs(0),
1286  avsync_type(0),
1287  presentationMs(0),
1288  audioTrackNumber(0),
1289  rtpTimestamp(0) {}
1290  };
1291 
1293  AUDIO_FRAME_POSITION_NONE = 0x0000,
1309  };
1310 
1311  struct AudioParams {
1321 
1322  /* The number of audio channels, which can be set as either of the following values:
1323 
1324  - `1`: Mono (Default)
1325  - `2`: Stereo
1326  */
1327  int channels;
1328 
1329  /* The use mode of the audio data. See AgoraAudioRawFrameOperationMode.
1330  */
1331  rtc::RAW_AUDIO_FRAME_OP_MODE_TYPE mode;
1332 
1337 
1338  AudioParams() : sample_rate(0), channels(0), mode(rtc::RAW_AUDIO_FRAME_OP_MODE_READ_ONLY), samples_per_call(0) {}
1339  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) {}
1340  };
1341 
1342  public:
1343  virtual ~IAudioFrameObserverBase() {}
1344 
1353  virtual bool onRecordAudioFrame(const char* channelId, AudioFrame& audioFrame) = 0;
1362  virtual bool onPlaybackAudioFrame(const char* channelId, AudioFrame& audioFrame) = 0;
1371  virtual bool onMixedAudioFrame(const char* channelId, AudioFrame& audioFrame) = 0;
1379  virtual bool onEarMonitoringAudioFrame(AudioFrame& audioFrame) = 0;
1389  virtual bool onPlaybackAudioFrameBeforeMixing(const char* channelId, base::user_id_t userId, AudioFrame& audioFrame) {
1390  (void) channelId;
1391  (void) userId;
1392  (void) audioFrame;
1393  return true;
1394  }
1395 
1412 
1425 
1437 
1449 
1461 };
1462 
1467  public:
1478  virtual bool onPlaybackAudioFrameBeforeMixing(const char* channelId, rtc::uid_t uid, AudioFrame& audioFrame) = 0;
1479 };
1480 
1485  const float *audioSpectrumData;
1490 
1492  AudioSpectrumData(const float *data, int length) :
1493  audioSpectrumData(data), dataLength(length) {}
1494 };
1495 
1500  agora::rtc::uid_t uid;
1505 
1506  UserAudioSpectrumInfo() : uid(0) {}
1507 
1508  UserAudioSpectrumInfo(agora::rtc::uid_t uid, const float* data, int length) : uid(uid), spectrumData(data, length) {}
1509 };
1510 
1515 public:
1516  virtual ~IAudioSpectrumObserver() {}
1517 
1530  virtual bool onLocalAudioSpectrum(const AudioSpectrumData& data) = 0;
1548  virtual bool onRemoteAudioSpectrum(const UserAudioSpectrumInfo* spectrums, unsigned int spectrumNumber) = 0;
1549 };
1550 
1555  public:
1566  virtual bool onEncodedVideoFrameReceived(rtc::uid_t uid, const uint8_t* imageBuffer, size_t length,
1567  const rtc::EncodedVideoFrameInfo& videoEncodedFrameInfo) = 0;
1568 
1569  virtual ~IVideoEncodedFrameObserver() {}
1570 };
1571 
1576  public:
1587  PROCESS_MODE_READ_ONLY, // Observer works as a pure renderer and will not modify the original frame.
1593  PROCESS_MODE_READ_WRITE, // Observer works as a filter that will process the video frame and affect the following frame processing in SDK.
1594  };
1595 
1596  public:
1597  virtual ~IVideoFrameObserver() {}
1598 
1619  virtual bool onCaptureVideoFrame(agora::rtc::VIDEO_SOURCE_TYPE sourceType, VideoFrame& videoFrame) = 0;
1620 
1642  virtual bool onPreEncodeVideoFrame(agora::rtc::VIDEO_SOURCE_TYPE sourceType, VideoFrame& videoFrame) = 0;
1643 
1664  virtual bool onMediaPlayerVideoFrame(VideoFrame& videoFrame, int mediaPlayerId) = 0;
1665 
1685  virtual bool onRenderVideoFrame(const char* channelId, rtc::uid_t remoteUid, VideoFrame& videoFrame) = 0;
1686 
1687  virtual bool onTranscodedVideoFrame(VideoFrame& videoFrame) = 0;
1688 
1697  return PROCESS_MODE_READ_ONLY;
1698  }
1699 
1714  virtual base::VIDEO_PIXEL_FORMAT getVideoFormatPreference() { return base::VIDEO_PIXEL_DEFAULT; }
1715 
1730  virtual bool getRotationApplied() { return false; }
1731 
1746  virtual bool getMirrorApplied() { return false; }
1747 
1765  virtual uint32_t getObservedFramePosition() {
1766  return base::POSITION_POST_CAPTURER | base::POSITION_PRE_RENDERER;
1767  }
1768 
1776  virtual bool isExternal() { return true; }
1777 };
1778 
1782 enum EXTERNAL_VIDEO_SOURCE_TYPE {
1786  VIDEO_FRAME = 0,
1790  ENCODED_VIDEO_FRAME,
1791 };
1792 
1798 enum MediaRecorderContainerFormat {
1802  FORMAT_MP4 = 1,
1803 };
1809 enum MediaRecorderStreamType {
1813  STREAM_TYPE_AUDIO = 0x01,
1817  STREAM_TYPE_VIDEO = 0x02,
1821  STREAM_TYPE_BOTH = STREAM_TYPE_AUDIO | STREAM_TYPE_VIDEO,
1822 };
1828 enum RecorderState {
1832  RECORDER_STATE_ERROR = -1,
1836  RECORDER_STATE_START = 2,
1840  RECORDER_STATE_STOP = 3,
1841 };
1847 enum RecorderReasonCode {
1851  RECORDER_REASON_NONE = 0,
1855  RECORDER_REASON_WRITE_FAILED = 1,
1859  RECORDER_REASON_NO_STREAM = 2,
1863  RECORDER_REASON_OVER_MAX_DURATION = 3,
1867  RECORDER_REASON_CONFIG_CHANGED = 4,
1868 };
1883  const char* storagePath;
1887  MediaRecorderContainerFormat containerFormat;
1891  MediaRecorderStreamType streamType;
1903 
1904  MediaRecorderConfiguration() : storagePath(NULL), containerFormat(FORMAT_MP4), streamType(STREAM_TYPE_BOTH), maxDurationMs(120000), recorderInfoUpdateInterval(0) {}
1905  MediaRecorderConfiguration(const char* path, MediaRecorderContainerFormat format, MediaRecorderStreamType type, int duration, int interval) : storagePath(path), containerFormat(format), streamType(type), maxDurationMs(duration), recorderInfoUpdateInterval(interval) {}
1906 };
1907 
1909 public:
1917  virtual bool onFaceInfo(const char* outFaceInfo) = 0;
1918 
1919  virtual ~IFaceInfoObserver() {}
1920 };
1921 
1931  const char* fileName;
1935  unsigned int durationMs;
1939  unsigned int fileSize;
1940 
1941  RecorderInfo() : fileName(NULL), durationMs(0), fileSize(0) {}
1942  RecorderInfo(const char* name, unsigned int dur, unsigned int size) : fileName(name), durationMs(dur), fileSize(size) {}
1943 };
1944 
1946  public:
1960  virtual void onRecorderStateChanged(const char* channelId, rtc::uid_t uid, RecorderState state, RecorderReasonCode reason) = 0;
1975  virtual void onRecorderInfoUpdated(const char* channelId, rtc::uid_t uid, const RecorderInfo& info) = 0;
1976 
1977  virtual ~IMediaRecorderObserver() {}
1978 };
1979 
1980 } // namespace media
1981 } // namespace agora
agora::media::IVideoFrameObserver::PROCESS_MODE_READ_ONLY
@ PROCESS_MODE_READ_ONLY
Definition: AgoraMediaBase.h:1587
agora::media::base::VideoFrame
Definition: AgoraMediaBase.h:997
agora::media::base::ExternalVideoFrame::cropBottom
int cropBottom
Definition: AgoraMediaBase.h:904
agora::media::base::Hdr10MetadataInfo::redPrimaryY
uint16_t redPrimaryY
Definition: AgoraMediaBase.h:714
agora::media::base::VideoFrame::metadata_size
int metadata_size
Definition: AgoraMediaBase.h:1082
agora::media::AudioSpectrumData::audioSpectrumData
const float * audioSpectrumData
Definition: AgoraMediaBase.h:1485
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:940
agora::media::IAudioPcmFrameSink
Definition: AgoraMediaBase.h:1185
agora::media::IMediaRecorderObserver
Definition: AgoraMediaBase.h:1945
agora::media::IAudioFrameObserverBase
Definition: AgoraMediaBase.h:1202
agora::media::base::ExternalVideoFrame::colorSpace
ColorSpace colorSpace
Definition: AgoraMediaBase.h:991
agora::media::ContentInspectConfig::modules
ContentInspectModule modules[MAX_CONTENT_INSPECT_MODULE_COUNT]
Definition: AgoraMediaBase.h:337
agora::media::base::VideoFrame::uStride
int uStride
Definition: AgoraMediaBase.h:1041
agora::media::IAudioFrameObserverBase::AudioFrame::rtpTimestamp
uint32_t rtpTimestamp
Definition: AgoraMediaBase.h:1277
agora::media::IAudioFrameObserverBase::FRAME_TYPE_PCM16
@ FRAME_TYPE_PCM16
Definition: AgoraMediaBase.h:1211
agora::media::IAudioFrameObserverBase::AudioFrame::audioTrackNumber
int audioTrackNumber
Definition: AgoraMediaBase.h:1273
agora::media::base::VideoFrame::alphaBuffer
uint8_t * alphaBuffer
Definition: AgoraMediaBase.h:1104
agora::media::IFaceInfoObserver
Definition: AgoraMediaBase.h:1908
agora::media::base::VideoFrame::height
int height
Definition: AgoraMediaBase.h:1033
agora::media::base::AudioPcmFrame::data_
int16_t data_[kMaxDataSizeSamples]
Definition: AgoraMediaBase.h:430
agora::media::IAudioFrameObserverBase::onRecordAudioFrame
virtual bool onRecordAudioFrame(const char *channelId, AudioFrame &audioFrame)=0
agora::media::MediaRecorderConfiguration::maxDurationMs
int maxDurationMs
Definition: AgoraMediaBase.h:1895
agora::media::IAudioSpectrumObserver
Definition: AgoraMediaBase.h:1514
agora::rtc::AudioParameters
Definition: AgoraMediaBase.h:189
agora::media::IAudioFrameObserverBase::AudioFrame::renderTimeMs
int64_t renderTimeMs
Definition: AgoraMediaBase.h:1254
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_RAW_DATA
@ VIDEO_BUFFER_RAW_DATA
Definition: AgoraMediaBase.h:853
agora::media::IAudioFrameObserverBase::getPlaybackAudioParams
virtual AudioParams getPlaybackAudioParams()=0
agora::media::base::ExternalVideoFrame::buffer
void * buffer
Definition: AgoraMediaBase.h:875
agora::media::IAudioFrameObserverBase::AudioFrame::channels
int channels
Definition: AgoraMediaBase.h:1235
agora::media::IVideoFrameObserver::getVideoFormatPreference
virtual base::VIDEO_PIXEL_FORMAT getVideoFormatPreference()
Definition: AgoraMediaBase.h:1714
agora::rtc::EncodedVideoFrameInfo
Definition: AgoraBase.h:1621
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_TYPE
VIDEO_BUFFER_TYPE
Definition: AgoraMediaBase.h:849
agora::media::ContentInspectConfig::serverConfig
const char * serverConfig
Definition: AgoraMediaBase.h:333
agora::media::base::IVideoFrameObserver
Definition: AgoraMediaBase.h:1138
agora::media::IVideoFrameObserver::getVideoFrameProcessMode
virtual VIDEO_FRAME_PROCESS_MODE getVideoFrameProcessMode()
Definition: AgoraMediaBase.h:1696
agora::media::IVideoFrameObserver
Definition: AgoraMediaBase.h:1575
agora::media::IAudioFrameObserverBase::AudioFrame
Definition: AgoraMediaBase.h:1217
agora::media::base::AudioEncodedFrameInfo::codec
uint8_t codec
Definition: AgoraMediaBase.h:388
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:1902
agora::media::IAudioFrameObserver
Definition: AgoraMediaBase.h:1466
agora::media::base::Hdr10MetadataInfo
Definition: AgoraMediaBase.h:706
agora::media::IAudioFrameObserverBase::getEarMonitoringAudioParams
virtual AudioParams getEarMonitoringAudioParams()=0
agora::media::base::VideoFrame::d3d11Texture2d
void * d3d11Texture2d
Definition: AgoraMediaBase.h:1094
agora::media::base::VideoFrame::rotation
int rotation
Definition: AgoraMediaBase.h:1061
agora::media::base::VideoFrame::alphaStitchMode
ALPHA_STITCH_MODE alphaStitchMode
Definition: AgoraMediaBase.h:1114
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:401
agora::media::base::ExternalVideoFrame::eglContext
void * eglContext
Definition: AgoraMediaBase.h:923
agora::media::base::VideoFrame::metaInfo
IVideoFrameMetaInfo * metaInfo
Definition: AgoraMediaBase.h:1122
agora::media::base::ExternalVideoFrame::cropRight
int cropRight
Definition: AgoraMediaBase.h:899
agora::media::IAudioFrameObserverBase::getRecordAudioParams
virtual AudioParams getRecordAudioParams()=0
agora::media::base::VideoFrame::textureId
int textureId
Definition: AgoraMediaBase.h:1090
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_ARRAY
@ VIDEO_BUFFER_ARRAY
Definition: AgoraMediaBase.h:857
agora::rtc::ExtensionContext
Definition: AgoraMediaBase.h:41
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_TEXTURE
@ VIDEO_BUFFER_TEXTURE
Definition: AgoraMediaBase.h:861
agora::media::IAudioFrameObserverBase::AudioFrame::presentationMs
int64_t presentationMs
Definition: AgoraMediaBase.h:1269
agora::media::base::VideoFrame::avsync_type
int avsync_type
Definition: AgoraMediaBase.h:1072
agora::media::base::Hdr10MetadataInfo::greenPrimaryY
uint16_t greenPrimaryY
Definition: AgoraMediaBase.h:722
agora::media::base::VideoFrame::matrix
float matrix[16]
Definition: AgoraMediaBase.h:1098
agora::media::base::ExternalVideoFrame::fenceObject
long long fenceObject
Definition: AgoraMediaBase.h:936
agora::media::base::ExternalVideoFrame::cropLeft
int cropLeft
Definition: AgoraMediaBase.h:889
agora::media::IAudioFrameObserverBase::AudioFrame::samplesPerSec
int samplesPerSec
Definition: AgoraMediaBase.h:1239
agora::media::ContentInspectModule
Definition: AgoraMediaBase.h:312
agora::media::IAudioFrameObserverBase::AudioFrame::buffer
void * buffer
Definition: AgoraMediaBase.h:1246
agora::media::IAudioFrameObserverBase::onPlaybackAudioFrameBeforeMixing
virtual bool onPlaybackAudioFrameBeforeMixing(const char *channelId, base::user_id_t userId, AudioFrame &audioFrame)
Definition: AgoraMediaBase.h:1389
agora::media::IAudioSpectrumObserver::onRemoteAudioSpectrum
virtual bool onRemoteAudioSpectrum(const UserAudioSpectrumInfo *spectrums, unsigned int spectrumNumber)=0
agora::media::base::ColorSpace
Definition: AgoraMediaBase.h:619
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:807
agora::media::base::ExternalVideoFrame::d3d11Texture2d
void * d3d11Texture2d
Definition: AgoraMediaBase.h:976
agora::media::base::AudioEncodedFrameInfo::sendTs
uint64_t sendTs
Definition: AgoraMediaBase.h:384
agora::media::ContentInspectConfig::moduleCount
int moduleCount
Definition: AgoraMediaBase.h:340
agora::media::base::Hdr10MetadataInfo::whitePointX
uint16_t whitePointX
Definition: AgoraMediaBase.h:734
agora::media::base::VideoFrame::type
VIDEO_PIXEL_FORMAT type
Definition: AgoraMediaBase.h:1025
agora::media::base::AudioPcmFrame::capture_timestamp
int64_t capture_timestamp
Definition: AgoraMediaBase.h:416
agora::media::base::ExternalVideoFrame::timestamp
long long timestamp
Definition: AgoraMediaBase.h:917
agora::media::base::AudioPcmFrame::sample_rate_hz_
int sample_rate_hz_
Definition: AgoraMediaBase.h:422
agora::media::IFaceInfoObserver::onFaceInfo
virtual bool onFaceInfo(const char *outFaceInfo)=0
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION
AUDIO_FRAME_POSITION
Definition: AgoraMediaBase.h:1292
agora::media::base::ExternalVideoFrame::height
int height
Definition: AgoraMediaBase.h:884
agora::media::base::VideoFrame::sharedContext
void * sharedContext
Definition: AgoraMediaBase.h:1086
agora::media::base::ExternalVideoFrame::rotation
int rotation
Definition: AgoraMediaBase.h:909
agora::media::RecorderInfo
Definition: AgoraMediaBase.h:1927
agora::media::base::ExternalVideoFrame::metadataBuffer
uint8_t * metadataBuffer
Definition: AgoraMediaBase.h:945
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:746
agora::media::UserAudioSpectrumInfo::spectrumData
struct AudioSpectrumData spectrumData
Definition: AgoraMediaBase.h:1504
agora::media::IAudioFrameObserverBase::AudioParams::samples_per_call
int samples_per_call
Definition: AgoraMediaBase.h:1336
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_PLAYBACK
@ AUDIO_FRAME_POSITION_PLAYBACK
Definition: AgoraMediaBase.h:1296
agora::media::base::ExternalVideoFrame::alphaStitchMode
ALPHA_STITCH_MODE alphaStitchMode
Definition: AgoraMediaBase.h:971
agora::media::base::PacketOptions
Definition: AgoraMediaBase.h:364
agora::media::base::PacketOptions::timestamp
uint32_t timestamp
Definition: AgoraMediaBase.h:368
agora::media::base::Hdr10MetadataInfo::maxMasteringLuminance
unsigned int maxMasteringLuminance
Definition: AgoraMediaBase.h:742
agora::media::base::Hdr10MetadataInfo::whitePointY
uint16_t whitePointY
Definition: AgoraMediaBase.h:738
agora::media::base::Hdr10MetadataInfo::greenPrimaryX
uint16_t greenPrimaryX
Definition: AgoraMediaBase.h:718
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_TYPE
AUDIO_FRAME_TYPE
Definition: AgoraMediaBase.h:1207
agora::media::base::VideoFrame::yBuffer
uint8_t * yBuffer
Definition: AgoraMediaBase.h:1049
agora::media::base::VideoFrame::hdr10MetadataInfo
Hdr10MetadataInfo hdr10MetadataInfo
Definition: AgoraMediaBase.h:1127
agora::media::base::VideoFrame::colorSpace
ColorSpace colorSpace
Definition: AgoraMediaBase.h:1132
agora::media::base::AudioPcmFrame::bytes_per_sample
rtc::BYTES_PER_SAMPLE bytes_per_sample
Definition: AgoraMediaBase.h:428
agora::media::UserAudioSpectrumInfo
Definition: AgoraMediaBase.h:1496
agora::media::base::Hdr10MetadataInfo::redPrimaryX
uint16_t redPrimaryX
Definition: AgoraMediaBase.h:710
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_EAR_MONITORING
@ AUDIO_FRAME_POSITION_EAR_MONITORING
Definition: AgoraMediaBase.h:1308
agora::media::RecorderInfo::fileName
const char * fileName
Definition: AgoraMediaBase.h:1931
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:1593
agora::media::IVideoFrameObserver::isExternal
virtual bool isExternal()
Definition: AgoraMediaBase.h:1776
agora::media::ContentInspectModule::interval
unsigned int interval
Definition: AgoraMediaBase.h:320
agora::media::IVideoFrameObserver::getObservedFramePosition
virtual uint32_t getObservedFramePosition()
Definition: AgoraMediaBase.h:1765
agora::media::base::VideoFrame::yStride
int yStride
Definition: AgoraMediaBase.h:1037
agora::media::base::ExternalVideoFrame::alphaBuffer
uint8_t * alphaBuffer
Definition: AgoraMediaBase.h:956
agora::media::base::Hdr10MetadataInfo::bluePrimaryX
uint16_t bluePrimaryX
Definition: AgoraMediaBase.h:726
agora::media::ContentInspectModule::type
CONTENT_INSPECT_TYPE type
Definition: AgoraMediaBase.h:316
agora::media::MediaRecorderConfiguration::containerFormat
MediaRecorderContainerFormat containerFormat
Definition: AgoraMediaBase.h:1887
agora::media::base::ExternalVideoFrame::EGL_CONTEXT14
@ EGL_CONTEXT14
Definition: AgoraMediaBase.h:843
agora::media::RecorderInfo::fileSize
unsigned int fileSize
Definition: AgoraMediaBase.h:1939
agora::media::base::ExternalVideoFrame::cropTop
int cropTop
Definition: AgoraMediaBase.h:894
agora::media::base::ExternalVideoFrame::type
VIDEO_BUFFER_TYPE type
Definition: AgoraMediaBase.h:867
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:981
agora::media::base::Hdr10MetadataInfo::bluePrimaryY
uint16_t bluePrimaryY
Definition: AgoraMediaBase.h:730
agora::media::IVideoFrameObserver::getRotationApplied
virtual bool getRotationApplied()
Definition: AgoraMediaBase.h:1730
agora::media::base::Hdr10MetadataInfo::maxContentLightLevel
uint16_t maxContentLightLevel
Definition: AgoraMediaBase.h:750
agora::media::base::VideoFrame::vBuffer
uint8_t * vBuffer
Definition: AgoraMediaBase.h:1057
agora::media::AudioSpectrumData::dataLength
int dataLength
Definition: AgoraMediaBase.h:1489
agora::media::base::ExternalVideoFrame::EGL_CONTEXT_TYPE
EGL_CONTEXT_TYPE
Definition: AgoraMediaBase.h:835
agora::media::IAudioFrameObserverBase::onMixedAudioFrame
virtual bool onMixedAudioFrame(const char *channelId, AudioFrame &audioFrame)=0
agora::media::IAudioFrameObserverBase::AudioParams
Definition: AgoraMediaBase.h:1311
agora::media::base::AudioPcmFrame::num_channels_
size_t num_channels_
Definition: AgoraMediaBase.h:425
agora::rtc::ExtensionContext::uid
uid_t uid
Definition: AgoraMediaBase.h:52
agora::media::IAudioFrameObserverBase::AudioFrame::avsync_type
int avsync_type
Definition: AgoraMediaBase.h:1262
agora::media::IAudioFrameObserverBase::getObservedAudioFramePosition
virtual int getObservedAudioFramePosition()=0
agora::media::MediaRecorderConfiguration
Definition: AgoraMediaBase.h:1874
agora::media::base::VideoFrame::metadata_buffer
uint8_t * metadata_buffer
Definition: AgoraMediaBase.h:1077
agora::rtc::ExtensionContext::isValid
bool isValid
Definition: AgoraMediaBase.h:47
agora::media::MediaRecorderConfiguration::streamType
MediaRecorderStreamType streamType
Definition: AgoraMediaBase.h:1891
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_BEFORE_MIXING
@ AUDIO_FRAME_POSITION_BEFORE_MIXING
Definition: AgoraMediaBase.h:1305
agora::media::MediaRecorderConfiguration::storagePath
const char * storagePath
Definition: AgoraMediaBase.h:1883
agora::media::AudioSpectrumData
Definition: AgoraMediaBase.h:1481
agora::media::base::VideoFrame::width
int width
Definition: AgoraMediaBase.h:1029
agora::media::RecorderInfo::durationMs
unsigned int durationMs
Definition: AgoraMediaBase.h:1935
agora::media::base::VideoFrame::renderTimeMs
int64_t renderTimeMs
Definition: AgoraMediaBase.h:1068
agora::media::base::AudioPcmFrame::samples_per_channel_
size_t samples_per_channel_
Definition: AgoraMediaBase.h:419
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:1229
agora::media::base::ExternalVideoFrame::textureId
int textureId
Definition: AgoraMediaBase.h:931
agora::media::base::VideoFrame::pixelBuffer
void * pixelBuffer
Definition: AgoraMediaBase.h:1118
agora::media::IAudioFrameObserverBase::AudioFrame::type
AUDIO_FRAME_TYPE type
Definition: AgoraMediaBase.h:1221
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:436
agora::media::IVideoEncodedFrameObserver
Definition: AgoraMediaBase.h:1554
agora::media::IAudioFrameObserverBase::AudioFrame::samplesPerChannel
int samplesPerChannel
Definition: AgoraMediaBase.h:1225
agora::media::IVideoFrameObserver::getMirrorApplied
virtual bool getMirrorApplied()
Definition: AgoraMediaBase.h:1746
agora::media::IAudioSpectrumObserver::onLocalAudioSpectrum
virtual bool onLocalAudioSpectrum(const AudioSpectrumData &data)=0
agora::media::base::AudioEncodedFrameInfo
Definition: AgoraMediaBase.h:380
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_RECORD
@ AUDIO_FRAME_POSITION_RECORD
Definition: AgoraMediaBase.h:1299
agora::media::base::VideoFrame::vStride
int vStride
Definition: AgoraMediaBase.h:1045
agora::media::base::ExternalVideoFrame::hdr10MetadataInfo
Hdr10MetadataInfo hdr10MetadataInfo
Definition: AgoraMediaBase.h:986
agora::media::ContentInspectConfig
Definition: AgoraMediaBase.h:328
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_MIXED
@ AUDIO_FRAME_POSITION_MIXED
Definition: AgoraMediaBase.h:1302
agora::media::base::AudioPcmFrame
Definition: AgoraMediaBase.h:397
agora::media::base::ExternalVideoFrame::fillAlphaBuffer
bool fillAlphaBuffer
Definition: AgoraMediaBase.h:961
agora::media::IAudioFrameObserverBase::AudioParams::sample_rate
int sample_rate
Definition: AgoraMediaBase.h:1320
agora::media::base::VideoFrame::uBuffer
uint8_t * uBuffer
Definition: AgoraMediaBase.h:1053
agora::media::IAudioFrameObserverBase::onPlaybackAudioFrame
virtual bool onPlaybackAudioFrame(const char *channelId, AudioFrame &audioFrame)=0
agora::media::base::ExternalVideoFrame::EGL_CONTEXT10
@ EGL_CONTEXT10
Definition: AgoraMediaBase.h:839
agora::media::base::IVideoFrameMetaInfo
Definition: AgoraMediaBase.h:610
agora::media::UserAudioSpectrumInfo::uid
agora::rtc::uid_t uid
Definition: AgoraMediaBase.h:1500
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:1581
agora::media::base::ExternalVideoFrame::format
VIDEO_PIXEL_FORMAT format
Definition: AgoraMediaBase.h:871
agora::media::base::ExternalVideoFrame::metadataSize
int metadataSize
Definition: AgoraMediaBase.h:950
agora::media::base::Hdr10MetadataInfo::maxFrameAverageLightLevel
uint16_t maxFrameAverageLightLevel
Definition: AgoraMediaBase.h:754
agora::media::base::ExternalVideoFrame::stride
int stride
Definition: AgoraMediaBase.h:880
agora::media::base::ExternalVideoFrame::eglType
EGL_CONTEXT_TYPE eglType
Definition: AgoraMediaBase.h:927