/** * @file src/platform/macos/av_video.h * @brief todo */ #pragma once #import #import struct CaptureSession { AVCaptureVideoDataOutput *output; NSCondition *captureStopped; }; @interface AVVideo: NSObject #define kMaxDisplays 32 @property (nonatomic, assign) CGDirectDisplayID displayID; @property (nonatomic, assign) CMTime minFrameDuration; @property (nonatomic, assign) OSType pixelFormat; @property (nonatomic, assign) int frameWidth; @property (nonatomic, assign) int frameHeight; typedef bool (^FrameCallbackBlock)(CMSampleBufferRef); @property (nonatomic, assign) AVCaptureSession *session; @property (nonatomic, assign) NSMapTable *videoOutputs; @property (nonatomic, assign) NSMapTable *captureCallbacks; @property (nonatomic, assign) NSMapTable *captureSignals; + (NSArray *)displayNames; + (NSString *)getDisplayName:(CGDirectDisplayID)displayID; - (id)initWithDisplay:(CGDirectDisplayID)displayID frameRate:(int)frameRate; - (void)setFrameWidth:(int)frameWidth frameHeight:(int)frameHeight; - (dispatch_semaphore_t)capture:(FrameCallbackBlock)frameCallback; @end