diff options
author | dec05eba <dec05eba@protonmail.com> | 2023-04-07 05:31:46 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2023-04-07 05:31:46 +0200 |
commit | 75ed160122bc923731ae1d005d789608a4cdb2fb (patch) | |
tree | 97a07ea8aaeb23cc8b2f94e11da7ebf703fbc3a3 /include/kms | |
parent | 10d7bf93e864fc6b3c83ad7a913ea05d39256c03 (diff) |
Implement kms vaapi capture
Diffstat (limited to 'include/kms')
-rw-r--r-- | include/kms/kms_client.h | 21 | ||||
-rw-r--r-- | include/kms/kms_shared.h | 45 |
2 files changed, 66 insertions, 0 deletions
diff --git a/include/kms/kms_client.h b/include/kms/kms_client.h new file mode 100644 index 0000000..bb4325b --- /dev/null +++ b/include/kms/kms_client.h @@ -0,0 +1,21 @@ +#ifndef GSR_KMS_CLIENT_H +#define GSR_KMS_CLIENT_H + +#include "kms_shared.h" +#include <sys/types.h> + +typedef struct { + pid_t kms_server_pid; + int socket_fd; + int client_fd; + char socket_path[27]; + char *card_path; +} gsr_kms_client; + +/* |card_path| should be a path to card, for example /dev/dri/card0 */ +int gsr_kms_client_init(gsr_kms_client *self, const char *card_path, const char *program_dir); +void gsr_kms_client_deinit(gsr_kms_client *self); + +int gsr_kms_client_get_kms(gsr_kms_client *self, gsr_kms_response *response); + +#endif /* #define GSR_KMS_CLIENT_H */ diff --git a/include/kms/kms_shared.h b/include/kms/kms_shared.h new file mode 100644 index 0000000..f63c2f3 --- /dev/null +++ b/include/kms/kms_shared.h @@ -0,0 +1,45 @@ +#ifndef GSR_KMS_SHARED_H +#define GSR_KMS_SHARED_H + +#include <stdint.h> + +typedef enum { + KMS_REQUEST_TYPE_GET_KMS +} gsr_kms_request_type; + +typedef enum { + KMS_RESULT_OK, + KMS_RESULT_INVALID_REQUEST, + KMS_RESULT_FAILED_TO_OPEN_CARD, + KMS_RESULT_INSUFFICIENT_PERMISSIONS, + KMS_RESULT_FAILED_TO_GET_KMS, + KMS_RESULT_NO_KMS_AVAILABLE, + KMS_RESULT_FAILED_TO_SEND +} gsr_kms_result; + +typedef struct { + int type; /* gsr_kms_request_type */ + union { + char card_path[255]; + } data; +} gsr_kms_request; + +typedef struct { + int fd; + uint32_t width; + uint32_t height; + uint32_t pitch; + uint32_t offset; + uint32_t pixel_format; + uint64_t modifier; +} gsr_kms_response_fd; + +typedef struct { + int result; /* gsr_kms_result */ + union { + char err_msg[128]; + gsr_kms_response_fd fd; + } data; +} gsr_kms_response; + +#endif /* #define GSR_KMS_SHARED_H */ |