aboutsummaryrefslogtreecommitdiff
path: root/include/capture
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2022-10-14 01:16:31 +0200
committerdec05eba <dec05eba@protonmail.com>2022-10-14 01:22:43 +0200
commit93d46b976730bced7a70be1617a0171600167314 (patch)
tree63580cf3ec44425531f95547c54c2ae519a1da00 /include/capture
parent9d65552d057a7a629ead9758f7627f0c7879bf4a (diff)
Refactor nvfbc into abstract capture api
Diffstat (limited to 'include/capture')
-rw-r--r--include/capture/capture.h25
-rw-r--r--include/capture/nvfbc.h17
2 files changed, 42 insertions, 0 deletions
diff --git a/include/capture/capture.h b/include/capture/capture.h
new file mode 100644
index 0000000..9e23a23
--- /dev/null
+++ b/include/capture/capture.h
@@ -0,0 +1,25 @@
+#ifndef GSR_CAPTURE_CAPTURE_H
+#define GSR_CAPTURE_CAPTURE_H
+
+#include <stdbool.h>
+
+typedef struct AVFrame AVFrame;
+
+typedef struct gsr_capture gsr_capture;
+
+struct gsr_capture {
+ int (*start)(gsr_capture *cap);
+ void (*stop)(gsr_capture *cap);
+ int (*capture)(gsr_capture *cap, AVFrame *frame);
+ void (*destroy)(gsr_capture *cap);
+
+ void *priv;
+};
+
+int gsr_capture_start(gsr_capture *cap);
+void gsr_capture_stop(gsr_capture *cap);
+int gsr_capture_capture(gsr_capture *cap, AVFrame *frame);
+/* Calls |gsr_capture_stop| as well */
+void gsr_capture_destroy(gsr_capture *cap);
+
+#endif /* GSR_CAPTURE_CAPTURE_H */
diff --git a/include/capture/nvfbc.h b/include/capture/nvfbc.h
new file mode 100644
index 0000000..b749b87
--- /dev/null
+++ b/include/capture/nvfbc.h
@@ -0,0 +1,17 @@
+#ifndef GSR_CAPTURE_NVFBC_H
+#define GSR_CAPTURE_NVFBC_H
+
+#include "capture.h"
+#include "../vec2.h"
+
+typedef struct {
+ const char *display_to_capture; /* if this is "screen", then the entire x11 screen is captured (all displays) */
+ int fps;
+ vec2i pos;
+ vec2i size;
+ bool direct_capture; /* temporary disabled */
+} gsr_capture_nvfbc_params;
+
+gsr_capture* gsr_capture_nvfbc_create(const gsr_capture_nvfbc_params *params);
+
+#endif /* GSR_CAPTURE_NVFBC_H */