aboutsummaryrefslogtreecommitdiff
path: root/vendor/sdl3/sdl3_camera.odin
blob: a6a89524573e7dfaa01f4339448cfba97d504b7e (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
45
46
47
package sdl3

import "core:c"

CameraID :: distinct Uint32

Camera :: struct {}

CameraSpec :: struct {
	format:                PixelFormat, /**< Frame format */
	colorspace:            Colorspace,  /**< Frame colorspace */
	width:                 c.int,       /**< Frame width */
	height:                c.int,       /**< Frame height */
	framerate_numerator:   c.int,       /**< Frame rate numerator ((num / denom) == FPS, (denom / num) == duration in seconds) */
	framerate_denominator: c.int,       /**< Frame rate demoninator ((num / denom) == FPS, (denom / num) == duration in seconds) */
}

CameraPosition :: enum c.int {
	UNKNOWN,
	FRONT_FACING,
	BACK_FACING,
}

CameraPermissionState :: enum c.int {
	DENIED = -1,
	PENDING,
	APPROVED,
}

@(default_calling_convention="c", link_prefix="SDL_")
foreign lib {
	GetNumCameraDrivers       :: proc() -> c.int ---
	GetCameraDriver           :: proc(index: c.int) -> cstring ---
	GetCurrentCameraDriver    :: proc() -> cstring ---
	GetCameras                :: proc(count: ^c.int) -> [^]CameraID ---
	GetCameraSupportedFormats :: proc(instance_id: CameraID, count: ^c.int) -> [^]^CameraSpec ---
	GetCameraName             :: proc(instance_id: CameraID) -> cstring ---
	GetCameraPosition         :: proc(instance_id: CameraID) -> CameraPosition ---
	OpenCamera                :: proc(instance_id: CameraID, spec: ^CameraSpec) -> ^Camera ---
	GetCameraPermissionState  :: proc(camera: ^Camera) -> CameraPermissionState ---
	GetCameraID               :: proc(camera: ^Camera) -> CameraID ---
	GetCameraProperties       :: proc(camera: ^Camera) -> PropertiesID ---
	GetCameraFormat           :: proc(camera: ^Camera, spec: ^CameraSpec) -> bool ---
	AcquireCameraFrame        :: proc(camera: ^Camera, timestampNS: ^Uint64) -> ^Surface ---
	ReleaseCameraFrame        :: proc(camera: ^Camera, frame: ^Surface) ---
	CloseCamera               :: proc(camera: ^Camera) ---
}