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;
51  uid_t uid;
55  const char *providerName;
59  const char *extensionName;
60  ExtensionContext():isValid(false), uid(0), providerName(NULL), extensionName(NULL) {}
61 };
62 
63 
67 enum VIDEO_SOURCE_TYPE {
71  VIDEO_SOURCE_CAMERA_PRIMARY = 0,
75  VIDEO_SOURCE_CAMERA = VIDEO_SOURCE_CAMERA_PRIMARY,
79  VIDEO_SOURCE_CAMERA_SECONDARY = 1,
83  VIDEO_SOURCE_SCREEN_PRIMARY = 2,
87  VIDEO_SOURCE_SCREEN = VIDEO_SOURCE_SCREEN_PRIMARY,
91  VIDEO_SOURCE_SCREEN_SECONDARY = 3,
95  VIDEO_SOURCE_CUSTOM = 4,
99  VIDEO_SOURCE_MEDIA_PLAYER = 5,
103  VIDEO_SOURCE_RTC_IMAGE_PNG = 6,
107  VIDEO_SOURCE_RTC_IMAGE_JPEG = 7,
111  VIDEO_SOURCE_RTC_IMAGE_GIF = 8,
115  VIDEO_SOURCE_REMOTE = 9,
119  VIDEO_SOURCE_TRANSCODED = 10,
120 
124  VIDEO_SOURCE_CAMERA_THIRD = 11,
128  VIDEO_SOURCE_CAMERA_FOURTH = 12,
132  VIDEO_SOURCE_SCREEN_THIRD = 13,
136  VIDEO_SOURCE_SCREEN_FOURTH = 14,
140  VIDEO_SOURCE_SPEECH_DRIVEN = 15,
141 
145  VIDEO_SOURCE_UNKNOWN = 100
146 };
147 
151 enum AUDIO_SOURCE_TYPE {
155  AUDIO_SOURCE_MICROPHONE = 0,
159  AUDIO_SOURCE_CUSTOM = 1,
163  AUDIO_SOURCE_MEDIA_PLAYER = 2,
167  AUDIO_SOURCE_LOOPBACK_RECORDING = 3,
170  AUDIO_SOURCE_MIXED_STREAM = 4,
174  AUDIO_SOURCE_REMOTE_USER = 5,
178  AUDIO_SOURCE_REMOTE_CHANNEL = 6,
179 
183  AUDIO_SOURCE_UNKNOWN = 100
184 };
185 
189 enum AudioRoute {
193  ROUTE_DEFAULT = -1,
197  ROUTE_HEADSET = 0,
201  ROUTE_EARPIECE = 1,
205  ROUTE_HEADSETNOMIC = 2,
209  ROUTE_SPEAKERPHONE = 3,
213  ROUTE_LOUDSPEAKER = 4,
217  ROUTE_BLUETOOTH_DEVICE_HFP = 5,
221  ROUTE_USB = 6,
225  ROUTE_HDMI = 7,
229  ROUTE_DISPLAYPORT = 8,
233  ROUTE_AIRPLAY = 9,
237  ROUTE_BLUETOOTH_DEVICE_A2DP = 10,
238 };
239 
243 enum BYTES_PER_SAMPLE {
247  TWO_BYTES_PER_SAMPLE = 2,
248 };
249 
251  int sample_rate;
252  size_t channels;
253  size_t frames_per_buffer;
254 
255  AudioParameters() : sample_rate(0), channels(0), frames_per_buffer(0) {}
256 };
257 
261 enum RAW_AUDIO_FRAME_OP_MODE_TYPE {
267  RAW_AUDIO_FRAME_OP_MODE_READ_ONLY = 0,
268 
274  RAW_AUDIO_FRAME_OP_MODE_READ_WRITE = 2,
275 };
276 
277 } // namespace rtc
278 
279 namespace media {
283 enum MEDIA_SOURCE_TYPE {
287  AUDIO_PLAYOUT_SOURCE = 0,
291  AUDIO_RECORDING_SOURCE = 1,
295  PRIMARY_CAMERA_SOURCE = 2,
299  SECONDARY_CAMERA_SOURCE = 3,
303  PRIMARY_SCREEN_SOURCE = 4,
307  SECONDARY_SCREEN_SOURCE = 5,
311  CUSTOM_VIDEO_SOURCE = 6,
315  MEDIA_PLAYER_SOURCE = 7,
319  RTC_IMAGE_PNG_SOURCE = 8,
323  RTC_IMAGE_JPEG_SOURCE = 9,
327  RTC_IMAGE_GIF_SOURCE = 10,
331  REMOTE_VIDEO_SOURCE = 11,
335  TRANSCODED_VIDEO_SOURCE = 12,
339  SPEECH_DRIVEN_VIDEO_SOURCE = 13,
343  UNKNOWN_MEDIA_SOURCE = 100
344 };
345 
346 namespace base {
347 
348 typedef void* view_t;
349 
350 typedef const char* user_id_t;
351 
352 static const uint8_t kMaxCodecNameLength = 50;
353 
362  uint32_t timestamp;
363  // Audio level indication.
364  uint8_t audioLevelIndication;
365  PacketOptions() : timestamp(0), audioLevelIndication(127) {}
366 };
367 
376  uint64_t sendTs;
380  uint8_t codec;
381  AudioEncodedFrameInfo() : sendTs(0), codec(0) {}
382 };
383 
392  // Stereo, 32 kHz, 60 ms (2 * 32 * 60)
400  kMaxDataSizeSamples = 3840,
402  kMaxDataSizeBytes = kMaxDataSizeSamples * sizeof(int16_t),
403  };
404 
428  rtc::BYTES_PER_SAMPLE bytes_per_sample;
432  int16_t data_[kMaxDataSizeSamples];
433 
439 
440  AudioPcmFrame& operator=(const AudioPcmFrame& src) {
441  if (this == &src) {
442  return *this;
443  }
444 
450  is_stereo_ = src.is_stereo_;
451  this->audio_track_number_ = src.audio_track_number_;
452 
453  size_t length = src.samples_per_channel_ * src.num_channels_;
454  if (length > kMaxDataSizeSamples) {
455  length = kMaxDataSizeSamples;
456  }
457 
458  memcpy(data_, src.data_, length * sizeof(int16_t));
459 
460  return *this;
461  }
462 
463  AudioPcmFrame()
464  : capture_timestamp(0),
466  sample_rate_hz_(0),
467  num_channels_(0),
469  bytes_per_sample(rtc::TWO_BYTES_PER_SAMPLE),
470  is_stereo_(false) {
471  memset(data_, 0, sizeof(data_));
472  }
473 
474  AudioPcmFrame(const AudioPcmFrame& src)
481  is_stereo_(src.is_stereo_) {
482  size_t length = src.samples_per_channel_ * src.num_channels_;
483  if (length > kMaxDataSizeSamples) {
484  length = kMaxDataSizeSamples;
485  }
486 
487  memcpy(this->data_, src.data_, length * sizeof(int16_t));
488  }
489 };
490 
494 enum AUDIO_DUAL_MONO_MODE {
498  AUDIO_DUAL_MONO_STEREO = 0,
503  AUDIO_DUAL_MONO_L = 1,
508  AUDIO_DUAL_MONO_R = 2,
513  AUDIO_DUAL_MONO_MIX = 3
514 };
515 
519 enum VIDEO_PIXEL_FORMAT {
523  VIDEO_PIXEL_DEFAULT = 0,
527  VIDEO_PIXEL_I420 = 1,
531  VIDEO_PIXEL_BGRA = 2,
535  VIDEO_PIXEL_NV21 = 3,
539  VIDEO_PIXEL_RGBA = 4,
543  VIDEO_PIXEL_NV12 = 8,
547  VIDEO_TEXTURE_2D = 10,
551  VIDEO_TEXTURE_OES = 11,
552  /*
553  12: pixel format for iOS CVPixelBuffer NV12
554  */
555  VIDEO_CVPIXEL_NV12 = 12,
556  /*
557  13: pixel format for iOS CVPixelBuffer I420
558  */
559  VIDEO_CVPIXEL_I420 = 13,
560  /*
561  14: pixel format for iOS CVPixelBuffer BGRA
562  */
563  VIDEO_CVPIXEL_BGRA = 14,
567  VIDEO_CVPIXEL_P010 = 15,
571  VIDEO_PIXEL_I422 = 16,
577  VIDEO_TEXTURE_ID3D11TEXTURE2D = 17,
582  VIDEO_PIXEL_I010 = 18,
583 };
584 
588 enum RENDER_MODE_TYPE {
593  RENDER_MODE_HIDDEN = 1,
599  RENDER_MODE_FIT = 2,
604  RENDER_MODE_ADAPTIVE __deprecated = 3,
605 };
606 
610 enum CAMERA_VIDEO_SOURCE_TYPE {
614  CAMERA_SOURCE_FRONT = 0,
618  CAMERA_SOURCE_BACK = 1,
622  VIDEO_SOURCE_UNSPECIFIED = 2,
623 };
624 
630  public:
631  enum META_INFO_KEY {
632  KEY_FACE_CAPTURE = 0,
633  };
634  virtual ~IVideoFrameMetaInfo(){};
635  virtual const char* getMetaInfoStr(META_INFO_KEY key) const = 0;
636 };
637 
638 struct ColorSpace {
639  enum PrimaryID {
640  // The indices are equal to the values specified in T-REC H.273 Table 2.
641  PRIMARYID_BT709 = 1,
642  PRIMARYID_UNSPECIFIED = 2,
643  PRIMARYID_BT470M = 4,
644  PRIMARYID_BT470BG = 5,
645  PRIMARYID_SMPTE170M = 6, // Identical to BT601
646  PRIMARYID_SMPTE240M = 7,
647  PRIMARYID_FILM = 8,
648  PRIMARYID_BT2020 = 9,
649  PRIMARYID_SMPTEST428 = 10,
650  PRIMARYID_SMPTEST431 = 11,
651  PRIMARYID_SMPTEST432 = 12,
652  PRIMARYID_JEDECP22 = 22, // Identical to EBU3213-E
653  };
654 
655  enum RangeID {
656  // The indices are equal to the values specified at
657  // https://www.webmproject.org/docs/container/#colour for the element Range.
658  RANGEID_INVALID = 0,
659  // Limited Rec. 709 color range with RGB values ranging from 16 to 235.
660  RANGEID_LIMITED = 1,
661  // Full RGB color range with RGB valees from 0 to 255.
662  RANGEID_FULL = 2,
663  // Range is defined by MatrixCoefficients/TransferCharacteristics.
664  RANGEID_DERIVED = 3,
665  };
666 
667  enum MatrixID {
668  // The indices are equal to the values specified in T-REC H.273 Table 4.
669  MATRIXID_RGB = 0,
670  MATRIXID_BT709 = 1,
671  MATRIXID_UNSPECIFIED = 2,
672  MATRIXID_FCC = 4,
673  MATRIXID_BT470BG = 5,
674  MATRIXID_SMPTE170M = 6,
675  MATRIXID_SMPTE240M = 7,
676  MATRIXID_YCOCG = 8,
677  MATRIXID_BT2020_NCL = 9,
678  MATRIXID_BT2020_CL = 10,
679  MATRIXID_SMPTE2085 = 11,
680  MATRIXID_CDNCLS = 12,
681  MATRIXID_CDCLS = 13,
682  MATRIXID_BT2100_ICTCP = 14,
683  };
684 
685  enum TransferID {
686  // The indices are equal to the values specified in T-REC H.273 Table 3.
687  TRANSFERID_BT709 = 1,
688  TRANSFERID_UNSPECIFIED = 2,
689  TRANSFERID_GAMMA22 = 4,
690  TRANSFERID_GAMMA28 = 5,
691  TRANSFERID_SMPTE170M = 6,
692  TRANSFERID_SMPTE240M = 7,
693  TRANSFERID_LINEAR = 8,
694  TRANSFERID_LOG = 9,
695  TRANSFERID_LOG_SQRT = 10,
696  TRANSFERID_IEC61966_2_4 = 11,
697  TRANSFERID_BT1361_ECG = 12,
698  TRANSFERID_IEC61966_2_1 = 13,
699  TRANSFERID_BT2020_10 = 14,
700  TRANSFERID_BT2020_12 = 15,
701  TRANSFERID_SMPTEST2084 = 16,
702  TRANSFERID_SMPTEST428 = 17,
703  TRANSFERID_ARIB_STD_B67 = 18,
704  };
705 
706  PrimaryID primaries;
707  TransferID transfer;
708  MatrixID matrix;
709  RangeID range;
710 
711  ColorSpace()
712  : primaries(PRIMARYID_UNSPECIFIED), transfer(TRANSFERID_UNSPECIFIED),
713  matrix(MATRIXID_UNSPECIFIED), range(RANGEID_INVALID) {}
714 
715  bool validate() const {
716  return primaries != PRIMARYID_UNSPECIFIED || transfer != TRANSFERID_UNSPECIFIED ||
717  matrix != MATRIXID_UNSPECIFIED ||
718  range != RANGEID_INVALID;
719  }
720 };
721 
729  uint16_t redPrimaryX;
733  uint16_t redPrimaryY;
737  uint16_t greenPrimaryX;
741  uint16_t greenPrimaryY;
745  uint16_t bluePrimaryX;
749  uint16_t bluePrimaryY;
753  uint16_t whitePointX;
757  uint16_t whitePointY;
761  unsigned int maxMasteringLuminance;
765  unsigned int minMasteringLuminance;
774 
776  : redPrimaryX(0),
777  redPrimaryY(0),
778  greenPrimaryX(0),
779  greenPrimaryY(0),
780  bluePrimaryX(0),
781  bluePrimaryY(0),
782  whitePointX(0),
783  whitePointY(0),
788 
789  bool validate() const {
790  return maxContentLightLevel >= 0 && maxContentLightLevel <= 20000 &&
792  maxFrameAverageLightLevel <= 20000;
793  }
794 };
795 
799 enum ALPHA_STITCH_MODE {
803  NO_ALPHA_STITCH = 0,
807  ALPHA_STITCH_UP = 1,
811  ALPHA_STITCH_BELOW = 2,
815  ALPHA_STITCH_LEFT = 3,
819  ALPHA_STITCH_RIGHT = 4,
820 };
821 
822 
829  format(VIDEO_PIXEL_DEFAULT),
830  buffer(NULL),
831  stride(0),
832  height(0),
833  cropLeft(0),
834  cropTop(0),
835  cropRight(0),
836  cropBottom(0),
837  rotation(0),
838  timestamp(0),
839  eglContext(NULL),
841  textureId(0),
842  fenceObject(0),
843  metadataBuffer(NULL),
844  metadataSize(0),
845  alphaBuffer(NULL),
846  fillAlphaBuffer(false),
847  alphaStitchMode(NO_ALPHA_STITCH),
848  d3d11Texture2d(NULL),
849  textureSliceIndex(0){}
850 
863  };
864 
881  };
882 
890  VIDEO_PIXEL_FORMAT format;
891 
895  void* buffer;
900  int stride;
904  int height;
908  int cropLeft;
912  int cropTop;
925  int rotation;
930  long long timestamp;
938  void* eglContext;
952  long long fenceObject;
956  float matrix[16];
962  uint8_t* metadataBuffer;
975  uint8_t* alphaBuffer;
992  ALPHA_STITCH_MODE alphaStitchMode;
993 
999 
1005 
1010 
1016 };
1017 
1026 struct VideoFrame {
1027  VideoFrame():
1028  type(VIDEO_PIXEL_DEFAULT),
1029  width(0),
1030  height(0),
1031  yStride(0),
1032  uStride(0),
1033  vStride(0),
1034  yBuffer(NULL),
1035  uBuffer(NULL),
1036  vBuffer(NULL),
1037  rotation(0),
1038  renderTimeMs(0),
1039  avsync_type(0),
1040  metadata_buffer(NULL),
1041  metadata_size(0),
1042  sharedContext(0),
1043  textureId(0),
1044  d3d11Texture2d(NULL),
1045  alphaBuffer(NULL),
1046  alphaStitchMode(NO_ALPHA_STITCH),
1047  pixelBuffer(NULL),
1048  metaInfo(NULL){
1049  memset(matrix, 0, sizeof(matrix));
1050  }
1054  VIDEO_PIXEL_FORMAT type;
1058  int width;
1062  int height;
1068  int yStride;
1074  int uStride;
1080  int vStride;
1084  uint8_t* yBuffer;
1088  uint8_t* uBuffer;
1092  uint8_t* vBuffer;
1102  int64_t renderTimeMs;
1136  float matrix[16];
1146  uint8_t* alphaBuffer;
1151  ALPHA_STITCH_MODE alphaStitchMode;
1160 
1165 
1171 };
1172 
1177  public:
1188  virtual void onFrame(const VideoFrame* frame) = 0;
1189  virtual ~IVideoFrameObserver() {}
1190  virtual bool isExternal() { return true; }
1217  virtual VIDEO_PIXEL_FORMAT getVideoFormatPreference() { return VIDEO_PIXEL_DEFAULT; }
1218 };
1219 
1220 enum MEDIA_PLAYER_SOURCE_TYPE {
1226  MEDIA_PLAYER_SOURCE_DEFAULT,
1232  MEDIA_PLAYER_SOURCE_FULL_FEATURED,
1237  MEDIA_PLAYER_SOURCE_SIMPLE,
1238 };
1239 
1243 enum VIDEO_MODULE_POSITION {
1249  POSITION_POST_CAPTURER = 1 << 0,
1254  POSITION_PRE_RENDERER = 1 << 1,
1264  POSITION_PRE_ENCODER = 1 << 2,
1270  POSITION_POST_CAPTURER_ORIGIN = 1 << 3,
1271 };
1272 
1273 } // namespace base
1274 
1277 #define MAX_CONTENT_INSPECT_MODULE_COUNT 32
1278 enum CONTENT_INSPECT_RESULT {
1279  CONTENT_INSPECT_NEUTRAL = 1,
1280  CONTENT_INSPECT_SEXY = 2,
1281  CONTENT_INSPECT_PORN = 3,
1282 };
1283 
1287 enum CONTENT_INSPECT_TYPE {
1291  CONTENT_INSPECT_INVALID = 0,
1296  CONTENT_INSPECT_MODERATION __deprecated = 1,
1301  CONTENT_INSPECT_SUPERVISION = 2,
1307  CONTENT_INSPECT_IMAGE_MODERATION = 3
1308 };
1309 
1318  CONTENT_INSPECT_TYPE type;
1324  unsigned int interval;
1328  base::VIDEO_MODULE_POSITION position;
1330  type = CONTENT_INSPECT_INVALID;
1331  interval = 0;
1332  position = base::POSITION_PRE_ENCODER;
1333  }
1334 };
1345  const char* extraInfo;
1351  const char* serverConfig;
1359  ContentInspectModule modules[MAX_CONTENT_INSPECT_MODULE_COUNT];
1366  ContentInspectConfig& operator=(const ContentInspectConfig& rth) {
1367  extraInfo = rth.extraInfo;
1368  serverConfig = rth.serverConfig;
1369  moduleCount = rth.moduleCount;
1370  memcpy(&modules, &rth.modules, MAX_CONTENT_INSPECT_MODULE_COUNT * sizeof(ContentInspectModule));
1371  return *this;
1372  }
1373  ContentInspectConfig() : extraInfo(NULL), serverConfig(NULL), moduleCount(0) {}
1374 };
1387  const char* filePath;
1388 
1395  media::base::VIDEO_MODULE_POSITION position;
1396  SnapshotConfig() :filePath(NULL), position(media::base::POSITION_PRE_ENCODER) {}
1397 };
1398 
1403  public:
1414  virtual void onFrame(agora::media::base::AudioPcmFrame* frame) = 0;
1415  virtual ~IAudioPcmFrameSink() {}
1416 };
1417 
1422  public:
1431  };
1432  enum { MAX_HANDLE_TIME_CNT = 10 };
1436  struct AudioFrame {
1448  agora::rtc::BYTES_PER_SAMPLE bytesPerSample;
1464  void* buffer;
1471  int64_t renderTimeMs;
1490  uint32_t rtpTimestamp;
1491 
1492  AudioFrame()
1494  samplesPerChannel(0),
1495  bytesPerSample(rtc::TWO_BYTES_PER_SAMPLE),
1496  channels(0),
1497  samplesPerSec(0),
1498  buffer(NULL),
1499  renderTimeMs(0),
1500  avsync_type(0),
1501  presentationMs(0),
1502  audioTrackNumber(0),
1503  rtpTimestamp(0) {}
1504  };
1505 
1507  AUDIO_FRAME_POSITION_NONE = 0x0000,
1523  };
1524 
1546  struct AudioParams {
1556 
1563 
1567  rtc::RAW_AUDIO_FRAME_OP_MODE_TYPE mode;
1568 
1573 
1574  AudioParams()
1575  : sample_rate(0),
1576  channels(0),
1577  mode(rtc::RAW_AUDIO_FRAME_OP_MODE_READ_ONLY),
1578  samples_per_call(0) {}
1579  AudioParams(int samplerate, int channel, rtc::RAW_AUDIO_FRAME_OP_MODE_TYPE type,
1580  int samplesPerCall)
1581  : sample_rate(samplerate),
1582  channels(channel),
1583  mode(type),
1584  samples_per_call(samplesPerCall) {}
1585  };
1586 
1587  public:
1588  virtual ~IAudioFrameObserverBase() {}
1589 
1615  virtual bool onRecordAudioFrame(const char* channelId, AudioFrame& audioFrame) = 0;
1641  virtual bool onPlaybackAudioFrame(const char* channelId, AudioFrame& audioFrame) = 0;
1667  virtual bool onMixedAudioFrame(const char* channelId, AudioFrame& audioFrame) = 0;
1693  virtual bool onEarMonitoringAudioFrame(AudioFrame& audioFrame) = 0;
1704  virtual bool onPlaybackAudioFrameBeforeMixing(const char* channelId, base::user_id_t userId,
1705  AudioFrame& audioFrame) {
1706  (void)channelId;
1707  (void)userId;
1708  (void)audioFrame;
1709  return true;
1710  }
1711 
1742 
1761 
1780 
1799 
1818 };
1819 
1824  public:
1836  virtual bool onPlaybackAudioFrameBeforeMixing(const char* channelId, rtc::uid_t uid,
1837  AudioFrame& audioFrame) = 0;
1838 };
1839 
1849  const float* audioSpectrumData;
1854 
1856  AudioSpectrumData(const float* data, int length) : audioSpectrumData(data), dataLength(length) {}
1857 };
1858 
1866  agora::rtc::uid_t uid;
1871 
1872  UserAudioSpectrumInfo() : uid(0) {}
1873 
1874  UserAudioSpectrumInfo(agora::rtc::uid_t uid, const float* data, int length)
1875  : uid(uid), spectrumData(data, length) {}
1876 };
1877 
1882  public:
1883  virtual ~IAudioSpectrumObserver() {}
1884 
1901  virtual bool onLocalAudioSpectrum(const AudioSpectrumData& data) = 0;
1921  virtual bool onRemoteAudioSpectrum(const UserAudioSpectrumInfo* spectrums,
1922  unsigned int spectrumNumber) = 0;
1923 };
1924 
1929  public:
1950  const char* channelId, rtc::uid_t uid, const uint8_t* imageBuffer, size_t length,
1951  const rtc::EncodedVideoFrameInfo& videoEncodedFrameInfo) = 0;
1952 
1953  virtual ~IVideoEncodedFrameObserver() {}
1954 };
1955 
1960  public:
1970  PROCESS_MODE_READ_ONLY, // Observer works as a pure renderer and will not modify the original
1971  // frame.
1976  PROCESS_MODE_READ_WRITE, // Observer works as a filter that will process the video frame and
1977  // affect the following frame processing in SDK.
1978  };
1979 
1980  public:
1981  virtual ~IVideoFrameObserver() {}
1982 
2026  virtual bool onCaptureVideoFrame(agora::rtc::VIDEO_SOURCE_TYPE sourceType,
2027  VideoFrame& videoFrame) = 0;
2028 
2066  virtual bool onPreEncodeVideoFrame(agora::rtc::VIDEO_SOURCE_TYPE sourceType,
2067  VideoFrame& videoFrame) = 0;
2068 
2092  virtual bool onMediaPlayerVideoFrame(VideoFrame& videoFrame, int mediaPlayerId) = 0;
2093 
2134  virtual bool onRenderVideoFrame(const char* channelId, rtc::uid_t remoteUid,
2135  VideoFrame& videoFrame) = 0;
2136 
2137  virtual bool onTranscodedVideoFrame(VideoFrame& videoFrame) = 0;
2138 
2152 
2168  virtual base::VIDEO_PIXEL_FORMAT getVideoFormatPreference() { return base::VIDEO_PIXEL_DEFAULT; }
2169 
2195  virtual bool getRotationApplied() { return false; }
2196 
2224  virtual bool getMirrorApplied() { return false; }
2225 
2256  virtual uint32_t getObservedFramePosition() {
2257  return base::POSITION_POST_CAPTURER | base::POSITION_PRE_RENDERER;
2258  }
2259 
2267  virtual bool isExternal() { return true; }
2268 };
2269 
2273 enum EXTERNAL_VIDEO_SOURCE_TYPE {
2277  VIDEO_FRAME = 0,
2281  ENCODED_VIDEO_FRAME,
2282 };
2283 
2289 enum MediaRecorderContainerFormat {
2293  FORMAT_MP4 = 1,
2294 };
2300 enum MediaRecorderStreamType {
2304  STREAM_TYPE_AUDIO = 0x01,
2308  STREAM_TYPE_VIDEO = 0x02,
2312  STREAM_TYPE_BOTH = STREAM_TYPE_AUDIO | STREAM_TYPE_VIDEO,
2313 };
2319 enum RecorderState {
2323  RECORDER_STATE_ERROR = -1,
2327  RECORDER_STATE_START = 2,
2331  RECORDER_STATE_STOP = 3,
2332 };
2338 enum RecorderReasonCode {
2342  RECORDER_REASON_NONE = 0,
2346  RECORDER_REASON_WRITE_FAILED = 1,
2351  RECORDER_REASON_NO_STREAM = 2,
2355  RECORDER_REASON_OVER_MAX_DURATION = 3,
2359  RECORDER_REASON_CONFIG_CHANGED = 4,
2360 };
2376  const char* storagePath;
2380  MediaRecorderContainerFormat containerFormat;
2384  MediaRecorderStreamType streamType;
2401  int width;
2408  int height;
2414  int fps;
2434  agora::rtc::VIDEO_SOURCE_TYPE videoSourceType;
2435 
2437  : storagePath(NULL),
2438  containerFormat(FORMAT_MP4),
2439  streamType(STREAM_TYPE_BOTH),
2440  maxDurationMs(120000),
2442  width(1280),
2443  height(720),
2444  fps(30),
2445  sample_rate(48000),
2446  channel_num(1),
2447  videoSourceType(rtc::VIDEO_SOURCE_CAMERA_PRIMARY) {}
2448  MediaRecorderConfiguration(const char* path, MediaRecorderContainerFormat format,
2449  MediaRecorderStreamType type, int duration, int interval)
2450  : storagePath(path),
2451  containerFormat(format),
2452  streamType(type),
2453  maxDurationMs(duration),
2454  recorderInfoUpdateInterval(interval),
2455  width(1280),
2456  height(720),
2457  fps(30),
2458  sample_rate(48000),
2459  channel_num(1),
2460  videoSourceType(rtc::VIDEO_SOURCE_CAMERA_PRIMARY) {}
2461 };
2462 
2467  public:
2510  virtual bool onFaceInfo(const char* outFaceInfo) = 0;
2511 
2512  virtual ~IFaceInfoObserver() {}
2513 };
2514 
2524  const char* fileName;
2528  unsigned int durationMs;
2532  unsigned int fileSize;
2533 
2534  RecorderInfo() : fileName(NULL), durationMs(0), fileSize(0) {}
2535  RecorderInfo(const char* name, unsigned int dur, unsigned int size)
2536  : fileName(name), durationMs(dur), fileSize(size) {}
2537 };
2538 
2543  public:
2559  virtual void onRecorderStateChanged(const char* channelId, rtc::uid_t uid, RecorderState state,
2560  RecorderReasonCode reason) = 0;
2577  virtual void onRecorderInfoUpdated(const char* channelId, rtc::uid_t uid,
2578  const RecorderInfo& info) = 0;
2579 
2580  virtual ~IMediaRecorderObserver() {}
2581 };
2582 
2583 } // namespace media
2584 } // namespace agora
agora::media::IVideoEncodedFrameObserver::onEncodedVideoFrameReceived
virtual bool onEncodedVideoFrameReceived(const char *channelId, rtc::uid_t uid, const uint8_t *imageBuffer, size_t length, const rtc::EncodedVideoFrameInfo &videoEncodedFrameInfo)=0
Reports that the receiver has received the to-be-decoded video frame sent by the remote end.
agora::media::IVideoFrameObserver::PROCESS_MODE_READ_ONLY
@ PROCESS_MODE_READ_ONLY
Definition: AgoraMediaBase.h:1970
agora::media::base::VideoFrame
Configurations of the video frame.
Definition: AgoraMediaBase.h:1026
agora::media::base::ExternalVideoFrame::cropBottom
int cropBottom
Definition: AgoraMediaBase.h:920
agora::media::IAudioFrameObserverBase::AudioParams::channels
int channels
Definition: AgoraMediaBase.h:1562
agora::media::base::Hdr10MetadataInfo::redPrimaryY
uint16_t redPrimaryY
Definition: AgoraMediaBase.h:733
agora::media::base::VideoFrame::metadata_size
int metadata_size
Definition: AgoraMediaBase.h:1118
agora::media::SnapshotConfig::filePath
const char * filePath
Definition: AgoraMediaBase.h:1387
agora::media::AudioSpectrumData::audioSpectrumData
const float * audioSpectrumData
Definition: AgoraMediaBase.h:1849
agora::media::IAudioFrameObserverBase::onEarMonitoringAudioFrame
virtual bool onEarMonitoringAudioFrame(AudioFrame &audioFrame)=0
Gets the in-ear monitoring audio frame.
agora::rtc::ExtensionContext::providerName
const char * providerName
Definition: AgoraMediaBase.h:55
agora::media::base::ExternalVideoFrame::matrix
float matrix[16]
Definition: AgoraMediaBase.h:956
agora::media::IAudioPcmFrameSink
Definition: AgoraMediaBase.h:1402
agora::media::IMediaRecorderObserver
The IMediaRecorderObserver class.
Definition: AgoraMediaBase.h:2542
agora::media::IAudioFrameObserverBase
Definition: AgoraMediaBase.h:1421
agora::media::base::ExternalVideoFrame::colorSpace
ColorSpace colorSpace
Definition: AgoraMediaBase.h:1015
agora::media::ContentInspectConfig::modules
ContentInspectModule modules[MAX_CONTENT_INSPECT_MODULE_COUNT]
Definition: AgoraMediaBase.h:1359
agora::media::base::VideoFrame::uStride
int uStride
Definition: AgoraMediaBase.h:1074
agora::media::IAudioFrameObserverBase::AudioFrame::rtpTimestamp
uint32_t rtpTimestamp
Definition: AgoraMediaBase.h:1490
agora::media::IAudioFrameObserverBase::FRAME_TYPE_PCM16
@ FRAME_TYPE_PCM16
Definition: AgoraMediaBase.h:1430
agora::media::IAudioFrameObserverBase::AudioFrame::audioTrackNumber
int audioTrackNumber
Definition: AgoraMediaBase.h:1486
agora::media::base::VideoFrame::alphaBuffer
uint8_t * alphaBuffer
Definition: AgoraMediaBase.h:1146
agora::media::base::IVideoFrameObserver::getVideoFormatPreference
virtual VIDEO_PIXEL_FORMAT getVideoFormatPreference()
Sets the format of the raw video data output by the SDK.
Definition: AgoraMediaBase.h:1217
agora::media::IFaceInfoObserver
The IFaceInfoObserver class.
Definition: AgoraMediaBase.h:2466
agora::media::base::VideoFrame::height
int height
Definition: AgoraMediaBase.h:1062
agora::media::base::AudioPcmFrame::data_
int16_t data_[kMaxDataSizeSamples]
Definition: AgoraMediaBase.h:432
agora::media::IAudioFrameObserverBase::onRecordAudioFrame
virtual bool onRecordAudioFrame(const char *channelId, AudioFrame &audioFrame)=0
Gets the captured audio frame.
agora::media::MediaRecorderConfiguration::maxDurationMs
int maxDurationMs
Definition: AgoraMediaBase.h:2388
agora::media::IAudioSpectrumObserver
Definition: AgoraMediaBase.h:1881
agora::rtc::AudioParameters
Definition: AgoraMediaBase.h:250
agora::media::IAudioFrameObserverBase::AudioFrame::renderTimeMs
int64_t renderTimeMs
Definition: AgoraMediaBase.h:1471
agora::media::IAudioFrameObserverBase::AudioParams::mode
rtc::RAW_AUDIO_FRAME_OP_MODE_TYPE mode
Definition: AgoraMediaBase.h:1567
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_RAW_DATA
@ VIDEO_BUFFER_RAW_DATA
Definition: AgoraMediaBase.h:872
agora::media::IAudioFrameObserverBase::getPlaybackAudioParams
virtual AudioParams getPlaybackAudioParams()=0
Sets the audio format for the onPlaybackAudioFrame callback.
agora::media::base::ExternalVideoFrame::buffer
void * buffer
Definition: AgoraMediaBase.h:895
agora::media::IAudioFrameObserverBase::AudioFrame::channels
int channels
Definition: AgoraMediaBase.h:1454
agora::media::IVideoFrameObserver::getVideoFormatPreference
virtual base::VIDEO_PIXEL_FORMAT getVideoFormatPreference()
Definition: AgoraMediaBase.h:2168
agora::rtc::EncodedVideoFrameInfo
Information about externally encoded video frames.
Definition: AgoraBase.h:1821
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_TYPE
VIDEO_BUFFER_TYPE
The video buffer type.
Definition: AgoraMediaBase.h:868
agora::media::ContentInspectConfig::serverConfig
const char * serverConfig
Definition: AgoraMediaBase.h:1351
agora::media::base::IVideoFrameObserver
The IVideoFrameObserver class.
Definition: AgoraMediaBase.h:1176
agora::media::IVideoFrameObserver::getVideoFrameProcessMode
virtual VIDEO_FRAME_PROCESS_MODE getVideoFrameProcessMode()
Occurs each time the SDK receives a video frame and prompts you to set the process mode of the video ...
Definition: AgoraMediaBase.h:2151
agora::media::IVideoFrameObserver
The IVideoFrameObserver class.
Definition: AgoraMediaBase.h:1959
agora::media::IAudioFrameObserverBase::AudioFrame
Raw audio data.
Definition: AgoraMediaBase.h:1436
agora::media::base::AudioEncodedFrameInfo::codec
uint8_t codec
Definition: AgoraMediaBase.h:380
agora::media::MediaRecorderConfiguration::recorderInfoUpdateInterval
int recorderInfoUpdateInterval
Definition: AgoraMediaBase.h:2394
agora::media::IAudioFrameObserver
Definition: AgoraMediaBase.h:1823
agora::media::base::Hdr10MetadataInfo
Definition: AgoraMediaBase.h:725
agora::media::IAudioFrameObserverBase::getEarMonitoringAudioParams
virtual AudioParams getEarMonitoringAudioParams()=0
Sets the audio format for the onEarMonitoringAudioFrame callback.
agora::media::base::VideoFrame::d3d11Texture2d
void * d3d11Texture2d
Definition: AgoraMediaBase.h:1131
agora::media::base::VideoFrame::rotation
int rotation
Definition: AgoraMediaBase.h:1097
agora::media::base::VideoFrame::alphaStitchMode
ALPHA_STITCH_MODE alphaStitchMode
Definition: AgoraMediaBase.h:1151
agora::media::base::IVideoFrameObserver::onFrame
virtual void onFrame(const VideoFrame *frame)=0
Occurs each time the player receives a video frame.
agora::media::IMediaRecorderObserver::onRecorderStateChanged
virtual void onRecorderStateChanged(const char *channelId, rtc::uid_t uid, RecorderState state, RecorderReasonCode reason)=0
Callback when the recording state changes.
agora::media::IAudioFrameObserverBase::getMixedAudioParams
virtual AudioParams getMixedAudioParams()=0
Sets the audio format for the onMixedAudioFrame callback.
agora::media::base::AudioPcmFrame::OPTIONAL_ENUM_SIZE_T
OPTIONAL_ENUM_SIZE_T
Definition: AgoraMediaBase.h:391
agora::media::MediaRecorderConfiguration::sample_rate
int sample_rate
Definition: AgoraMediaBase.h:2420
agora::media::base::ExternalVideoFrame::eglContext
void * eglContext
Definition: AgoraMediaBase.h:938
agora::media::base::VideoFrame::metaInfo
IVideoFrameMetaInfo * metaInfo
Definition: AgoraMediaBase.h:1159
agora::media::base::ExternalVideoFrame::cropRight
int cropRight
Definition: AgoraMediaBase.h:916
agora::media::IAudioFrameObserverBase::getRecordAudioParams
virtual AudioParams getRecordAudioParams()=0
Sets the audio format for the onRecordAudioFrame callback.
agora::media::base::VideoFrame::textureId
int textureId
Definition: AgoraMediaBase.h:1126
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_ARRAY
@ VIDEO_BUFFER_ARRAY
Definition: AgoraMediaBase.h:876
agora::rtc::ExtensionContext
The context information of the extension.
Definition: AgoraMediaBase.h:41
agora::media::MediaRecorderConfiguration::videoSourceType
agora::rtc::VIDEO_SOURCE_TYPE videoSourceType
Definition: AgoraMediaBase.h:2434
agora::media::base::ExternalVideoFrame::VIDEO_BUFFER_TEXTURE
@ VIDEO_BUFFER_TEXTURE
Definition: AgoraMediaBase.h:880
agora::media::IAudioFrameObserverBase::AudioFrame::presentationMs
int64_t presentationMs
Definition: AgoraMediaBase.h:1482
agora::media::base::VideoFrame::avsync_type
int avsync_type
Definition: AgoraMediaBase.h:1106
agora::media::base::Hdr10MetadataInfo::greenPrimaryY
uint16_t greenPrimaryY
Definition: AgoraMediaBase.h:741
agora::media::base::VideoFrame::matrix
float matrix[16]
Definition: AgoraMediaBase.h:1136
agora::media::base::ExternalVideoFrame::fenceObject
long long fenceObject
Definition: AgoraMediaBase.h:952
agora::media::base::ExternalVideoFrame::cropLeft
int cropLeft
Definition: AgoraMediaBase.h:908
agora::media::IAudioFrameObserverBase::AudioFrame::samplesPerSec
int samplesPerSec
Definition: AgoraMediaBase.h:1458
agora::media::ContentInspectModule
ContentInspectModule class, a structure used to configure the frequency of video screenshot and uploa...
Definition: AgoraMediaBase.h:1314
agora::media::IAudioFrameObserverBase::AudioFrame::buffer
void * buffer
Definition: AgoraMediaBase.h:1464
agora::media::IAudioFrameObserverBase::onPlaybackAudioFrameBeforeMixing
virtual bool onPlaybackAudioFrameBeforeMixing(const char *channelId, base::user_id_t userId, AudioFrame &audioFrame)
Retrieves the audio frame before mixing of subscribed remote users.
Definition: AgoraMediaBase.h:1704
agora::media::IAudioSpectrumObserver::onRemoteAudioSpectrum
virtual bool onRemoteAudioSpectrum(const UserAudioSpectrumInfo *spectrums, unsigned int spectrumNumber)=0
Gets the remote audio spectrum.
agora::media::MediaRecorderConfiguration::fps
int fps
Definition: AgoraMediaBase.h:2414
agora::media::base::ColorSpace
Definition: AgoraMediaBase.h:638
agora::media::IMediaRecorderObserver::onRecorderInfoUpdated
virtual void onRecorderInfoUpdated(const char *channelId, rtc::uid_t uid, const RecorderInfo &info)=0
Callback for recording information updates.
agora::media::base::ExternalVideoFrame
The external video frame.
Definition: AgoraMediaBase.h:826
agora::media::base::ExternalVideoFrame::d3d11Texture2d
void * d3d11Texture2d
Definition: AgoraMediaBase.h:998
agora::media::base::AudioEncodedFrameInfo::sendTs
uint64_t sendTs
Definition: AgoraMediaBase.h:376
agora::media::ContentInspectConfig::moduleCount
int moduleCount
Definition: AgoraMediaBase.h:1365
agora::media::base::Hdr10MetadataInfo::whitePointX
uint16_t whitePointX
Definition: AgoraMediaBase.h:753
agora::media::base::VideoFrame::type
VIDEO_PIXEL_FORMAT type
Definition: AgoraMediaBase.h:1054
agora::media::base::AudioPcmFrame::capture_timestamp
int64_t capture_timestamp
Definition: AgoraMediaBase.h:408
agora::media::base::ExternalVideoFrame::timestamp
long long timestamp
Definition: AgoraMediaBase.h:930
agora::media::base::AudioPcmFrame::sample_rate_hz_
int sample_rate_hz_
Definition: AgoraMediaBase.h:416
agora::media::MediaRecorderConfiguration::height
int height
Definition: AgoraMediaBase.h:2408
agora::media::IFaceInfoObserver::onFaceInfo
virtual bool onFaceInfo(const char *outFaceInfo)=0
Occurs when the facial information processed by speech driven extension is received.
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION
AUDIO_FRAME_POSITION
Definition: AgoraMediaBase.h:1506
agora::media::base::ExternalVideoFrame::height
int height
Definition: AgoraMediaBase.h:904
agora::media::base::VideoFrame::sharedContext
void * sharedContext
Definition: AgoraMediaBase.h:1122
agora::media::base::ExternalVideoFrame::rotation
int rotation
Definition: AgoraMediaBase.h:925
agora::media::RecorderInfo
Information about the recording file.
Definition: AgoraMediaBase.h:2520
agora::media::base::ExternalVideoFrame::metadataBuffer
uint8_t * metadataBuffer
Definition: AgoraMediaBase.h:962
agora::media::IVideoFrameObserver::onCaptureVideoFrame
virtual bool onCaptureVideoFrame(agora::rtc::VIDEO_SOURCE_TYPE sourceType, VideoFrame &videoFrame)=0
Occurs each time the SDK receives a video frame captured by local devices.
agora::media::base::Hdr10MetadataInfo::minMasteringLuminance
unsigned int minMasteringLuminance
Definition: AgoraMediaBase.h:765
agora::media::UserAudioSpectrumInfo::spectrumData
struct AudioSpectrumData spectrumData
Definition: AgoraMediaBase.h:1870
agora::media::IAudioFrameObserverBase::AudioParams::samples_per_call
int samples_per_call
Definition: AgoraMediaBase.h:1572
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_PLAYBACK
@ AUDIO_FRAME_POSITION_PLAYBACK
Definition: AgoraMediaBase.h:1510
agora::media::base::ExternalVideoFrame::alphaStitchMode
ALPHA_STITCH_MODE alphaStitchMode
Definition: AgoraMediaBase.h:992
agora::media::base::PacketOptions
Definition: AgoraMediaBase.h:358
agora::media::base::PacketOptions::timestamp
uint32_t timestamp
Definition: AgoraMediaBase.h:362
agora::media::base::Hdr10MetadataInfo::maxMasteringLuminance
unsigned int maxMasteringLuminance
Definition: AgoraMediaBase.h:761
agora::media::base::Hdr10MetadataInfo::whitePointY
uint16_t whitePointY
Definition: AgoraMediaBase.h:757
agora::media::base::Hdr10MetadataInfo::greenPrimaryX
uint16_t greenPrimaryX
Definition: AgoraMediaBase.h:737
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_TYPE
AUDIO_FRAME_TYPE
Audio frame type.
Definition: AgoraMediaBase.h:1426
agora::media::MediaRecorderConfiguration::channel_num
int channel_num
Definition: AgoraMediaBase.h:2428
agora::media::base::VideoFrame::yBuffer
uint8_t * yBuffer
Definition: AgoraMediaBase.h:1084
agora::media::base::VideoFrame::hdr10MetadataInfo
Hdr10MetadataInfo hdr10MetadataInfo
Definition: AgoraMediaBase.h:1164
agora::media::base::VideoFrame::colorSpace
ColorSpace colorSpace
Definition: AgoraMediaBase.h:1170
agora::media::base::AudioPcmFrame::bytes_per_sample
rtc::BYTES_PER_SAMPLE bytes_per_sample
Definition: AgoraMediaBase.h:428
agora::media::UserAudioSpectrumInfo
Audio spectrum information of the remote user.
Definition: AgoraMediaBase.h:1862
agora::media::base::Hdr10MetadataInfo::redPrimaryX
uint16_t redPrimaryX
Definition: AgoraMediaBase.h:729
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_EAR_MONITORING
@ AUDIO_FRAME_POSITION_EAR_MONITORING
Definition: AgoraMediaBase.h:1522
agora::media::RecorderInfo::fileName
const char * fileName
Definition: AgoraMediaBase.h:2524
agora::media::IVideoFrameObserver::onRenderVideoFrame
virtual bool onRenderVideoFrame(const char *channelId, rtc::uid_t remoteUid, VideoFrame &videoFrame)=0
Occurs each time the SDK receives a video frame sent by the remote user.
agora::media::IVideoFrameObserver::PROCESS_MODE_READ_WRITE
@ PROCESS_MODE_READ_WRITE
Definition: AgoraMediaBase.h:1976
agora::media::IVideoFrameObserver::isExternal
virtual bool isExternal()
Definition: AgoraMediaBase.h:2267
agora::media::ContentInspectModule::interval
unsigned int interval
Definition: AgoraMediaBase.h:1324
agora::media::IVideoFrameObserver::getObservedFramePosition
virtual uint32_t getObservedFramePosition()
Sets the frame position for the video observer.
Definition: AgoraMediaBase.h:2256
agora::media::base::VideoFrame::yStride
int yStride
Definition: AgoraMediaBase.h:1068
agora::media::base::ExternalVideoFrame::alphaBuffer
uint8_t * alphaBuffer
Definition: AgoraMediaBase.h:975
agora::media::base::Hdr10MetadataInfo::bluePrimaryX
uint16_t bluePrimaryX
Definition: AgoraMediaBase.h:745
agora::media::ContentInspectModule::type
CONTENT_INSPECT_TYPE type
Definition: AgoraMediaBase.h:1318
agora::media::MediaRecorderConfiguration::containerFormat
MediaRecorderContainerFormat containerFormat
Definition: AgoraMediaBase.h:2380
agora::media::base::ExternalVideoFrame::EGL_CONTEXT14
@ EGL_CONTEXT14
Definition: AgoraMediaBase.h:862
agora::media::RecorderInfo::fileSize
unsigned int fileSize
Definition: AgoraMediaBase.h:2532
agora::media::base::ExternalVideoFrame::cropTop
int cropTop
Definition: AgoraMediaBase.h:912
agora::media::base::ExternalVideoFrame::type
VIDEO_BUFFER_TYPE type
Definition: AgoraMediaBase.h:886
agora::media::IVideoFrameObserver::onPreEncodeVideoFrame
virtual bool onPreEncodeVideoFrame(agora::rtc::VIDEO_SOURCE_TYPE sourceType, VideoFrame &videoFrame)=0
Occurs each time the SDK receives a pre-encoded video frame.
agora::media::base::ExternalVideoFrame::textureSliceIndex
int textureSliceIndex
Definition: AgoraMediaBase.h:1004
agora::media::base::Hdr10MetadataInfo::bluePrimaryY
uint16_t bluePrimaryY
Definition: AgoraMediaBase.h:749
agora::media::IVideoFrameObserver::getRotationApplied
virtual bool getRotationApplied()
Occurs each time the SDK receives a video frame, and prompts you whether to rotate the captured video...
Definition: AgoraMediaBase.h:2195
agora::media::base::Hdr10MetadataInfo::maxContentLightLevel
uint16_t maxContentLightLevel
Definition: AgoraMediaBase.h:769
agora::media::SnapshotConfig
The snapshot configuration.
Definition: AgoraMediaBase.h:1378
agora::media::base::VideoFrame::vBuffer
uint8_t * vBuffer
Definition: AgoraMediaBase.h:1092
agora::media::AudioSpectrumData::dataLength
int dataLength
Definition: AgoraMediaBase.h:1853
agora::media::base::ExternalVideoFrame::EGL_CONTEXT_TYPE
EGL_CONTEXT_TYPE
Definition: AgoraMediaBase.h:854
agora::media::IAudioFrameObserverBase::onMixedAudioFrame
virtual bool onMixedAudioFrame(const char *channelId, AudioFrame &audioFrame)=0
Retrieves the mixed captured and playback audio frame.
agora::media::IAudioFrameObserverBase::AudioParams
Audio data format.
Definition: AgoraMediaBase.h:1546
agora::media::base::AudioPcmFrame::num_channels_
size_t num_channels_
Definition: AgoraMediaBase.h:420
agora::rtc::ExtensionContext::uid
uid_t uid
Definition: AgoraMediaBase.h:51
agora::media::IAudioFrameObserverBase::AudioFrame::avsync_type
int avsync_type
Definition: AgoraMediaBase.h:1475
agora::media::IAudioFrameObserverBase::getObservedAudioFramePosition
virtual int getObservedAudioFramePosition()=0
Sets the frame position for the video observer.
agora::media::MediaRecorderConfiguration
Configuration for audio and video stream recording.
Definition: AgoraMediaBase.h:2366
agora::media::base::VideoFrame::metadata_buffer
uint8_t * metadata_buffer
Definition: AgoraMediaBase.h:1112
agora::rtc::ExtensionContext::isValid
bool isValid
Definition: AgoraMediaBase.h:47
agora::media::MediaRecorderConfiguration::streamType
MediaRecorderStreamType streamType
Definition: AgoraMediaBase.h:2384
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_BEFORE_MIXING
@ AUDIO_FRAME_POSITION_BEFORE_MIXING
Definition: AgoraMediaBase.h:1519
agora::media::ContentInspectModule::position
base::VIDEO_MODULE_POSITION position
Definition: AgoraMediaBase.h:1328
agora::media::MediaRecorderConfiguration::storagePath
const char * storagePath
Definition: AgoraMediaBase.h:2376
agora::media::AudioSpectrumData
The audio spectrum data.
Definition: AgoraMediaBase.h:1843
agora::media::base::VideoFrame::width
int width
Definition: AgoraMediaBase.h:1058
agora::media::base::AudioPcmFrame::audio_track_number_
int audio_track_number_
Definition: AgoraMediaBase.h:424
agora::media::RecorderInfo::durationMs
unsigned int durationMs
Definition: AgoraMediaBase.h:2528
agora::media::base::VideoFrame::renderTimeMs
int64_t renderTimeMs
Definition: AgoraMediaBase.h:1102
agora::media::base::AudioPcmFrame::samples_per_channel_
size_t samples_per_channel_
Definition: AgoraMediaBase.h:412
agora::media::IAudioFrameObserver::onPlaybackAudioFrameBeforeMixing
virtual bool onPlaybackAudioFrameBeforeMixing(const char *channelId, rtc::uid_t uid, AudioFrame &audioFrame)=0
Retrieves the audio frame before mixing of subscribed remote users.
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:1448
agora::media::base::ExternalVideoFrame::textureId
int textureId
Definition: AgoraMediaBase.h:947
agora::media::base::VideoFrame::pixelBuffer
void * pixelBuffer
Definition: AgoraMediaBase.h:1155
agora::media::IAudioFrameObserverBase::AudioFrame::type
AUDIO_FRAME_TYPE type
Definition: AgoraMediaBase.h:1440
agora::media::IAudioPcmFrameSink::onFrame
virtual void onFrame(agora::media::base::AudioPcmFrame *frame)=0
Occurs each time the player receives an audio frame.
agora::media::base::AudioPcmFrame::is_stereo_
bool is_stereo_
Definition: AgoraMediaBase.h:438
agora::media::IVideoEncodedFrameObserver
Definition: AgoraMediaBase.h:1928
agora::media::IAudioFrameObserverBase::AudioFrame::samplesPerChannel
int samplesPerChannel
Definition: AgoraMediaBase.h:1444
agora::media::IVideoFrameObserver::getMirrorApplied
virtual bool getMirrorApplied()
Occurs each time the SDK receives a video frame and prompts you whether or not to mirror the captured...
Definition: AgoraMediaBase.h:2224
agora::media::IAudioSpectrumObserver::onLocalAudioSpectrum
virtual bool onLocalAudioSpectrum(const AudioSpectrumData &data)=0
Gets the statistics of a local audio spectrum.
agora::media::base::AudioEncodedFrameInfo
Definition: AgoraMediaBase.h:372
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_RECORD
@ AUDIO_FRAME_POSITION_RECORD
Definition: AgoraMediaBase.h:1513
agora::media::MediaRecorderConfiguration::width
int width
Definition: AgoraMediaBase.h:2401
agora::media::base::VideoFrame::vStride
int vStride
Definition: AgoraMediaBase.h:1080
agora::media::base::ExternalVideoFrame::hdr10MetadataInfo
Hdr10MetadataInfo hdr10MetadataInfo
Definition: AgoraMediaBase.h:1009
agora::media::ContentInspectConfig
Screenshot and upload configuration.
Definition: AgoraMediaBase.h:1338
agora::media::IAudioFrameObserverBase::AUDIO_FRAME_POSITION_MIXED
@ AUDIO_FRAME_POSITION_MIXED
Definition: AgoraMediaBase.h:1516
agora::media::base::AudioPcmFrame
The parameters of the audio frame in PCM format.
Definition: AgoraMediaBase.h:387
agora::media::base::ExternalVideoFrame::fillAlphaBuffer
bool fillAlphaBuffer
Definition: AgoraMediaBase.h:987
agora::media::IAudioFrameObserverBase::AudioParams::sample_rate
int sample_rate
Definition: AgoraMediaBase.h:1555
agora::media::base::VideoFrame::uBuffer
uint8_t * uBuffer
Definition: AgoraMediaBase.h:1088
agora::media::IAudioFrameObserverBase::onPlaybackAudioFrame
virtual bool onPlaybackAudioFrame(const char *channelId, AudioFrame &audioFrame)=0
Gets the raw audio frame for playback.
agora::media::base::ExternalVideoFrame::EGL_CONTEXT10
@ EGL_CONTEXT10
Definition: AgoraMediaBase.h:858
agora::media::base::IVideoFrameMetaInfo
Definition: AgoraMediaBase.h:629
agora::media::UserAudioSpectrumInfo::uid
agora::rtc::uid_t uid
Definition: AgoraMediaBase.h:1866
agora::media::SnapshotConfig::position
media::base::VIDEO_MODULE_POSITION position
Definition: AgoraMediaBase.h:1395
agora::rtc::ExtensionContext::extensionName
const char * extensionName
Definition: AgoraMediaBase.h:59
agora::media::IVideoFrameObserver::VIDEO_FRAME_PROCESS_MODE
VIDEO_FRAME_PROCESS_MODE
The process mode of the video frame:
Definition: AgoraMediaBase.h:1965
agora::media::base::ExternalVideoFrame::format
VIDEO_PIXEL_FORMAT format
Definition: AgoraMediaBase.h:890
agora::media::base::ExternalVideoFrame::metadataSize
int metadataSize
Definition: AgoraMediaBase.h:967
agora::media::ContentInspectConfig::extraInfo
const char * extraInfo
Definition: AgoraMediaBase.h:1345
agora::media::base::Hdr10MetadataInfo::maxFrameAverageLightLevel
uint16_t maxFrameAverageLightLevel
Definition: AgoraMediaBase.h:773
agora::media::base::ExternalVideoFrame::stride
int stride
Definition: AgoraMediaBase.h:900
agora::media::base::ExternalVideoFrame::eglType
EGL_CONTEXT_TYPE eglType
Definition: AgoraMediaBase.h:942