Agora Recording CPP API Reference
IAgoraLinuxSdkCommon.h
1 #ifndef _IAGORA_LINUXSDKCOMMON_H_
2 #define _IAGORA_LINUXSDKCOMMON_H_
3 
4 #include <cstdint>
5 #include <string>
6 
7 namespace agora {
8 namespace linuxsdk {
9 
10 class IEngine{
11  virtual ~IEngine() {};
12 
13 };
14 
16  virtual ~IEngineConfig() {};
17 };
18 
19 typedef unsigned char uchar_t;
20 typedef unsigned int uint_t;
21 typedef unsigned int uid_t;
22 typedef uint64_t u64_t;
23 
27 enum ERROR_CODE_TYPE {
28 
30  ERR_OK = 0,
31  //1~1000
33  ERR_FAILED = 1,
35  ERR_INVALID_ARGUMENT = 2,
41  ERR_INTERNAL_FAILED = 3,
42 };
43 
45 enum STAT_CODE_TYPE {
47  STAT_OK = 0,
49  STAT_ERR_FROM_ENGINE = 1,
51  STAT_ERR_ARS_JOIN_CHANNEL = 2,
53  STAT_ERR_CREATE_PROCESS = 3,
55  STAT_ERR_MIXED_INVALID_VIDEO_PARAM = 4,
57  STAT_ERR_NULL_POINTER = 5,
59  STAT_ERR_PROXY_SERVER_INVALID_PARAM = 6,
60 
62  STAT_POLL_ERR = 0x8,
64  STAT_POLL_HANG_UP = 0x10,
66  STAT_POLL_NVAL = 0x20,
67 };
68 
70 enum LEAVE_PATH_CODE {
72  LEAVE_CODE_INIT = 0,
74  LEAVE_CODE_SIG = 1<<1,
76  LEAVE_CODE_NO_USERS = 1<<2,
78  LEAVE_CODE_TIMER_CATCH = 1<<3,
80  LEAVE_CODE_CLIENT_LEAVE = 1 << 4,
81 };
82 
86 enum WARN_CODE_TYPE {
88  WARN_NO_AVAILABLE_CHANNEL = 103,
91  WARN_LOOKUP_CHANNEL_TIMEOUT = 104,
93  WARN_LOOKUP_CHANNEL_REJECTED = 105,
95  WARN_OPEN_CHANNEL_TIMEOUT = 106,
97  WARN_OPEN_CHANNEL_REJECTED = 107,
99  WARN_RECOVERY_CORE_SERVICE_FAILURE = 108,
100 };
101 
105 enum CHANNEL_PROFILE_TYPE
106 {
108  CHANNEL_PROFILE_COMMUNICATION = 0,
110  CHANNEL_PROFILE_LIVE_BROADCASTING = 1,
111 };
112 
114 enum USER_OFFLINE_REASON_TYPE
115 {
117  USER_OFFLINE_QUIT = 0,
120  USER_OFFLINE_DROPPED = 1,
123  USER_OFFLINE_BECOME_AUDIENCE = 2,
124 };
125 
127 enum REMOTE_VIDEO_STREAM_TYPE
128 {
130  REMOTE_VIDEO_STREAM_HIGH = 0,
132  REMOTE_VIDEO_STREAM_LOW = 1,
133 };
134 
136 enum VIDEO_FORMAT_TYPE {
138  VIDEO_FORMAT_DEFAULT_TYPE = 0,
140  VIDEO_FORMAT_H264_FRAME_TYPE = 1,
142  VIDEO_FORMAT_YUV_FRAME_TYPE = 2,
144  VIDEO_FORMAT_JPG_FRAME_TYPE = 3,
146  VIDEO_FORMAT_JPG_FILE_TYPE = 4,
151  VIDEO_FORMAT_JPG_VIDEO_FILE_TYPE = 5,
152 };
153 
155 enum AUDIO_FORMAT_TYPE {
157  AUDIO_FORMAT_DEFAULT_TYPE = 0,
159  AUDIO_FORMAT_AAC_FRAME_TYPE = 1,
161  AUDIO_FORMAT_PCM_FRAME_TYPE = 2,
163  AUDIO_FORMAT_MIXED_PCM_FRAME_TYPE = 3,
164 };
165 
167 enum AUDIO_FRAME_TYPE {
169  AUDIO_FRAME_RAW_PCM = 0,
171  AUDIO_FRAME_AAC = 1
172 };
173 
175 enum MEMORY_TYPE {
177  STACK_MEM_TYPE = 0,
179  HEAP_MEM_TYPE = 1
180 };
181 
183 enum VIDEO_FRAME_TYPE {
185  VIDEO_FRAME_RAW_YUV = 0,
187  VIDEO_FRAME_H264 = 1,
189  VIDEO_FRAME_JPG = 2,
190 };
191 
193 enum TRIGGER_MODE_TYPE {
195  AUTOMATICALLY_MODE = 0,
198  MANUALLY_MODE = 1
199 };
200 
202 enum LANGUAGE_TYPE {
204  CPP_LANG = 0,
206  JAVA_LANG = 1
207 };
208 
210 enum AUDIO_PROFILE_TYPE {
212  AUDIO_PROFILE_DEFAULT = 0, //use default settings.
214  AUDIO_PROFILE_HIGH_QUALITY = 1, //48khz, 128kbps, mono, music
216  AUDIO_PROFILE_HIGH_QUALITY_STEREO = 2, //48khz, 192kbps, stereo, music
217 };
218 
220 enum agora_log_level {
222  AGORA_LOG_LEVEL_FATAL = 1,
224  AGORA_LOG_LEVEL_ERROR = 2,
226  AGORA_LOG_LEVEL_WARN = 3,
228  AGORA_LOG_LEVEL_NOTICE = 4,
230  AGORA_LOG_LEVEL_INFO = 5,
232  AGORA_LOG_LEVEL_DEBUG = 6,
233 };
234 
235 
266 enum MIXED_AV_CODEC_TYPE {
268  MIXED_AV_DEFAULT = 0,
270  MIXED_AV_CODEC_V1 = 1,
272  MIXED_AV_CODEC_V2 = 2,
273 };
274 
275 /* Properties of the audio volume information. An array containing the user ID and volume information for each speaker. */
277  /* The user ID of the speaker. The uid of the local user is 0. */
278  uid_t uid;
279  /*The volume of the speaker. The value ranges between 0 (lowest volume) and 255 (highest volume).*/
280  uint32_t volume;
281 };
282 
285  public:
286  AudioPcmFrame(u64_t frame_ms, uint_t sample_rates, uint_t samples);
287  ~AudioPcmFrame();
288  public:
290  u64_t frame_ms_;
292  uint_t channels_; // 1
294  uint_t sample_bits_; // 16
296  uint_t sample_rates_; // 8k, 16k, 32k
298  uint_t samples_;
299 
301  const uchar_t *pcmBuf_;
303  uint_t pcmBufSize_;
304 };
305 
308  public:
309  explicit AudioAacFrame(u64_t frame_ms);
310  ~AudioAacFrame();
311 
313  const uchar_t *aacBuf_;
315  u64_t frame_ms_;
317  uint_t aacBufSize_;
319  uint_t channels_;
321  uint_t bitrate_;
322 };
323 
325 struct AudioFrame {
327  AUDIO_FRAME_TYPE type;
328  union {
333  } frame;
334 
335  AudioFrame();
336  ~AudioFrame();
338  MEMORY_TYPE mType;
339 };
340 
343  public:
344  VideoYuvFrame(u64_t frame_ms, uint_t width, uint_t height, uint_t ystride,
345  uint_t ustride, uint_t vstride);
346  ~VideoYuvFrame();
347 
349  u64_t frame_ms_;
350 
352  const uchar_t *ybuf_;
354  const uchar_t *ubuf_;
356  const uchar_t *vbuf_;
357 
359  uint_t width_;
361  uint_t height_;
362 
364  uint_t ystride_;
366  uint_t ustride_;
368  uint_t vstride_;
369 
370  //all
372  const uchar_t *buf_;
374  uint_t bufSize_;
375 };
376 
379  public:
380  VideoH264Frame():
381  frame_ms_(0),
382  frame_num_(0),
383  buf_(NULL),
384  bufSize_(0)
385  {}
386 
387  ~VideoH264Frame(){}
389  u64_t frame_ms_;
391  uint_t frame_num_;
392 
393  //all
395  const uchar_t *buf_;
397  uint_t bufSize_;
398 };
399 
402  public:
403  VideoJpgFrame():
404  frame_ms_(0),
405  buf_(NULL),
406  bufSize_(0){}
407 
408  ~VideoJpgFrame() {}
410  u64_t frame_ms_;
411 
412  //all
414  const uchar_t *buf_;
416  uint_t bufSize_;
417 };
418 
420 struct VideoFrame {
422  VIDEO_FRAME_TYPE type;
423  union {
430  } frame;
431 
433  int rotation_; // 0, 90, 180, 270
434  VideoFrame();
435  ~VideoFrame();
436 
438  MEMORY_TYPE mType;
439 };
440 
442 typedef struct VideoMixingLayout
443 {
445  struct Region {
447  uid_t uid;
449  double x;//[0,1]
451  double y;//[0,1]
453  double width;//[0,1]
455  double height;//[0,1]
456  // Optional
457  // [0, 1.0] where 0 denotes throughly transparent, 1.0 opaque
462  double alpha;
463 
469  int renderMode;//RENDER_MODE_HIDDEN: Crop, RENDER_MODE_FIT: Zoom to fit
470  Region()
471  :uid(0)
472  , x(0)
473  , y(0)
474  , width(0)
475  , height(0)
476  , alpha(1.0)
477  , renderMode(1)
478  {}
479 
480  };
486  const char* backgroundColor;//e.g. "#C0C0C0" in RGB
488  uint32_t regionCount;
490  const Region* regions;
492  const char* appData;
496  :canvasWidth(0)
497  , canvasHeight(0)
498  , backgroundColor(NULL)
499  , regionCount(0)
500  , regions(NULL)
501  , appData(NULL)
502  , appDataLength(0)
503  {}
504 } VideoMixingLayout;
505 
507 typedef struct UserJoinInfos {
509  const char* storageDir;
510  //new attached info add below
511 
512  UserJoinInfos():
513  storageDir(NULL)
514  {}
515 }UserJoinInfos;
516 
517 
518 }
519 }
520 
521 #endif
uint_t aacBufSize_
Definition: IAgoraLinuxSdkCommon.h:317
u64_t frame_ms_
Definition: IAgoraLinuxSdkCommon.h:389
uint_t sample_rates_
Definition: IAgoraLinuxSdkCommon.h:296
uint_t bitrate_
Definition: IAgoraLinuxSdkCommon.h:321
uint_t bufSize_
Definition: IAgoraLinuxSdkCommon.h:374
Definition: IAgoraLinuxSdkCommon.h:7
int canvasHeight
Definition: IAgoraLinuxSdkCommon.h:484
Definition: IAgoraLinuxSdkCommon.h:10
int appDataLength
Definition: IAgoraLinuxSdkCommon.h:494
double alpha
Definition: IAgoraLinuxSdkCommon.h:462
const uchar_t * ubuf_
Definition: IAgoraLinuxSdkCommon.h:354
uint_t height_
Definition: IAgoraLinuxSdkCommon.h:361
const uchar_t * ybuf_
Definition: IAgoraLinuxSdkCommon.h:352
MEMORY_TYPE mType
Definition: IAgoraLinuxSdkCommon.h:438
VideoJpgFrame * jpg
Definition: IAgoraLinuxSdkCommon.h:429
const uchar_t * pcmBuf_
Definition: IAgoraLinuxSdkCommon.h:301
uint_t width_
Definition: IAgoraLinuxSdkCommon.h:359
Definition: IAgoraLinuxSdkCommon.h:401
u64_t frame_ms_
Definition: IAgoraLinuxSdkCommon.h:349
Definition: IAgoraLinuxSdkCommon.h:507
Definition: IAgoraLinuxSdkCommon.h:342
int renderMode
Definition: IAgoraLinuxSdkCommon.h:469
Definition: IAgoraLinuxSdkCommon.h:378
VideoYuvFrame * yuv
Definition: IAgoraLinuxSdkCommon.h:425
Definition: IAgoraLinuxSdkCommon.h:276
u64_t frame_ms_
Definition: IAgoraLinuxSdkCommon.h:315
Definition: IAgoraLinuxSdkCommon.h:420
const uchar_t * aacBuf_
Definition: IAgoraLinuxSdkCommon.h:313
const char * storageDir
Definition: IAgoraLinuxSdkCommon.h:509
const char * backgroundColor
Definition: IAgoraLinuxSdkCommon.h:486
const uchar_t * buf_
Definition: IAgoraLinuxSdkCommon.h:414
int rotation_
Definition: IAgoraLinuxSdkCommon.h:433
uint_t samples_
Definition: IAgoraLinuxSdkCommon.h:298
Definition: IAgoraLinuxSdkCommon.h:307
uint_t pcmBufSize_
Definition: IAgoraLinuxSdkCommon.h:303
double width
Definition: IAgoraLinuxSdkCommon.h:453
uint32_t regionCount
Definition: IAgoraLinuxSdkCommon.h:488
Definition: IAgoraLinuxSdkCommon.h:325
uint_t channels_
Definition: IAgoraLinuxSdkCommon.h:292
AudioPcmFrame * pcm
Definition: IAgoraLinuxSdkCommon.h:330
double y
Definition: IAgoraLinuxSdkCommon.h:451
uint_t vstride_
Definition: IAgoraLinuxSdkCommon.h:368
u64_t frame_ms_
Definition: IAgoraLinuxSdkCommon.h:290
uint_t channels_
Definition: IAgoraLinuxSdkCommon.h:319
double height
Definition: IAgoraLinuxSdkCommon.h:455
u64_t frame_ms_
Definition: IAgoraLinuxSdkCommon.h:410
const char * appData
Definition: IAgoraLinuxSdkCommon.h:492
const uchar_t * vbuf_
Definition: IAgoraLinuxSdkCommon.h:356
VideoH264Frame * h264
Definition: IAgoraLinuxSdkCommon.h:427
int canvasWidth
Definition: IAgoraLinuxSdkCommon.h:482
Definition: IAgoraLinuxSdkCommon.h:442
uint_t ystride_
Definition: IAgoraLinuxSdkCommon.h:364
Definition: IAgoraLinuxSdkCommon.h:445
uint_t frame_num_
Definition: IAgoraLinuxSdkCommon.h:391
Definition: IAgoraLinuxSdkCommon.h:284
AUDIO_FRAME_TYPE type
Definition: IAgoraLinuxSdkCommon.h:327
VIDEO_FRAME_TYPE type
Definition: IAgoraLinuxSdkCommon.h:422
MEMORY_TYPE mType
Definition: IAgoraLinuxSdkCommon.h:338
uint_t ustride_
Definition: IAgoraLinuxSdkCommon.h:366
AudioAacFrame * aac
Definition: IAgoraLinuxSdkCommon.h:332
Definition: IAgoraLinuxSdkCommon.h:15
uint_t bufSize_
Definition: IAgoraLinuxSdkCommon.h:416
uint_t bufSize_
Definition: IAgoraLinuxSdkCommon.h:397
const uchar_t * buf_
Definition: IAgoraLinuxSdkCommon.h:372
const Region * regions
Definition: IAgoraLinuxSdkCommon.h:490
uid_t uid
Definition: IAgoraLinuxSdkCommon.h:447
const uchar_t * buf_
Definition: IAgoraLinuxSdkCommon.h:395
uint_t sample_bits_
Definition: IAgoraLinuxSdkCommon.h:294
double x
Definition: IAgoraLinuxSdkCommon.h:449