JCSDK Objective-C API Reference for iOS/macOS  2.5.1
JCMediaDevice.h
1 //
2 // JCMediaDevice.h
3 // JCSDK-OC
4 //
5 // Created by maikireton on 2017/8/11.
6 // Copyright © 2017年 juphoon. All rights reserved.
7 //
8 
9 #import <Foundation/Foundation.h>
10 #import "JCClient.h"
11 #import "JCMediaDeviceVideoCanvas.h"
12 #import "JCMediaDeviceCallback.h"
13 #import "JCMediaDeviceConstants.h"
14 
24 @interface JCMediaDeviceCamera : NSObject
25 
29 @property (nonatomic, readonly) NSString* __nonnull cameraId;
30 
34 @property (nonatomic, readonly) NSString* __nonnull cameraName;
35 
43 @property (nonatomic, readonly) JCMediaDeviceCameraType cameraType;
44 
45 @end
46 
50 @interface JCMediaDeviceAudio : NSObject
51 
55 @property (nonatomic, readonly) NSString* __nonnull audioId;
56 
60 @property (nonatomic, readonly) NSString* __nonnull audioName;
61 
65 @property (nonatomic, readonly) bool input;
66 
67 @end
68 
72 @interface JCMediaDeviceWindow : NSObject
73 
77 @property (nonatomic, readonly) NSString* __nonnull windowId;
78 
82 @property (nonatomic, readonly) NSString* __nonnull windowName;
83 
84 @end
85 
89 @interface JCMediaDeviceAudioParam : NSObject
90 
98 @property (nonatomic) int audioInputSamplingRate;
99 
107 @property (nonatomic) int audioOutputSamplingRate;
108 
114 @property (nonatomic) int audioInputChannelNumber;
115 
121 @property (nonatomic) int audioOutputChannelNumber;
122 
142 @property (nonatomic) bool autoStartAudioOutputDevice;
143 
167 @property (nonatomic) bool autoStartAudioInputDevice;
168 
169 @end
170 
175 @interface JCMediaDevice : NSObject
176 
182 @property (nonatomic, readonly) bool cameraOpen;
183 
189 @property (nonatomic, readonly) bool videoFileOpen;
190 
194 @property (nonatomic, strong, readonly) JCMediaDeviceCamera* __nullable camera;
195 
199 @property (nonatomic, readonly) NSArray<JCMediaDeviceCamera*> * __nonnull cameras;
200 
204 @property (nonatomic, strong) JCMediaDeviceCamera* __nullable defaultCamera;
205 
211 @property (nonatomic, strong) JCMediaDeviceAudioParam * _Nonnull audioParam;
212 
216 @property (nonatomic, strong, readonly) NSString* __nonnull videoFileId;
217 
221 @property (nonatomic, readonly) bool audioInterrupt;
222 
232 @property (nonatomic) JCMediaDeviceVideoAngel videoAngle;
233 
246 @property (nonatomic) bool useInternalAudioDeviceLogic;
247 
256 @property (nonatomic, readonly) bool audioStart;
257 
258 #if TARGET_OS_OSX
259 
262 @property (nonatomic, readonly) NSArray<JCMediaDeviceAudio*>* __nonnull audioInputs;
263 
267 @property (nonatomic, strong) JCMediaDeviceAudio* __nullable audioInput;
268 
272 @property (nonatomic, readonly) NSArray<JCMediaDeviceAudio*>* __nonnull audioOutputs;
273 
277 @property (nonatomic, strong) JCMediaDeviceAudio* __nullable audioOutput;
278 
282 @property (nonatomic, readonly) NSArray<JCMediaDeviceWindow*>* __nonnull desktops;
283 
287 @property (nonatomic, readonly) NSArray<JCMediaDeviceWindow*>* __nonnull windows;
288 
292 @property (nonatomic, strong) JCMediaDeviceWindow* __nullable screenshareWindow;
293 #endif
294 
309 +(JCMediaDevice* __nullable)create:(JCClient* __nonnull)client callback:(id<JCMediaDeviceCallback> __nonnull)callback;
310 
318 +(void)destroy;
319 
337 -(JCMediaDeviceVideoCanvas* __nullable)startCameraVideo:(JCMediaDeviceRender)type;
338 
357 -(JCMediaDeviceVideoCanvas* __nullable)startCameraVideo:(JCMediaDeviceRender)type view:(JCView* __nonnull)view;
358 
375 -(JCMediaDeviceVideoCanvas* __nullable)startVideo:(NSString* __nonnull)videoSource renderType:(JCMediaDeviceRender)type;
376 
392 -(JCMediaDeviceVideoCanvas* __nullable)startVideo:(NSString* __nonnull)videoSource renderType:(JCMediaDeviceRender)type view:(JCView* __nonnull)view;
393 
401 -(void)stopVideo:(JCMediaDeviceVideoCanvas* __nonnull)canvas;
402 
412 -(bool)startAudio;
413 
423 -(bool)stopAudio;
424 
436 -(bool)startCamera;
437 
447 -(bool)stopCamera;
448 
462 -(bool)switchCamera;
463 
476 -(bool)switchCamera:(JCMediaDeviceCamera* __nonnull)camera;
477 
487 - (void)setCameraProperty:(int)width height:(int)height framerate:(int)framerate;
488 
498 - (void)setScreenCaptureProperty:(int)width height:(int)height framerate:(int)framerate;
499 
511 -(bool)startVideoFile;
512 
523 -(void)setVideoFileFrame:(NSData* __nonnull)srcFrame format:(JCMediaDeviceVideoPixelFormat)format width:(int)width height:(int)height;
524 
534 -(void)setVideoFileFrame:(CVPixelBufferRef __nonnull)srcFrame angle:(int)angle mirror:(int)mirror;
535 
545 -(bool)stopVideoFile;
546 
547 #if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR
548 
554 @property (nonatomic) bool defaultSpeakerOn;
555 
565 -(void)enableSpeaker:(bool)enable;
566 
571 -(NSString* __nullable)getAudioOutputType;
572 
578 -(bool)isSpeakerOn;
579 
580 #endif
581 @end
582 
JCMediaDeviceCamera::cameraType
JCMediaDeviceCameraType cameraType
Definition: JCMediaDevice.h:43
JCMediaDeviceVideoAngel
JCMediaDeviceVideoAngel
Definition: JCMediaDeviceConstants.h:81
JCMediaDeviceAudioParam
Definition: JCMediaDevice.h:90
JCMediaDeviceVideoPixelFormat
JCMediaDeviceVideoPixelFormat
Definition: JCMediaDeviceConstants.h:45
JCMediaDeviceWindow
Definition: JCMediaDevice.h:73
JCMediaDeviceCallback-p
Definition: JCMediaDeviceCallback.h:20
JCMediaDevice
Definition: JCMediaDevice.h:176
JCMediaDeviceCameraType
JCMediaDeviceCameraType
Definition: JCMediaDeviceConstants.h:97
JCMediaDeviceRender
JCMediaDeviceRender
Definition: JCMediaDeviceConstants.h:33
JCMediaDeviceCamera::cameraName
NSString *__nonnull cameraName
Definition: JCMediaDevice.h:34
JCMediaDeviceAudio
Definition: JCMediaDevice.h:51
JCMediaDeviceVideoCanvas
Definition: JCMediaDeviceVideoCanvas.h:28
JCMediaDeviceCamera::cameraId
NSString *__nonnull cameraId
Definition: JCMediaDevice.h:29
JCClient
Definition: JCClient.h:95
JCMediaDeviceCamera
Definition: JCMediaDevice.h:25