8#import <AppKit/AppKit.h>
9#import <AVFoundation/AVFoundation.h>
12 AVCaptureVideoDataOutput *output;
13 NSCondition *captureStopped;
16@interface AVVideo: NSObject <AVCaptureVideoDataOutputSampleBufferDelegate>
18#define kMaxDisplays 32
20@property (nonatomic, assign) CGDirectDisplayID displayID;
21@property (nonatomic, assign) CMTime minFrameDuration;
22@property (nonatomic, assign) OSType pixelFormat;
23@property (nonatomic, assign)
int frameWidth;
24@property (nonatomic, assign)
int frameHeight;
26typedef bool (^FrameCallbackBlock)(CMSampleBufferRef);
28@property (nonatomic, assign) AVCaptureSession *session;
29@property (nonatomic, assign) NSMapTable<AVCaptureConnection *, AVCaptureVideoDataOutput *> *videoOutputs;
30@property (nonatomic, assign) NSMapTable<AVCaptureConnection *, FrameCallbackBlock> *captureCallbacks;
31@property (nonatomic, assign) NSMapTable<AVCaptureConnection *, dispatch_semaphore_t> *captureSignals;
33+ (NSArray<NSDictionary *> *)displayNames;
34+ (NSString *)getDisplayName:(CGDirectDisplayID)displayID;
36- (id)initWithDisplay:(CGDirectDisplayID)displayID frameRate:(int)frameRate;
38- (void)setFrameWidth:(int)frameWidth frameHeight:(int)frameHeight;
39- (dispatch_semaphore_t)capture:(FrameCallbackBlock)frameCallback;