1//
2// JCMediaDevice.h
3// JCSDK-OC
4//
5// Created by maikireton on 2020/4/10.
6// Copyright © 2017年 juphoon. All rights reserved.
7//
8
9#pragma once
10#ifdef _WIN32
11#include "stdafx.h"
12#endif
13#include "JCMediaDeviceCallback.h"
14#include "JCClient.h"
15#include "JCMediaDeviceConstants.h"
16#include "JCMediaDeviceVideoCanvas.h"
17
27class JCSDK_API JCMediaDeviceCamera
28{
29public:
33 char cameraName[512];
37 char cameraId[512];
42 ZeroMemory(cameraName, 512);
43 ZeroMemory(cameraId, 512);
44 }
52 bool isValid() {
53 return strlen(cameraId) > 0;
54 }
55};
56
60class JCSDK_API JCMediaDeviceAudio
61{
62public:
66 char audioName[512];
70 char audioId[512];
75 ZeroMemory(audioName, 512);
76 ZeroMemory(audioId, 512);
77 }
85 bool isValid() {
86 return strlen(audioId) > 0;
87 }
88};
89
93class JCSDK_API JCMediaDeviceWindow
94{
95public:
99 char windowName[512];
103 char windowId[512];
108 ZeroMemory(windowName, 512);
109 ZeroMemory(windowId, 512);
110 }
118 bool isValid() {
119 return strlen(windowId) > 0;
120 }
121};
126{
127public:
172
173
181
186 audioInputSamplingRate = 0;
187 audioOutputSamplingRate = 0;
188 audioInputChannelNumber = 0;
189 audioOutputChannelNumber = 0;
190 autoStartAudioOutputDevice = true;
191 autoStartAudioInputDevice = true;
193 }
194};
198class JCSDK_API JCMediaDevice {
199public:
228 virtual JCMediaDeviceVideoCanvas* startVideo(void* view, const char* videoSource, JCMediaDeviceRenderMode mode) = 0;
236 virtual void stopVideo(JCMediaDeviceVideoCanvas* canvas) = 0;
246 virtual bool startAudio() = 0;
256 virtual bool stopAudio() = 0;
266 virtual bool startCamera() = 0;
276 virtual bool stopCamera() = 0;
289 virtual bool switchCamera(JCMediaDeviceCamera camera) = 0;
299 virtual void setCameraProperty(int width, int height, int framerate) = 0;
309 virtual void setScreenCaptureProperty(int width, int height, int framerate) = 0;
323 virtual bool startVideoFile() = 0;
334 virtual void setVideoFileFrame(BYTE* srcFrame, JCMediaDeviceVideoPixelFormat format, int width, int height) = 0;
344 virtual bool stopVideoFile() = 0;
350 virtual const char* getVideoFileId() = 0;
358 virtual bool isCameraOpen() = 0;
366 virtual bool isVideoFileOpen() = 0;
378 virtual std::list<JCMediaDeviceCamera>* getCameras() = 0;
384 virtual std::list<JCMediaDeviceAudio>* getAudioInputs() = 0;
390 virtual std::list<JCMediaDeviceAudio>* getAudioOutputs() = 0;
396 virtual std::list<JCMediaDeviceWindow>* getWindows() = 0;
402 virtual std::list<JCMediaDeviceWindow>* getDesktops() = 0;
410 virtual bool isAudioStart() = 0;
422 virtual void setAudioParam(JCMediaDeviceAudioParam* param) = 0;
431 virtual void setAudioFrameCallback(JCAudioFrameCallback* callback) = 0;
432
441 virtual void setVideoFrameCallback(JCVideoFrameCallback* callback) = 0;
442
461 virtual bool inputCustomAudioData(int sampleRateHz, int channels, unsigned char* byteBuffer, int len, int playDelayMS, int recDelayMS, int clockDrift) = 0;
462
478 virtual bool getAudioOutputData(int sampleRateHz, int channels, unsigned char* byteBuffer, int len) = 0;
479
485 virtual int getOutputVolume() = 0;
486
492 virtual int getInputVolume() = 0;
493
494public:
511};
512
531extern JCSDK_API void destroyJCMediaDevice();
532
Definition: JCMediaDeviceCallback.h:38
Definition: JCClient.h:112
Definition: JCMediaDevice.h:61
JCMediaDeviceAudio()
Definition: JCMediaDevice.h:74
bool isValid()
Definition: JCMediaDevice.h:85
Definition: JCMediaDevice.h:126
bool autoStartAudioOutputDevice
Definition: JCMediaDevice.h:162
int audioOutputChannelNumber
Definition: JCMediaDevice.h:153
JCMediaDeviceAudioAGCType agcMode
Definition: JCMediaDevice.h:180
int audioOutputSamplingRate
Definition: JCMediaDevice.h:141
JCMediaDeviceAudioParam()
Definition: JCMediaDevice.h:185
int audioInputChannelNumber
Definition: JCMediaDevice.h:147
bool autoStartAudioInputDevice
Definition: JCMediaDevice.h:171
int audioInputSamplingRate
Definition: JCMediaDevice.h:134
Definition: JCMediaDeviceCallback.h:12
Definition: JCMediaDevice.h:28
bool isValid()
Definition: JCMediaDevice.h:52
JCMediaDeviceCamera()
Definition: JCMediaDevice.h:41
Definition: JCMediaDevice.h:198
virtual bool stopAudio()=0
virtual void setScreenCaptureProperty(int width, int height, int framerate)=0
virtual bool switchCamera(JCMediaDeviceCamera camera)=0
virtual bool stopCamera()=0
virtual std::list< JCMediaDeviceCamera > * getCameras()=0
virtual void stopVideo(JCMediaDeviceVideoCanvas *canvas)=0
virtual void setCameraProperty(int width, int height, int framerate)=0
virtual void setVideoFrameCallback(JCVideoFrameCallback *callback)=0
virtual bool inputCustomAudioData(int sampleRateHz, int channels, unsigned char *byteBuffer, int len, int playDelayMS, int recDelayMS, int clockDrift)=0
virtual void setVideoFileFrame(BYTE *srcFrame, JCMediaDeviceVideoPixelFormat format, int width, int height)=0
virtual bool isVideoFileOpen()=0
virtual bool startAudio()=0
JCMediaDeviceAudio audioIntput
Definition: JCMediaDevice.h:502
virtual int getInputVolume()=0
virtual bool isAudioStart()=0
virtual std::list< JCMediaDeviceWindow > * getWindows()=0
JCMediaDeviceWindow screenshareWindow
Definition: JCMediaDevice.h:510
virtual int getOutputVolume()=0
virtual bool startVideoFile()=0
virtual bool getAudioOutputData(int sampleRateHz, int channels, unsigned char *byteBuffer, int len)=0
virtual JCMediaDeviceVideoCanvas * startVideo(void *view, const char *videoSource, JCMediaDeviceRenderMode mode)=0
virtual std::list< JCMediaDeviceAudio > * getAudioOutputs()=0
virtual bool startCamera()=0
virtual bool stopVideoFile()=0
virtual std::list< JCMediaDeviceWindow > * getDesktops()=0
JCMediaDeviceAudio audioOutput
Definition: JCMediaDevice.h:506
virtual const char * getVideoFileId()=0
virtual JCMediaDeviceVideoCanvas * startCameraVideo(void *view, JCMediaDeviceRenderMode mode)=0
virtual bool isCameraOpen()=0
virtual JCMediaDeviceCamera getCamera()=0
virtual void setAudioFrameCallback(JCAudioFrameCallback *callback)=0
virtual std::list< JCMediaDeviceAudio > * getAudioInputs()=0
virtual void setAudioParam(JCMediaDeviceAudioParam *param)=0
JCMediaDeviceCamera defaultCamera
Definition: JCMediaDevice.h:498
virtual JCMediaDeviceAudioParam * getAudioParam()=0
Definition: JCMediaDeviceVideoCanvas.h:11
Definition: JCMediaDevice.h:94
bool isValid()
Definition: JCMediaDevice.h:118
JCMediaDeviceWindow()
Definition: JCMediaDevice.h:107
Definition: JCMediaDeviceCallback.h:70
JCMediaDeviceVideoPixelFormat
Definition: JCMediaDeviceConstants.h:35
JCMediaDeviceAudioAGCType
Definition: JCMediaDeviceConstants.h:169
JCMediaDeviceRenderMode
Definition: JCMediaDeviceConstants.h:16
JCSDK_API void destroyJCMediaDevice()
JCSDK_API JCMediaDevice * createJCMediaDevice(JCClient *client, JCMediaDeviceCallback *callback)
@ JCMediaDeviceAudioAGCTypeOn
Definition: JCMediaDeviceConstants.h:173
最后更新时间: 2023/3/13 14:46:40