summaryrefslogtreecommitdiff
path: root/include/capture/v4l2.h
blob: b7665aaf7e10929d8cae99e96efc5789ba88d7e7 (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
#ifndef GSR_CAPTURE_V4L2_H
#define GSR_CAPTURE_V4L2_H

#include "capture.h"

typedef enum {
    GSR_CAPTURE_V4L2_PIXFMT_AUTO,
    GSR_CAPTURE_V4L2_PIXFMT_YUYV,
    GSR_CAPTURE_V4L2_PIXFMT_MJPEG
} gsr_capture_v4l2_pixfmt;

typedef struct {
    bool yuyv;
    bool mjpeg;
} gsr_capture_v4l2_supported_pixfmts;

typedef struct {
    gsr_egl *egl;
    vec2i output_resolution;
    const char *device_path;
    gsr_capture_v4l2_pixfmt pixfmt;
    int fps;
} gsr_capture_v4l2_params;

gsr_capture* gsr_capture_v4l2_create(const gsr_capture_v4l2_params *params);

typedef void (*v4l2_devices_query_callback)(const char *path, gsr_capture_v4l2_supported_pixfmts supported_pixfmts, vec2i size, void *userdata);
void gsr_capture_v4l2_list_devices(v4l2_devices_query_callback callback, void *userdata);

#endif /* GSR_CAPTURE_V4L2_H */