Use opengl capture for nvfbc (prepare for vulkan capture without cuda)

This commit is contained in:
dec05eba
2024-03-04 20:30:43 +01:00
parent d0c221a233
commit 0d89378021
14 changed files with 397 additions and 114 deletions

View File

@@ -55,7 +55,7 @@ void gsr_capture_end(gsr_capture *cap, AVFrame *frame);
void gsr_capture_destroy(gsr_capture *cap, AVCodecContext *video_codec_context);
bool gsr_capture_base_setup_vaapi_textures(gsr_capture_base *self, AVFrame *frame, gsr_egl *egl, VADisplay va_dpy, VADRMPRIMESurfaceDescriptor *prime, gsr_color_range color_range);
bool gsr_capture_base_setup_cuda_textures(gsr_capture_base *base, AVFrame *frame, gsr_cuda_context *cuda_context, gsr_egl *egl, gsr_color_range color_range, bool hdr);
bool gsr_capture_base_setup_cuda_textures(gsr_capture_base *base, AVFrame *frame, gsr_cuda_context *cuda_context, gsr_egl *egl, gsr_color_range color_range, gsr_source_color source_color, bool hdr);
void gsr_capture_base_stop(gsr_capture_base *self, gsr_egl *egl);
#endif /* GSR_CAPTURE_CAPTURE_H */

View File

@@ -4,16 +4,16 @@
#include "capture.h"
#include "../vec2.h"
typedef struct _XDisplay Display;
typedef struct {
Display *dpy;
gsr_egl *egl;
const char *display_to_capture; /* if this is "screen", then the entire x11 screen is captured (all displays). A copy is made of this */
int fps;
vec2i pos;
vec2i size;
bool direct_capture;
bool overclock;
bool hdr;
gsr_color_range color_range;
} gsr_capture_nvfbc_params;
gsr_capture* gsr_capture_nvfbc_create(const gsr_capture_nvfbc_params *params);