mirror of
https://repo.dec05eba.com/gpu-screen-recorder
synced 2026-05-07 15:19:55 +09:00
Implement vulkan video capture (h264, hevc and av1)
This commit is contained in:
52
src/defs.c
52
src/defs.c
@@ -2,10 +2,11 @@
|
||||
#include <assert.h>
|
||||
|
||||
bool video_codec_is_hdr(gsr_video_codec video_codec) {
|
||||
// TODO: Vulkan
|
||||
switch(video_codec) {
|
||||
case GSR_VIDEO_CODEC_HEVC_HDR:
|
||||
case GSR_VIDEO_CODEC_AV1_HDR:
|
||||
case GSR_VIDEO_CODEC_HEVC_HDR_VULKAN:
|
||||
case GSR_VIDEO_CODEC_AV1_HDR_VULKAN:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
@@ -13,24 +14,30 @@ bool video_codec_is_hdr(gsr_video_codec video_codec) {
|
||||
}
|
||||
|
||||
gsr_video_codec hdr_video_codec_to_sdr_video_codec(gsr_video_codec video_codec) {
|
||||
// TODO: Vulkan
|
||||
switch(video_codec) {
|
||||
case GSR_VIDEO_CODEC_HEVC_HDR:
|
||||
return GSR_VIDEO_CODEC_HEVC;
|
||||
case GSR_VIDEO_CODEC_AV1_HDR:
|
||||
return GSR_VIDEO_CODEC_AV1;
|
||||
case GSR_VIDEO_CODEC_HEVC_HDR_VULKAN:
|
||||
return GSR_VIDEO_CODEC_HEVC_VULKAN;
|
||||
case GSR_VIDEO_CODEC_AV1_HDR_VULKAN:
|
||||
return GSR_VIDEO_CODEC_AV1_VULKAN;
|
||||
default:
|
||||
return video_codec;
|
||||
}
|
||||
}
|
||||
|
||||
gsr_color_depth video_codec_to_bit_depth(gsr_video_codec video_codec) {
|
||||
// TODO: 10-bit Vulkan
|
||||
switch(video_codec) {
|
||||
case GSR_VIDEO_CODEC_HEVC_HDR:
|
||||
case GSR_VIDEO_CODEC_HEVC_10BIT:
|
||||
case GSR_VIDEO_CODEC_AV1_HDR:
|
||||
case GSR_VIDEO_CODEC_AV1_10BIT:
|
||||
case GSR_VIDEO_CODEC_HEVC_HDR_VULKAN:
|
||||
case GSR_VIDEO_CODEC_HEVC_10BIT_VULKAN:
|
||||
case GSR_VIDEO_CODEC_AV1_HDR_VULKAN:
|
||||
case GSR_VIDEO_CODEC_AV1_10BIT_VULKAN:
|
||||
return GSR_COLOR_DEPTH_10_BITS;
|
||||
default:
|
||||
return GSR_COLOR_DEPTH_8_BITS;
|
||||
@@ -39,28 +46,34 @@ gsr_color_depth video_codec_to_bit_depth(gsr_video_codec video_codec) {
|
||||
|
||||
const char* video_codec_to_string(gsr_video_codec video_codec) {
|
||||
switch(video_codec) {
|
||||
case GSR_VIDEO_CODEC_H264: return "h264";
|
||||
case GSR_VIDEO_CODEC_HEVC: return "hevc";
|
||||
case GSR_VIDEO_CODEC_HEVC_HDR: return "hevc_hdr";
|
||||
case GSR_VIDEO_CODEC_HEVC_10BIT: return "hevc_10bit";
|
||||
case GSR_VIDEO_CODEC_AV1: return "av1";
|
||||
case GSR_VIDEO_CODEC_AV1_HDR: return "av1_hdr";
|
||||
case GSR_VIDEO_CODEC_AV1_10BIT: return "av1_10bit";
|
||||
case GSR_VIDEO_CODEC_VP8: return "vp8";
|
||||
case GSR_VIDEO_CODEC_VP9: return "vp9";
|
||||
case GSR_VIDEO_CODEC_H264_VULKAN: return "h264_vulkan";
|
||||
case GSR_VIDEO_CODEC_HEVC_VULKAN: return "hevc_vulkan";
|
||||
case GSR_VIDEO_CODEC_H264: return "h264";
|
||||
case GSR_VIDEO_CODEC_HEVC: return "hevc";
|
||||
case GSR_VIDEO_CODEC_HEVC_HDR: return "hevc_hdr";
|
||||
case GSR_VIDEO_CODEC_HEVC_10BIT: return "hevc_10bit";
|
||||
case GSR_VIDEO_CODEC_AV1: return "av1";
|
||||
case GSR_VIDEO_CODEC_AV1_HDR: return "av1_hdr";
|
||||
case GSR_VIDEO_CODEC_AV1_10BIT: return "av1_10bit";
|
||||
case GSR_VIDEO_CODEC_VP8: return "vp8";
|
||||
case GSR_VIDEO_CODEC_VP9: return "vp9";
|
||||
case GSR_VIDEO_CODEC_H264_VULKAN: return "h264_vulkan";
|
||||
case GSR_VIDEO_CODEC_HEVC_VULKAN: return "hevc_vulkan";
|
||||
case GSR_VIDEO_CODEC_HEVC_HDR_VULKAN: return "hevc_hdr_vulkan";
|
||||
case GSR_VIDEO_CODEC_HEVC_10BIT_VULKAN: return "hevc_10bit_vulkan";
|
||||
case GSR_VIDEO_CODEC_AV1_VULKAN: return "av1_vulkan";
|
||||
case GSR_VIDEO_CODEC_AV1_HDR_VULKAN: return "av1_hdr_vulkan";
|
||||
case GSR_VIDEO_CODEC_AV1_10BIT_VULKAN: return "av1_10bit_vulkan";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
// bool video_codec_is_hevc(gsr_video_codec video_codec) {
|
||||
// // TODO: 10-bit vulkan
|
||||
// switch(video_codec) {
|
||||
// case GSR_VIDEO_CODEC_HEVC:
|
||||
// case GSR_VIDEO_CODEC_HEVC_HDR:
|
||||
// case GSR_VIDEO_CODEC_HEVC_10BIT:
|
||||
// case GSR_VIDEO_CODEC_HEVC_VULKAN:
|
||||
// case GSR_VIDEO_CODEC_HEVC_HDR_VULKAN:
|
||||
// case GSR_VIDEO_CODEC_HEVC_10BIT_VULKAN:
|
||||
// return true;
|
||||
// default:
|
||||
// return false;
|
||||
@@ -68,11 +81,13 @@ const char* video_codec_to_string(gsr_video_codec video_codec) {
|
||||
// }
|
||||
|
||||
bool video_codec_is_av1(gsr_video_codec video_codec) {
|
||||
// TODO: Vulkan
|
||||
switch(video_codec) {
|
||||
case GSR_VIDEO_CODEC_AV1:
|
||||
case GSR_VIDEO_CODEC_AV1_HDR:
|
||||
case GSR_VIDEO_CODEC_AV1_10BIT:
|
||||
case GSR_VIDEO_CODEC_AV1_VULKAN:
|
||||
case GSR_VIDEO_CODEC_AV1_HDR_VULKAN:
|
||||
case GSR_VIDEO_CODEC_AV1_10BIT_VULKAN:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
@@ -83,6 +98,11 @@ bool video_codec_is_vulkan(gsr_video_codec video_codec) {
|
||||
switch(video_codec) {
|
||||
case GSR_VIDEO_CODEC_H264_VULKAN:
|
||||
case GSR_VIDEO_CODEC_HEVC_VULKAN:
|
||||
case GSR_VIDEO_CODEC_HEVC_HDR_VULKAN:
|
||||
case GSR_VIDEO_CODEC_HEVC_10BIT_VULKAN:
|
||||
case GSR_VIDEO_CODEC_AV1_VULKAN:
|
||||
case GSR_VIDEO_CODEC_AV1_HDR_VULKAN:
|
||||
case GSR_VIDEO_CODEC_AV1_10BIT_VULKAN:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user