1 //
2 //  DesktopCaptureSourceView.h
3 //  TgVoipWebrtc
4 //
5 //  Created by Mikhail Filimonov on 28.12.2020.
6 //  Copyright © 2020 Mikhail Filimonov. All rights reserved.
7 //
8 
9 #import <Foundation/Foundation.h>
10 #import <AppKit/AppKit.h>
11 
12 
13 NS_ASSUME_NONNULL_BEGIN
14 
15 @protocol VideoSourceMac
16 -(NSString *)deviceIdKey;
17 -(NSString *)title;
18 -(NSString *)uniqueKey;
19 -(BOOL)isEqual:(id)another;
20 @end
21 
22 @interface DesktopCaptureSourceDataMac : NSObject
23 @property CGSize aspectSize;
24 @property double fps;
25 @property bool captureMouse;
26 -(id)initWithSize:(CGSize)size fps:(double)fps captureMouse:(bool)captureMouse;
27 
28 -(NSString *)cachedKey;
29 @end
30 
31 @interface DesktopCaptureSourceMac : NSObject <VideoSourceMac>
32 -(long)uniqueId;
33 -(BOOL)isWindow;
34 @end
35 
36 @interface DesktopCaptureSourceScopeMac : NSObject
37 @property(nonatomic, strong, readonly) DesktopCaptureSourceDataMac *data;
38 @property(nonatomic, strong, readonly) DesktopCaptureSourceMac *source;
39 -(id)initWithSource:(DesktopCaptureSourceMac *)source data:(DesktopCaptureSourceDataMac *)data;
40  -(NSString *)cachedKey;
41 @end
42 
43 @interface DesktopCaptureSourceManagerMac : NSObject
44 
45 -(instancetype)init_s;
46 -(instancetype)init_w;
47 -(NSArray<DesktopCaptureSourceMac *> *)list;
48 
49 -(NSView *)createForScope:(DesktopCaptureSourceScopeMac *)scope;
50 -(void)start:(DesktopCaptureSourceScopeMac *)scope;
51 -(void)stop:(DesktopCaptureSourceScopeMac *)scope;
52 
53 @end
54 
55 NS_ASSUME_NONNULL_END
56