aboutsummaryrefslogtreecommitdiff
path: root/vendor/darwin/CoreVideo/CVDisplayLink.odin
blob: 73d11d73947f061f62fe30bdc1ae6e3ee713740c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// Bindings for [[ CoreVideo ; https://developer.apple.com/documentation/corevideo ]].
package CoreVideo

DisplayLinkRef :: distinct rawptr
Return :: i32

TimeStamp :: struct {
	version: u32,
	videoTimeScale: i32,
	videoTime: i64,
	hostTime: u64,
	rateScalar: f64,
	videoRefreshPeriod: i64,
	smpteTime: CVSMPTETime,
	flags: u64,
	reserved: u64,
}

CVSMPTETime :: struct {
	sbuframes: i16,
	subframeDivisor: i16,
	count: u32,
	type: u32,
	flags: u32,
	hours: i16,
	minutes: i16,
	seconds: i16,
	frames: i16,
}

OptionFlags :: u64
DisplayLinkOutputCallback :: #type proc "c" (displayLink: DisplayLinkRef, #by_ptr inNow: TimeStamp, #by_ptr inOutputTime: TimeStamp, flagsIn: OptionFlags, flagsOut: ^OptionFlags, displayLinkContext: rawptr) -> Return

foreign import CoreVideo "system:CoreVideo.framework"
@(link_prefix="CV")
foreign CoreVideo {
	DisplayLinkCreateWithActiveCGDisplays :: proc "c" (displayLinkOut: ^DisplayLinkRef) -> Return ---
	DisplayLinkStart :: proc "c" (displayLink: DisplayLinkRef) -> Return ---
	DisplayLinkStop :: proc "c" (displayLink: DisplayLinkRef) -> Return ---
	DisplayLinkSetOutputCallback :: proc "c" (displayLink: DisplayLinkRef, callback: DisplayLinkOutputCallback, userInfo: rawptr) -> Return ---
	DisplayLinkRelease :: proc "c" (displayLink: DisplayLinkRef) ---
	DisplayLinkRetain :: proc "c" (displayLink: DisplayLinkRef) -> DisplayLinkRef ---
}