From 75ed160122bc923731ae1d005d789608a4cdb2fb Mon Sep 17 00:00:00 2001 From: dec05eba Date: Fri, 7 Apr 2023 05:31:46 +0200 Subject: Implement kms vaapi capture --- src/capture/xcomposite_vaapi.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'src/capture/xcomposite_vaapi.c') diff --git a/src/capture/xcomposite_vaapi.c b/src/capture/xcomposite_vaapi.c index cfe99dc..f12a978 100644 --- a/src/capture/xcomposite_vaapi.c +++ b/src/capture/xcomposite_vaapi.c @@ -1,13 +1,12 @@ #include "../../include/capture/xcomposite_vaapi.h" #include "../../include/egl.h" #include "../../include/window_texture.h" -#include "../../include/time.h" +#include "../../include/utils.h" #include #include #include #include #include -#include #include #include #include @@ -399,6 +398,8 @@ static void gsr_capture_xcomposite_vaapi_tick(gsr_capture *cap, AVCodecContext * buf.flags = 0; buf.private_data = 0; + // TODO: Use VASurfaceAttribDRMFormatModifiers to set modifier if modifier is not INVALID + #define VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME 0x20000000 VASurfaceAttrib attribs[2] = {0}; @@ -448,10 +449,13 @@ static void gsr_capture_xcomposite_vaapi_tick(gsr_capture *cap, AVCodecContext * // Copying a surface to another surface will automatically perform the color conversion. Thanks vaapi! VAProcPipelineParameterBuffer params = {0}; params.surface = cap_xcomp->input_surface; - params.surface_region = NULL; // TODO: Use when using kmsgrab to restrict region to captured monitor - params.output_region = &cap_xcomp->output_region; + params.surface_region = NULL; + if(cap_xcomp->params.follow_focused) + params.output_region = &cap_xcomp->output_region; + else + params.output_region = NULL; params.output_background_color = 0; - //params.filter_flags = VA_FRAME_PICTURE; + params.filter_flags = VA_FRAME_PICTURE; // TODO: Colors params.input_color_properties.color_range = (*frame)->color_range == AVCOL_RANGE_JPEG ? VA_SOURCE_RANGE_FULL : VA_SOURCE_RANGE_REDUCED; params.output_color_properties.color_range = (*frame)->color_range == AVCOL_RANGE_JPEG ? VA_SOURCE_RANGE_FULL : VA_SOURCE_RANGE_REDUCED; -- cgit v1.2.3