aboutsummaryrefslogtreecommitdiff
path: root/include/defs.h
blob: def5ed5ba49fadef4cbc4f3a9099d04dce4ac678 (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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#ifndef GSR_DEFS_H
#define GSR_DEFS_H

#include <stdbool.h>

#define GSR_VIDEO_CODEC_AUTO -1
#define GSR_BITRATE_MODE_AUTO -1

typedef enum {
    GSR_GPU_VENDOR_AMD,
    GSR_GPU_VENDOR_INTEL,
    GSR_GPU_VENDOR_NVIDIA,
    GSR_GPU_VENDOR_BROADCOM
} gsr_gpu_vendor;

typedef struct {
    gsr_gpu_vendor vendor;
    int gpu_version; /* 0 if unknown */
    bool is_steam_deck;
} gsr_gpu_info;

typedef enum {
    GSR_MONITOR_ROT_0,
    GSR_MONITOR_ROT_90,
    GSR_MONITOR_ROT_180,
    GSR_MONITOR_ROT_270
} gsr_monitor_rotation;

typedef enum {
    GSR_CONNECTION_X11,
    GSR_CONNECTION_WAYLAND,
    GSR_CONNECTION_DRM
} gsr_connection_type;

typedef enum {
    GSR_VIDEO_QUALITY_MEDIUM,
    GSR_VIDEO_QUALITY_HIGH,
    GSR_VIDEO_QUALITY_VERY_HIGH,
    GSR_VIDEO_QUALITY_ULTRA,
} gsr_video_quality;

typedef enum {
    GSR_VIDEO_CODEC_H264,
    GSR_VIDEO_CODEC_HEVC,
    GSR_VIDEO_CODEC_HEVC_HDR,
    GSR_VIDEO_CODEC_HEVC_10BIT,
    GSR_VIDEO_CODEC_AV1,
    GSR_VIDEO_CODEC_AV1_HDR,
    GSR_VIDEO_CODEC_AV1_10BIT,
    GSR_VIDEO_CODEC_VP8,
    GSR_VIDEO_CODEC_VP9,
    GSR_VIDEO_CODEC_H264_VULKAN,
    GSR_VIDEO_CODEC_HEVC_VULKAN,
} gsr_video_codec;

typedef enum {
    GSR_AUDIO_CODEC_AAC,
    GSR_AUDIO_CODEC_OPUS,
    GSR_AUDIO_CODEC_FLAC,
} gsr_audio_codec;

typedef enum {
    GSR_PIXEL_FORMAT_YUV420,
    GSR_PIXEL_FORMAT_YUV444,
} gsr_pixel_format;

typedef enum {
    GSR_FRAMERATE_MODE_CONSTANT,
    GSR_FRAMERATE_MODE_VARIABLE,
    GSR_FRAMERATE_MODE_CONTENT,
} gsr_framerate_mode;

typedef enum {
    GSR_BITRATE_MODE_QP,
    GSR_BITRATE_MODE_VBR,
    GSR_BITRATE_MODE_CBR,
} gsr_bitrate_mode;

typedef enum {
    GSR_TUNE_PERFORMANCE,
    GSR_TUNE_QUALITY,
} gsr_tune;

typedef enum {
    GSR_VIDEO_ENCODER_HW_GPU,
    GSR_VIDEO_ENCODER_HW_CPU,
} gsr_video_encoder_hardware;

typedef enum {
    GSR_COLOR_RANGE_LIMITED,
    GSR_COLOR_RANGE_FULL
} gsr_color_range;

typedef enum {
    GSR_COLOR_DEPTH_8_BITS,
    GSR_COLOR_DEPTH_10_BITS
} gsr_color_depth;

bool video_codec_is_hdr(gsr_video_codec video_codec);
gsr_video_codec hdr_video_codec_to_sdr_video_codec(gsr_video_codec video_codec);
gsr_color_depth video_codec_to_bit_depth(gsr_video_codec video_codec);
const char* video_codec_to_string(gsr_video_codec video_codec);
bool video_codec_is_av1(gsr_video_codec video_codec);
bool video_codec_is_vulkan(gsr_video_codec video_codec);
const char* audio_codec_get_name(gsr_audio_codec audio_codec);

#endif /* GSR_DEFS_H */