xdg-desktop-portal-hyprland/src/screencast/screencast_common.c

38 lines
965 B
C
Raw Normal View History

2020-01-24 23:31:01 +01:00
#include "screencast_common.h"
enum spa_video_format pipewire_from_wl_shm(void *data) {
2020-01-24 23:31:01 +01:00
struct screencast_context *ctx = data;
if (ctx->forced_pixelformat) {
if (strcmp(ctx->forced_pixelformat, "BGRx") == 0) {
return SPA_VIDEO_FORMAT_BGRx;
}
if (strcmp(ctx->forced_pixelformat, "RGBx") == 0) {
return SPA_VIDEO_FORMAT_RGBx;
}
}
2020-01-24 23:31:01 +01:00
switch (ctx->simple_frame.format) {
case WL_SHM_FORMAT_ARGB8888:
return SPA_VIDEO_FORMAT_BGRA;
case WL_SHM_FORMAT_XRGB8888:
return SPA_VIDEO_FORMAT_BGRx;
case WL_SHM_FORMAT_RGBA8888:
return SPA_VIDEO_FORMAT_ABGR;
case WL_SHM_FORMAT_RGBX8888:
return SPA_VIDEO_FORMAT_xBGR;
case WL_SHM_FORMAT_ABGR8888:
return SPA_VIDEO_FORMAT_RGBA;
case WL_SHM_FORMAT_XBGR8888:
return SPA_VIDEO_FORMAT_RGBx;
case WL_SHM_FORMAT_BGRA8888:
return SPA_VIDEO_FORMAT_ARGB;
case WL_SHM_FORMAT_BGRX8888:
return SPA_VIDEO_FORMAT_xRGB;
case WL_SHM_FORMAT_NV12:
return SPA_VIDEO_FORMAT_NV12;
default:
abort();
2020-01-24 23:31:01 +01:00
}
}