Media Player Kit v1.3.0 API Reference for Windows
AgoraMediaBase.h
1 //
2 // Agora Engine SDK
3 //
4 // Created by Sting Feng in 2017-11.
5 // Copyright (c) 2017 Agora.io. All rights reserved.
6 
7 #pragma once // NOLINT(build/header_guard)
8 #include <stdint.h>
9 #include <limits>
10 #include <stddef.h>
11 
12 namespace agora {
13 
14 namespace rtc {
16 typedef unsigned int uid_t;
17 typedef unsigned int track_id_t;
18 typedef unsigned int conn_id_t;
19 
20 static const unsigned int DEFAULT_CONNECTION_ID = 0;
21 static const unsigned int DUMMY_CONNECTION_ID = (std::numeric_limits<unsigned int>::max)();
22 
26 enum AudioRoute
27 {
31  ROUTE_DEFAULT = -1,
35  ROUTE_HEADSET,
39  ROUTE_EARPIECE,
43  ROUTE_HEADSETNOMIC,
47  ROUTE_SPEAKERPHONE,
51  ROUTE_LOUDSPEAKER,
55  ROUTE_HEADSETBLUETOOTH
56 };
57 
58 struct AudioParameters {
59  int sample_rate;
60  size_t channels;
61  size_t frames_per_buffer;
62 
63  AudioParameters()
64  : sample_rate(0),
65  channels(0),
66  frames_per_buffer(0) {}
67 };
69 
70 } // namespace rtc
71 
72 namespace media {
73 namespace base {
74 
75 typedef void* view_t;
76 
77 typedef const char* user_id_t;
79 static const uint8_t kMaxCodecNameLength = 50;
80 
82 
86 struct PacketOptions {
90  uint32_t timestamp;
91  // Audio level indication.
92  uint8_t audioLevelIndication;
93  PacketOptions()
94  : timestamp(0),
95  audioLevelIndication(127) {}
96 };
98 
107  enum : size_t {
118  };
120  uint32_t capture_timestamp = 0;
126  size_t num_channels_ = 0;
128  size_t bytes_per_sample = 0;
130  int16_t data_[kMaxDataSizeSamples] = {0};
131 
132 
136  sample_rate_hz_(0),
137  num_channels_(0),
138  bytes_per_sample(0) {}
139 };
140 
144  public:
153  virtual void onFrame(const AudioPcmFrame* frame) = 0;
154  virtual ~IAudioFrameObserver() {}
155 };
156 
190 };
191 
211 };
213 
216 struct ExternalVideoFrame {
220  enum EGL_CONTEXT_TYPE {
224  EGL_CONTEXT10 = 0,
228  EGL_CONTEXT14 = 1,
229  };
230 
234  enum VIDEO_BUFFER_TYPE {
238  VIDEO_BUFFER_RAW_DATA = 1,
242  VIDEO_BUFFER_ARRAY = 2,
246  VIDEO_BUFFER_TEXTURE = 3,
247  };
251  VIDEO_BUFFER_TYPE type;
255  VIDEO_PIXEL_FORMAT format;
259  void* buffer;
264  int stride;
268  int height;
273  int cropLeft;
278  int cropTop;
283  int cropRight;
288  int cropBottom;
293  int rotation;
298  long long timestamp;
304  void *eglContext;
308  EGL_CONTEXT_TYPE eglType;
312  int textureId;
313 };
315 
319 struct VideoFrame {
324  int width;
326  int height;
329  int yStride;
332  int uStride;
335  int vStride;
338  uint8_t* yBuffer;
341  uint8_t* uBuffer;
344  uint8_t* vBuffer;
349  int rotation;
358  int64_t renderTimeMs;
362 };
363 
367  public:
376  virtual void onFrame(const VideoFrame* frame) = 0;
377  virtual ~IVideoFrameObserver() {}
378 };
379 
381 enum MEDIA_PLAYER_SOURCE_TYPE {
382  /*
383  * The real type of media player when use MEDIA_PLAYER_SOURCE_DEFAULT is decided by the
384  * type of SDK package. It is full feature media player in full-featured SDK, or simple
385  * media player in others.
386  */
387  MEDIA_PLAYER_SOURCE_DEFAULT,
388  /*
389  * Full featured media player is designed to support more codecs and media format, which
390  * requires more package size than simple player. If you need this player enabled, you
391  * might need to download a full-featured SDK.
392  */
393  MEDIA_PLAYER_SOURCE_FULL_FEATURED,
394  /*
395  * Simple media player with limit codec supported, which requires minimal package size
396  * requirement and is enabled by default
397  */
398  MEDIA_PLAYER_SOURCE_SIMPLE,
399 };
401 
402 } // namespace base
403 
404 } // namespace media
405 
406 } // namespace agora
Definition: AgoraMediaBase.h:143
virtual ~IAudioFrameObserver()
Definition: AgoraMediaBase.h:154
virtual void onFrame(const AudioPcmFrame *frame)=0
Definition: AgoraMediaBase.h:366
virtual ~IVideoFrameObserver()
Definition: AgoraMediaBase.h:377
virtual void onFrame(const VideoFrame *frame)=0
static const uint8_t kMaxCodecNameLength
Definition: AgoraMediaBase.h:79
RENDER_MODE_TYPE
Definition: AgoraMediaBase.h:195
@ RENDER_MODE_HIDDEN
Definition: AgoraMediaBase.h:200
@ RENDER_MODE_ADAPTIVE
Definition: AgoraMediaBase.h:210
@ RENDER_MODE_FIT
Definition: AgoraMediaBase.h:206
const char * user_id_t
Definition: AgoraMediaBase.h:77
void * view_t
Definition: AgoraMediaBase.h:75
VIDEO_PIXEL_FORMAT
Definition: AgoraMediaBase.h:159
@ VIDEO_TEXTURE_OES
Definition: AgoraMediaBase.h:185
@ VIDEO_TEXTURE_2D
Definition: AgoraMediaBase.h:181
@ VIDEO_PIXEL_BGRA
Definition: AgoraMediaBase.h:168
@ VIDEO_PIXEL_I420
Definition: AgoraMediaBase.h:165
@ VIDEO_PIXEL_NV21
Definition: AgoraMediaBase.h:171
@ VIDEO_PIXEL_I422
Definition: AgoraMediaBase.h:189
@ VIDEO_PIXEL_UNKNOWN
Definition: AgoraMediaBase.h:162
@ VIDEO_PIXEL_NV12
Definition: AgoraMediaBase.h:177
@ VIDEO_PIXEL_RGBA
Definition: AgoraMediaBase.h:174
Definition: AgoraMediaBase.h:12
Definition: AgoraMediaBase.h:103
@ kMaxDataSizeBytes
Definition: AgoraMediaBase.h:117
@ kMaxDataSizeSamples
Definition: AgoraMediaBase.h:114
size_t bytes_per_sample
Definition: AgoraMediaBase.h:128
AudioPcmFrame()
Definition: AgoraMediaBase.h:133
int sample_rate_hz_
Definition: AgoraMediaBase.h:124
size_t num_channels_
Definition: AgoraMediaBase.h:126
size_t samples_per_channel_
Definition: AgoraMediaBase.h:122
uint32_t capture_timestamp
Definition: AgoraMediaBase.h:120
int16_t data_[kMaxDataSizeSamples]
Definition: AgoraMediaBase.h:130
Definition: AgoraMediaBase.h:319
int uStride
Definition: AgoraMediaBase.h:332
int rotation
Definition: AgoraMediaBase.h:349
VIDEO_PIXEL_FORMAT type
Definition: AgoraMediaBase.h:322
int vStride
Definition: AgoraMediaBase.h:335
int avsync_type
Definition: AgoraMediaBase.h:361
uint8_t * vBuffer
Definition: AgoraMediaBase.h:344
uint8_t * yBuffer
Definition: AgoraMediaBase.h:338
int yStride
Definition: AgoraMediaBase.h:329
int height
Definition: AgoraMediaBase.h:326
int width
Definition: AgoraMediaBase.h:324
uint8_t * uBuffer
Definition: AgoraMediaBase.h:341
int64_t renderTimeMs
Definition: AgoraMediaBase.h:358