C++SDK  1.0.0
common.h
浏览该文件的文档.
1 #ifndef RT_COMMON_H
2 #define RT_COMMON_H
3 
4 #include "combase.h"
5 #include <string>
6 #include <vector>
7 #include <sstream>
8 
10 typedef std::string String;
11 typedef String RoomId;
12 typedef String DeviceId;
13 typedef String UserId;
14 typedef String StreamId;
15 typedef DeviceId RecordId;
16 typedef DeviceId LiveId;
18 typedef String BoardId;
25 
27 
33 struct RoomInfo {
52 public:
54  bool isMcu() const { return avd_isFlagSet(roomMode, rm_mcu); }
59  void setRoomMode(RoomMode flag) {
60  if (avd_isFlagSet(flag, clear_set)) {
61  uint32 dwFlag = flag;
62  avd_clearFlag(dwFlag, clear_set);
63  avd_clearFlag(roomMode, dwFlag);
64  }
65  else {
66  avd_setFlag(roomMode, flag);
67  }
68  }
69  bool hasMode(RoomMode mode) const {
70  if (avd_isFlagSet(mode, clear_set)) {
71  uint32 dwFlag = mode;
72  avd_clearFlag(dwFlag, clear_set);
73  return !avd_isFlagSet(roomMode, dwFlag);
74  }
75  else {
76  return avd_isFlagSet(roomMode, mode);
77  }
78  }
79 
80 };
84 typedef std::vector<RoomInfo> RoomInfosType;
85 
91 struct Device {
95  Device() :status(tee3::avd::ds_none) {}
97  bool isValid() const { return !id.empty(); }
98  bool operator ==(const Device& right) const { return this->id == right.id; }
99 };
100 
111  CameraCapability() :width(0), height(0), maxFPS(0), rotation(0) {}
112  CameraCapability(uint32 w, uint32 h, uint32 fps) :width(w), height(h), maxFPS(fps), rotation(0) {}
113  CameraCapability(uint32 w, uint32 h, uint32 fps, uint32 rotation) :width(w), height(h), maxFPS(fps), rotation(rotation) {}
115  bool isValid() const { return 0 != width && 0 != height; }
116  bool operator==(const CameraCapability& o) const {
117  return (width == o.width) && (height == o.height) && (maxFPS == o.maxFPS) && (rotation == o.rotation);
118  }
119  friend std::ostream& operator <<(std::ostream& ost, const CameraCapability& o) {
120  ost << "cap:[" << "width = " << o.width << ",height = " << o.height << ",maxFPS = " << o.maxFPS << ",rotation = " << o.rotation << "],";
121  return ost;
122  }
123 };
127 struct Speaker : public Device {};
131 typedef std::vector<Speaker> SpeakersType;
135 struct Microphone : public Device {};
139 typedef std::vector<Microphone> MicrophonesType;
140 
144 typedef std::vector<CameraCapability> CapabilitiesType;
145 
152 public:
154  VideoDeviceOptions(uint32 aoptionset);
159  bool hasQuality(VideoQuality value) const;
160  bool hasCapability(CameraCapability cap) const;
164  CapabilitiesType getCapabilities() const;
169  Result setCapabilities(const CapabilitiesType& caps);
170 public:
175  static VideoQuality getQualityByCapability(const CameraCapability& cap);
180  static VideoRatio getRatioByCapability(const CameraCapability& cap);
186  static CameraCapability getDefaultCapability(VideoQuality quality, VideoRatio ratio);
187 public:
188  uint32 optionset; // 位解析:0-1:宽高比例;2-4:视频质量;5-26: high:5-12, normal:13-20, low:21-28;
189 };
190 
197 public:
199  PublishVideoOptions(uint32 aoptionset);
200 public:
205  bool hasQuality(VideoQuality value) const;
209  VideoRatio getRatio() const;
213  void setRatio(VideoRatio value);
217  VideoRotation getRotation() const;
221  void setRotation(VideoRotation value);
222 public: // Stream options
234  Result setStreamOptions(StreamType type, VideoQuality quality, VideoCodec codec = codec_default);
242  Result setStreamOptions(StreamType type, const CameraCapability& cap, VideoCodec codec = codec_default);
244  CameraCapability getStreamCapability(StreamType type) const;
246  VideoQuality getStreamQuality(StreamType type) const;
248  VideoCodec getStreamCodec(StreamType type) const;
250  int getStreamPayload(StreamType type) const;
251 public:
253  bool hasMainStream() const;
255  bool hasAssist1() const;
257  bool hasAssist2() const;
259  void normalize(uint32 deviceOptions);
261  bool isCodecHWSupported(StreamType type) const;
263  bool isCodecSupported(StreamType type) const;
272  StreamType getPrioritySubscribeStream(VideoQuality quality, bool mustQuality) const;
273 public:
274  uint32 optionset; // 位解析:0-1:宽高比例;2-4:缺省视频质量;5-26: 主流 5-12(0-1 编码,2-7 序号),辅流1 13-20,辅流2 20-28;
275 };
276 
282 struct VideoDevice : public Device {
284  int level;
288 public:
290  bool isPublished() const {
291  return ds_published == status || ds_muted == status;
292  }
293 };
297 typedef std::vector<VideoDevice> VideoDevicesType;
298 
302 struct ScreenWindow : public VideoDevice {
304 public:
305  ScreenWindow() :type(tee3::avd::st_unknown) {}
306 };
310 typedef std::vector<ScreenWindow> ScreensType;
311 
317 struct Camera : public VideoDevice {
319 public:
320  Camera() :type(tee3::avd::ct_unknown) {}
321 };
325 typedef std::vector<Camera> CamerasType;
326 
333 struct AudioInfo {
337  typedef std::vector<std::pair<UserId, int> > RemoteUser2LevelType;
338  RemoteUser2LevelType active_streams;
340  AudioInfo() :input_level(0), output_level(0) {}
341  AudioInfo(int il, int ol)
342  : input_level(il), output_level(ol) {}
343  AudioInfo(int il, int ol, const RemoteUser2LevelType& streams)
344  : input_level(il), output_level(ol), active_streams(streams) {}
345 };
346 
352 struct RoomStats : public NetworkStats {
358  RoomStats() :available_receive_bandwidth(0), available_send_bandwidth(0) {}
359  void Clear() {
361  available_receive_bandwidth = 0;
362  available_send_bandwidth = 0;
363  local_address.clear();
364  remote_address.clear();
365  transport_type.clear();
366  }
367 };
368 
374 struct MediaStats : public NetworkStats {
383  MediaStats() :audio_input_level(0), audio_output_level(0)
384  , frame_width(0), frame_height(0), frame_rate(0) {}
385  void Clear() {
387  audio_input_level = 0;
388  audio_output_level = 0;
389  frame_width = 0;
390  frame_height = 0;
391  frame_rate = 0;
392  media_type.clear();
393  codec_name.clear();
394  }
395 };
396 
397 
398 //#if defined(RT_DESKTOP)
399 class WindowId {
400 public:
401  // Define WindowT for each platform.
402 #if defined(RT_LINUX) && !defined(RT_ANDROID)
403  typedef Window WindowT;
404 #elif defined(RT_WIN32)
405  typedef HWND WindowT;
406 #elif defined(RT_MAC) && !defined(RT_IOS)
407  typedef CGWindowID WindowT;
408 #else
409  typedef unsigned int WindowT;
410 #endif
411 
412  static WindowId Cast(uint64 id) {
413 #if defined(RT_WIN32)
414  return WindowId(reinterpret_cast<WindowId::WindowT>(id));
415 #else
416  return WindowId(static_cast<WindowId::WindowT>(id));
417 #endif
418  }
419 
420  static uint64 Format(const WindowT& id) {
421 #if defined(RT_WIN32)
422  return static_cast<uint64>(reinterpret_cast<uintptr_t>(id));
423 #else
424  return static_cast<uint64>(id);
425 #endif
426  }
427 
428  WindowId() : id_(0) {}
429  WindowId(const WindowT& id) : id_(id) {} // NOLINT
430  const WindowT& id() const { return id_; }
431  bool IsValid() const { return id_ != 0; }
432  bool Equals(const WindowId& other) const {
433  return id_ == other.id();
434  }
435 
436 private:
437  WindowT id_;
438 };
439 typedef std::vector<WindowId> WindowIds;
440 class DesktopId {
441 public:
442  // Define DesktopT for each platform.
443 #if defined(RT_LINUX) && !defined(RT_ANDROID)
444  typedef Window DesktopT;
445 #elif defined(RT_WIN32)
446  typedef HMONITOR DesktopT;
447 #elif defined(RT_MAC) && !defined(RT_IOS)
448  typedef CGDirectDisplayID DesktopT;
449 #else
450  typedef unsigned int DesktopT;
451 #endif
452 
453  static DesktopId Cast(int id, int index) {
454 #if defined(RT_WIN32)
455  return DesktopId(reinterpret_cast<DesktopId::DesktopT>(id), index);
456 #else
457  return DesktopId(static_cast<DesktopId::DesktopT>(id), index);
458 #endif
459  }
460 
461  DesktopId() : id_(0), index_(-1) {}
462  DesktopId(const DesktopT& id, int index) // NOLINT
463  : id_(id), index_(index) {}
464  const DesktopT& id() const { return id_; }
465  int index() const { return index_; }
466  bool IsValid() const { return index_ != -1; }
467  bool Equals(const DesktopId& other) const {
468  return id_ == other.id() && index_ == other.index();
469  }
470 
471 private:
472  // Id is the platform specific desktop identifier.
473  DesktopT id_;
474  // Index is the desktop index as enumerated by each platform.
475  // Desktop capturer typically takes the index instead of id.
476  int index_;
477 };
478 
479 //#endif
480 
481 //#if defined(RT_ANNOTATION)
497 };
502  line_arrow_end = 1 << 2,
504 };
505 
506 enum ClearType {
510 };
511 //#endif
512 
513 
520 
526 struct AudioParams {
530  AudioParams() :channel(1), sampleRate(44100), bitrate(96000) {}
531  AudioParams(uint32 c, uint32 s, uint32 b) :channel(c), sampleRate(s), bitrate(b) {}
532 
533  friend std::ostream& operator <<(std::ostream& ost, const AudioParams& o) {
534  ost << "audioParams:[" << "channel=" << o.channel << ",sampleRate=" << o.sampleRate << ",bitrate=" << o.bitrate << "],";
535  return ost;
536  }
537 };
538 
540 
545 struct LiveInfo {
563 public:
564  LiveInfo() :audioType(ra_user_single), videoType(rv_main), duration(0), status(ls_created){}
565  bool isValid() const { return !id.empty(); }
566 };
567 
571 typedef std::vector<LiveInfo> LiveInfosType;
572 
576 typedef std::vector<std::string> AnnotationTypes;
577 
578 
583 };
584 
586 
587 #endif//RT_COMMON_H
int frame_rate
Definition: common.h:381
RT_API_EXPORT const UserId AVD_userId_allUser
int index() const
Definition: common.h:465
bool IsValid() const
Definition: common.h:466
CameraCapability(uint32 w, uint32 h, uint32 fps)
Definition: common.h:112
Definition: combase.h:208
Definition: common.h:374
void setRoomMode(RoomMode flag)
Definition: common.h:59
String confPassword
Definition: common.h:43
String hostPassword
Definition: common.h:42
DeviceId AnnotationId
Definition: common.h:17
int frame_height
Definition: common.h:380
RoomId roomId
Definition: common.h:36
std::vector< WindowId > WindowIds
Definition: common.h:439
DeviceStatus
Definition: combase.h:132
Definition: common.h:526
String BoardId
Definition: common.h:18
StreamType
Definition: combase.h:185
Definition: common.h:490
NAMESPACE_TEE3_BEGIN typedef std::string String
Definition: common.h:10
RoomInfo()
Definition: common.h:34
Definition: common.h:582
static WindowId Cast(uint64 id)
Definition: common.h:412
String name
Definition: common.h:547
DesktopId()
Definition: common.h:461
RSTP_STREAM
Definition: common.h:579
Definition: common.h:580
int audio_output_level
Definition: common.h:378
Definition: common.h:352
WindowId()
Definition: common.h:428
Definition: combase.h:631
uint32 sampleRate
Definition: common.h:528
String description
Definition: common.h:548
tee3::String remote_address
Definition: common.h:356
String UserId
Definition: common.h:13
Device()
Definition: common.h:95
MediaStats()
Definition: common.h:383
LiveStatus
Definition: combase.h:505
std::vector< Camera > CamerasType
Definition: common.h:325
std::vector< Microphone > MicrophonesType
Definition: common.h:139
#define NAMESPACE_TEE3_AVD_END
Definition: combase.h:121
Definition: common.h:135
Definition: common.h:493
uint32 bitrate
Definition: common.h:529
int frame_width
Definition: common.h:379
int Result
Definition: combase.h:13
bool Equals(const DesktopId &other) const
Definition: common.h:467
Definition: common.h:333
int level
Definition: common.h:284
bool IsValid() const
Definition: common.h:431
String DeviceId
Definition: common.h:12
int available_receive_bandwidth
Definition: common.h:353
for live
Definition: common.h:545
String ownerId
Definition: common.h:40
RoomId roomId
Definition: common.h:557
std::vector< std::pair< UserId, int > > RemoteUser2LevelType
Definition: common.h:337
CameraCapability()
Definition: common.h:111
Definition: common.h:127
#define RT_API_EXPORT
Definition: defines.h:188
Definition: combase.h:506
Definition: combase.h:200
ScreenType type
Definition: common.h:303
Definition: combase.h:136
unsigned int DesktopT
Definition: common.h:450
LiveStatus status
Definition: common.h:558
LiveInfo()
Definition: common.h:564
#define avd_isFlagSet(uValue, mask)
Definition: combase.h:63
unsigned int uint32
Definition: defines.h:393
RecordAudioType
Definition: combase.h:479
uint32 maxAudio
Definition: common.h:48
String publishurl
Definition: common.h:559
LiveId id
Definition: common.h:546
RT_API_EXPORT const UserId AVD_userId_allUserWithoutMe
String roomName
Definition: common.h:37
VideoCodec
Definition: combase.h:174
static DesktopId Cast(int id, int index)
Definition: common.h:453
Definition: combase.h:224
String hostId
Definition: common.h:41
friend std::ostream & operator<<(std::ostream &ost, const AudioParams &o)
Definition: common.h:533
Definition: combase.h:487
#define NAMESPACE_TEE3_AVD_BEGIN
Definition: combase.h:120
AudioParams(uint32 c, uint32 s, uint32 b)
Definition: common.h:531
tee3::String local_address
Definition: common.h:355
uint32 maxFPS
Definition: common.h:109
CameraType
Definition: combase.h:193
Definition: common.h:483
Definition: combase.h:194
std::vector< RoomInfo > RoomInfosType
Definition: common.h:84
uint32 duration
Definition: common.h:555
unsigned long long uint64
Definition: defines.h:382
bool isValid() const
Definition: common.h:565
bool isMcu() const
Definition: common.h:54
String name
Definition: common.h:93
Definition: common.h:488
int audio_input_level
Definition: common.h:377
bool isValid() const
Definition: common.h:97
uint32 bandwidth
Definition: common.h:46
RecordVideoType
Definition: combase.h:485
void Clear()
Definition: common.h:359
String StreamId
Definition: common.h:14
bool isPublished() const
Definition: common.h:290
int output_level
Definition: common.h:335
std::vector< Speaker > SpeakersType
Definition: common.h:131
ScreenType
Definition: combase.h:199
RemoteUser2LevelType active_streams
Definition: common.h:338
String playerPassword
Definition: common.h:556
uint32 channel
Definition: common.h:527
uint32 maxVideo
Definition: common.h:49
AudioInfo(int il, int ol)
Definition: common.h:341
String roomTopic
Definition: common.h:39
Definition: common.h:106
tee3::String codec_name
Definition: common.h:376
Definition: common.h:501
Definition: common.h:509
Definition: common.h:507
Definition: common.h:33
Definition: combase.h:137
UserId userId
Definition: common.h:550
RoomStatus
Definition: combase.h:223
Definition: common.h:282
VideoDeviceOptions deviceQualities
Definition: common.h:286
Definition: common.h:500
tee3::String transport_type
Definition: common.h:357
bool Equals(const WindowId &other) const
Definition: common.h:432
std::vector< CameraCapability > CapabilitiesType
Definition: common.h:144
const WindowT & id() const
Definition: common.h:430
Definition: combase.h:180
RoomStats()
Definition: common.h:358
Definition: common.h:503
ClearType
Definition: common.h:506
String appData
Definition: common.h:562
Definition: common.h:581
DesktopId(const DesktopT &id, int index)
Definition: common.h:462
Definition: common.h:317
String RoomId
Definition: common.h:11
uint32 width
Definition: common.h:107
String description
Definition: common.h:285
friend std::ostream & operator<<(std::ostream &ost, const CameraCapability &o)
Definition: common.h:119
Definition: common.h:302
DeviceId id
Definition: common.h:92
DeviceId RecordId
Definition: common.h:15
RoomStatus status
Definition: common.h:51
uint32 optionset
Definition: common.h:188
const DesktopT & id() const
Definition: common.h:464
Definition: common.h:91
CameraCapability(uint32 w, uint32 h, uint32 fps, uint32 rotation)
Definition: common.h:113
Definition: common.h:399
std::vector< LiveInfo > LiveInfosType
Definition: common.h:571
uint32 rotation
Definition: common.h:110
Definition: common.h:196
Definition: common.h:492
bool hasMode(RoomMode mode) const
Definition: common.h:69
Camera()
Definition: common.h:320
Definition: common.h:440
unsigned int WindowT
Definition: common.h:409
Definition: common.h:494
AudioParams()
Definition: common.h:530
uint32 roomMode
Definition: common.h:50
VideoRatio
Definition: combase.h:155
String hlsurl
Definition: common.h:561
WindowId(const WindowT &id)
Definition: common.h:429
AudioInfo(int il, int ol, const RemoteUser2LevelType &streams)
Definition: common.h:343
String appRoomId
Definition: common.h:38
LineArrowType
Definition: common.h:499
tee3::String media_type
Definition: common.h:375
Definition: combase.h:481
uint32 duration
Definition: common.h:45
uint32 startTime
Definition: common.h:44
std::vector< std::string > AnnotationTypes
Definition: common.h:576
Definition: combase.h:207
RecordVideoType videoType
Definition: common.h:553
uint32 height
Definition: common.h:108
RT_API_EXPORT const uint32 AVD_supportedAnnotationTools
#define avd_setFlag(uValue, mask)
Definition: combase.h:69
AudioInfo()
Definition: common.h:340
Definition: common.h:491
VideoDevice()
Definition: common.h:283
Definition: common.h:508
#define avd_clearFlag(uValue, mask)
Definition: combase.h:75
CameraType type
Definition: common.h:318
Definition: combase.h:134
UserId creatorId
Definition: common.h:551
String tags
Definition: common.h:549
RT_API_EXPORT const UserId AVD_userId_noneUser
CameraCapability VideoParams
Definition: common.h:519
int input_level
Definition: common.h:334
bool isValid() const
Definition: common.h:115
std::vector< VideoDevice > VideoDevicesType
Definition: common.h:297
virtual void Clear()
Definition: combase.h:649
uint32 maxAttendee
Definition: common.h:47
Definition: common.h:489
bool operator==(const Device &right) const
Definition: common.h:98
Definition: audiocapture.h:5
bool operator==(const CameraCapability &o) const
Definition: common.h:116
String rtmpurl
Definition: common.h:560
RecordAudioType audioType
Definition: common.h:552
AnnotationToolType
Definition: common.h:482
std::vector< ScreenWindow > ScreensType
Definition: common.h:310
Definition: common.h:502
#define NAMESPACE_TEE3_END
Definition: combase.h:119
PublishVideoOptions publishedQualities
Definition: common.h:287
Definition: common.h:485
RoomMode
Definition: combase.h:206
Definition: common.h:496
ScreenWindow()
Definition: common.h:305
Definition: common.h:487
VideoQuality
Definition: combase.h:147
uint32 optionset
Definition: common.h:274
DeviceId LiveId
Definition: common.h:16
VideoRotation
Definition: combase.h:164
Definition: common.h:484
DeviceStatus status
Definition: common.h:94
int available_send_bandwidth
Definition: common.h:354
Definition: common.h:151
Definition: common.h:486
#define NAMESPACE_TEE3_BEGIN
Definition: combase.h:118
int codec
Definition: mvideo_new2.h:33
static uint64 Format(const WindowT &id)
Definition: common.h:420
String createTime
Definition: common.h:554
Definition: common.h:495
void Clear()
Definition: common.h:385