音视频通讯SDK API参考手册  Windows 1.6.0
av_device.h
1 #ifndef AV_DEVICE_H_
2 #define AV_DEVICE_H_
3 
4 #include "av_common.h"
5 #include "av_device_base.h"
6 #include <vector>
7 
8 namespace tencent {
9 namespace av {
10 
11 class AVContext;
13 #define DEVICE_UNKNOWN "\\unknown" // Unknown device type.
14 
15 // Video input/output device type/id
16 #define DEVICE_VIDEO "\\video" // Video device type.
17 #define DEVICE_CAMERA "\\video\\camera" // Camera device type.
18 #define DEVICE_REMOTE_VIDEO "\\video\\remote_video" // The virtual remote video output device.
19 #define DEVICE_EXTERNAL_CAPTURE "\\video\\external_capture" //external capture device type.
20 
21 #define DEVICE_LOCAL_SCREEN_VIDEO "\\video\\local_screen_video" //local screen video.
22 #define DEVICE_REMOTE_SCREEN_VIDEO "\\video\\remote_screen_video" //remote screen video.
23 
24 // Audio input/output device type/id
25 #define DEVICE_AUDIO "\\audio" // Audio device type.
26 #define DEVICE_MIC "\\audio\\mic" // Mic device type.
27 #define DEVICE_PLAYER "\\audio\\player" // Sound player device type.
28 #define DEVICE_ACCOMPANY "\\audio\\accompany" // Audio Accompany device type.
29 #define DEVICE_REMOTE_AUDIO "\\audio\\remote_audio" // The virtual remote audio output device.
30 #define DEVICE_MIX "\\audio\\mix" // Mix device
31 #define DEVICE_MIX_INPUT "\\audio\\mix\\input" // Input mix device
32 #define DEVICE_MIX_OUTPUT "\\audio\\mix\\output" // Output mix device
33 
35 //
36 // 音频设备相关的由此开始
37 
39 #define MIN_AUDIO_DEVICE_VOLUME 0
40 
42 #define MAX_AUDIO_DEVICE_VOLUME 100
43 
45 #define DEFAULT_SCREEN_VIDEO_CAPTURE_FPS 10
46 
48 #define MIN_SCREEN_VIDEO_CAPTURE_FPS 1
49 
51 #define MAX_SCREEN_VIDEO_CAPTURE_FPS 10
52 
65 class AV_EXPORT AVAudioDevice : public AVDevice {
66  public:
77  virtual uint32 GetVolume() = 0;
78 
90  virtual void SetVolume(uint32 value) = 0;
91 
99  virtual uint32 GetDynamicVolume() = 0;
100 
106  typedef void(*FrameDataCallback)(AudioFrame* audio_frame, void* custom_data);
107 
112  virtual void SetFrameDataCallback(FrameDataCallback frame_callback, void* custom_data = NULL) = 0;
113 
117  virtual FrameDataCallback GetFrameDataCallback() = 0;
118 
122  virtual void* GetFrameCustomData() = 0;
123 };
124 
133 class AV_EXPORT AVSupportAudioPreview {
134  public:
143  typedef void(*PreviewCallback)(AudioFrame* audio_frame, void* custom_data);
144 
153  virtual void SetPreviewCallback(PreviewCallback frame_callback, void* custom_data = NULL) = 0;
154 
159  virtual PreviewCallback GetPreviewCallback() = 0;
160 
165  virtual void* GetPreviewCustomData() = 0;
166 };
167 
175 class AV_EXPORT AVRemoteAudioDevice
176  : public AVAudioDevice
177  , public AVSupportAudioPreview {
178  public:
179 
180 };
181 
189 class AV_EXPORT AVMicDevice
190  : public AVAudioDevice {
191  public:
192 
193 };
194 
202 class AV_EXPORT AVPlayerDevice
203  : public AVAudioDevice {
204  public:
205 
206 };
207 
214 class AV_EXPORT AVAccompanyDevice
215  : public AVAudioDevice {
216  public:
222  enum SourceType {
223  AV_ACCOMPANY_SOURCE_TYPE_NONE = 0,
224  AV_ACCOMPANY_SOURCE_TYPE_SYSTEM = 1,
225  ACCOMPANY_SOURCE_TYPE_PROCESS = 2,
226  };
227 
228  public:
243  virtual void SetSource(std::string player_path, std::string media_file_path, SourceType source_type) = 0;
244 
250  virtual SourceType GetSourceType() = 0;
251 
257  virtual std::string GetPlayerPath() = 0;
258 
264  virtual std::string GetMediaFilePath() = 0;
265 };
266 
268 //
269 // 视频设备相关的由此开始
270 
279 class AV_EXPORT AVVideoDevice : public AVDevice {
280  public:
281  typedef void(*FrameDataCallback)(VideoFrame* video_frame, void* custom_data);
282 
286  virtual void SetFrameDataCallback(FrameDataCallback frame_callback, void* custom_data = NULL) = 0;
287 
291  virtual FrameDataCallback GetFrameDataCallback() = 0;
292 
296  virtual void* GetFrameCustomData() = 0;
297 };
298 
314 class AV_EXPORT AVSupportVideoPreview {
315  public:
321  struct PreviewParam {
322  std::string device_id;
323  uint32 width;
324  uint32 height;
327  };
328 
337  typedef void(*PreviewCallback)(VideoFrame* video_frame, void* custom_data);
338 
347  virtual void SetPreviewCallback(PreviewCallback frame_callback, void* custom_data = NULL) = 0;
348 
359  virtual int SetPreviewParam(std::string id, uint32 width, uint32 height, ColorFormat color_format) = 0;
360 
366  virtual int ClearPreviewParam() = 0;
367 
372  virtual PreviewCallback GetPreviewCallback() = 0;
373 
378  virtual void* GetPreviewCustomData() = 0;
379 };
380 
387 class AV_EXPORT AVSupportVideoPreTreatment {
388  public:
389  typedef void(*PreTreatmentFun)(VideoFrame* video_frame, void* custom_data);
390 
399  virtual void SetPreTreatmentFun(PreTreatmentFun pre_fun, void* custom_data = NULL) = 0;
400 };
401 
409 class AV_EXPORT AVRemoteVideoDevice
410  : public AVVideoDevice
411  , public AVSupportVideoPreview {
412  public:
413 
414 };
415 
423 class AV_EXPORT AVCameraDevice
424  : public AVVideoDevice
425  , public AVSupportVideoPreview
426  , public AVSupportVideoPreTreatment {
427  public:
428 
429 #ifdef OS_IOS
430 
441  virtual void* GetPreviewLayer() = 0;
442 
450  virtual void* GetCameraSession() = 0;
451 #endif
452 };
453 
461 class AV_EXPORT AVExternalCapture
462  : public AVVideoDevice {
463  public:
473  virtual int OnCaptureFrame(VideoFrame &frame) = 0;
474 };
475 
476 
477 
484  : public AVVideoDevice
485  , public AVSupportVideoPreview {
486  public:
487 
488 };
489 
501  : public AVVideoDevice
502  , public AVSupportVideoPreview
503  , public AVSupportVideoPreTreatment {
504  public:
516  virtual void SetScreenCaptureParam(uint32 left = 0, uint32 top = 0, uint32 right = 0, uint32 bottom = 0, uint32 fps = DEFAULT_SCREEN_VIDEO_CAPTURE_FPS) = 0;
517 
526  virtual void GetScreenCaptureParam(uint32 &left, uint32 &top, uint32 &right, uint32 &bottom, uint32 &fps) = 0;
527 
537  virtual void EnableHDMode(bool is_enable) = 0;
538 };
539 
540 } // namespace av
541 } // namespace tencent
542 
543 #endif // #ifndef AV_DEVICE_H_
Definition: av_audio_ctrl.h:6
远端视频设备的封装类。
Definition: av_device.h:409
视频预览能力的封装类。
Definition: av_device.h:314
VideoSrcType
视频源类型。
Definition: av_common.h:140
视频设备封装类的基类。
Definition: av_device.h:279
视频预览能力的封装类。
Definition: av_device.h:321
视频预处理能力的封装类。
Definition: av_device.h:387
ColorFormat
色彩格式。
Definition: av_common.h:119
音频数据帧。
Definition: av_common.h:98
远端音频设备的封装类。
Definition: av_device.h:175
视频帧。
Definition: av_common.h:207
uint32 height
预览期望图像像素高
Definition: av_device.h:324
SourceType
伴奏源类型。
Definition: av_device.h:222
ColorFormat color_format
预览期望图像像素宽
Definition: av_device.h:325
uint32 width
预览设备id
Definition: av_device.h:323
伴奏设备。
Definition: av_device.h:214
音频设备封装类的基类。
Definition: av_device.h:65
远端屏幕视频设备的封装类。
Definition: av_device.h:483
VideoSrcType src_type
预览期望图像格式
Definition: av_device.h:326
音视频设备封装类的基类。
Definition: av_device_base.h:18
外部视频捕获设备。
Definition: av_device.h:461
std::string device_id
Definition: av_device.h:322
摄像头的封装类。
Definition: av_device.h:423
音频预览能力的封装类。
Definition: av_device.h:133
本地屏幕视频设备的封装类。
Definition: av_device.h:500
麦克风的封装类。
Definition: av_device.h:189
音频播放设备的封装类。
Definition: av_device.h:202