aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2024-02-01 18:06:26 +0100
committerdec05eba <dec05eba@protonmail.com>2024-02-06 02:43:47 +0100
commit017fd0a37da0fc3dddcd635d09770c123f133e57 (patch)
tree31f551405884b13e8019c95af3b8ad49addc537b /include
parentf36182ea1318d6b19a7e518a6b542d5b19b07276 (diff)
Add support for hdr capture on amd/intel
Nvidia support will be added in the future. Note that hdr metadata is missing from the output file as amd and intel both have bugged drivers that dont add hdr metadata to the output file. Need to find a workaround for this (patching the video bitstream?). Add -cr limited|full, to set color range
Diffstat (limited to 'include')
-rw-r--r--include/capture/kms_vaapi.h3
-rw-r--r--include/capture/xcomposite_vaapi.h2
-rw-r--r--include/color_conversion.h10
3 files changed, 14 insertions, 1 deletions
diff --git a/include/capture/kms_vaapi.h b/include/capture/kms_vaapi.h
index 26cda2c..b7fbb81 100644
--- a/include/capture/kms_vaapi.h
+++ b/include/capture/kms_vaapi.h
@@ -3,6 +3,7 @@
#include "../vec2.h"
#include "../utils.h"
+#include "../color_conversion.h"
#include "capture.h"
typedef struct _XDisplay Display;
@@ -13,6 +14,8 @@ typedef struct {
gsr_gpu_info gpu_inf;
const char *card_path; /* reference */
bool wayland;
+ bool hdr;
+ gsr_color_range color_range;
} gsr_capture_kms_vaapi_params;
gsr_capture* gsr_capture_kms_vaapi_create(const gsr_capture_kms_vaapi_params *params);
diff --git a/include/capture/xcomposite_vaapi.h b/include/capture/xcomposite_vaapi.h
index e80c60a..ba234ec 100644
--- a/include/capture/xcomposite_vaapi.h
+++ b/include/capture/xcomposite_vaapi.h
@@ -4,6 +4,7 @@
#include "capture.h"
#include "../egl.h"
#include "../vec2.h"
+#include "../color_conversion.h"
#include <X11/X.h>
typedef struct _XDisplay Display;
@@ -15,6 +16,7 @@ typedef struct {
bool follow_focused; /* If this is set then |window| is ignored */
vec2i region_size; /* This is currently only used with |follow_focused| */
const char *card_path; /* reference */
+ gsr_color_range color_range;
} gsr_capture_xcomposite_vaapi_params;
gsr_capture* gsr_capture_xcomposite_vaapi_create(const gsr_capture_xcomposite_vaapi_params *params);
diff --git a/include/color_conversion.h b/include/color_conversion.h
index d84d548..d8e660e 100644
--- a/include/color_conversion.h
+++ b/include/color_conversion.h
@@ -5,12 +5,18 @@
#include "vec2.h"
typedef enum {
+ GSR_COLOR_RANGE_LIMITED,
+ GSR_COLOR_RANGE_FULL
+} gsr_color_range;
+
+typedef enum {
GSR_SOURCE_COLOR_RGB
} gsr_source_color;
typedef enum {
GSR_DESTINATION_COLOR_BGR,
- GSR_DESTINATION_COLOR_NV12 /* YUV420, BT709, limited */
+ GSR_DESTINATION_COLOR_NV12, /* YUV420, BT709, 8-bit */
+ GSR_DESTINATION_COLOR_P010 /* YUV420, BT2020, 10-bit */
} gsr_destination_color;
typedef struct {
@@ -21,6 +27,8 @@ typedef struct {
unsigned int destination_textures[2];
int num_destination_textures;
+
+ gsr_color_range color_range;
} gsr_color_conversion_params;
typedef struct {