mirror of
https://repo.dec05eba.com/gpu-screen-recorder
synced 2026-03-31 09:07:13 +09:00
Desktop portal capture: support rotated monitor capture on sway
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
#ifndef GSR_PIPEWIRE_VIDEO_H
|
||||
#define GSR_PIPEWIRE_VIDEO_H
|
||||
|
||||
#include "defs.h"
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
#include <pthread.h>
|
||||
@@ -48,6 +49,17 @@ typedef struct {
|
||||
unsigned int cursor_texture_id;
|
||||
} gsr_texture_map;
|
||||
|
||||
typedef struct {
|
||||
gsr_pipewire_video_region region;
|
||||
gsr_pipewire_video_region cursor_region;
|
||||
gsr_pipewire_video_dmabuf_data dmabuf_data[GSR_PIPEWIRE_VIDEO_DMABUF_MAX_PLANES];
|
||||
int num_dmabuf_data;
|
||||
uint32_t fourcc;
|
||||
uint64_t modifiers;
|
||||
bool using_external_image;
|
||||
gsr_monitor_rotation rotation;
|
||||
} gsr_map_texture_output;
|
||||
|
||||
typedef struct {
|
||||
gsr_egl *egl;
|
||||
int fd;
|
||||
@@ -98,6 +110,8 @@ typedef struct {
|
||||
|
||||
bool paused;
|
||||
double paused_start_secs;
|
||||
|
||||
gsr_monitor_rotation rotation;
|
||||
} gsr_pipewire_video;
|
||||
|
||||
/*
|
||||
@@ -108,8 +122,7 @@ typedef struct {
|
||||
bool gsr_pipewire_video_init(gsr_pipewire_video *self, int pipewire_fd, uint32_t pipewire_node, int fps, bool capture_cursor, gsr_egl *egl);
|
||||
void gsr_pipewire_video_deinit(gsr_pipewire_video *self);
|
||||
|
||||
/* |dmabuf_data| should be at least GSR_PIPEWIRE_VIDEO_DMABUF_MAX_PLANES in size */
|
||||
bool gsr_pipewire_video_map_texture(gsr_pipewire_video *self, gsr_texture_map texture_map, gsr_pipewire_video_region *region, gsr_pipewire_video_region *cursor_region, gsr_pipewire_video_dmabuf_data *dmabuf_data, int *num_dmabuf_data, uint32_t *fourcc, uint64_t *modifiers, bool *using_external_image);
|
||||
bool gsr_pipewire_video_map_texture(gsr_pipewire_video *self, gsr_texture_map texture_map, gsr_map_texture_output *output);
|
||||
bool gsr_pipewire_video_is_damaged(gsr_pipewire_video *self);
|
||||
void gsr_pipewire_video_clear_damage(gsr_pipewire_video *self);
|
||||
bool gsr_pipewire_video_should_restart(gsr_pipewire_video *self);
|
||||
|
||||
Reference in New Issue
Block a user