mirror of
https://github.com/nestriness/warp.git
synced 2025-12-15 19:35:37 +02:00
init
This commit is contained in:
70
wayland-display-core/README.md
Normal file
70
wayland-display-core/README.md
Normal file
@@ -0,0 +1,70 @@
|
||||
# gst-wayland-display
|
||||
|
||||
A micro Wayland compositor that can be used as a Gstreamer plugin
|
||||
|
||||
## Install
|
||||
|
||||
see [cargo-c](https://github.com/lu-zero/cargo-c)
|
||||
|
||||
```bash
|
||||
git clone ...
|
||||
cd gst-wayland-display
|
||||
cargo cinstall --prefix=/usr/local
|
||||
```
|
||||
|
||||
## GStreamer plugin
|
||||
|
||||
TODO
|
||||
|
||||
## C Bindings
|
||||
|
||||
CmakeLists.txt
|
||||
|
||||
```cmake
|
||||
pkg_check_modules(libgstwaylanddisplay REQUIRED IMPORTED_TARGET libgstwaylanddisplay)
|
||||
target_link_libraries(<YOUR_PROJECT_HERE> PUBLIC PkgConfig::libgstwaylanddisplay)
|
||||
```
|
||||
|
||||
Include in your code:
|
||||
|
||||
```c
|
||||
#include <libgstwaylanddisplay/libgstwaylanddisplay.h>
|
||||
```
|
||||
|
||||
Example usage:
|
||||
|
||||
```c++
|
||||
auto w_state = display_init("/dev/dri/renderD128"); // Pass a render node
|
||||
|
||||
display_add_input_device(w_state, "/dev/input/event20"); // Mouse
|
||||
display_add_input_device(w_state, "/dev/input/event21"); // Keyboard
|
||||
|
||||
// Setting video as 1920x1080@60
|
||||
auto video_info = gst_caps_new_simple("video/x-raw",
|
||||
"width", G_TYPE_INT, 1920,
|
||||
"height", G_TYPE_INT, 1080,
|
||||
"framerate", GST_TYPE_FRACTION, 60, 1,
|
||||
"format", G_TYPE_STRING, "RGBx",
|
||||
NULL);
|
||||
display_set_video_info(w_state, video_info);
|
||||
|
||||
// Get a list of the devices needed, ex: ["/dev/dri/renderD128", "/dev/dri/card0"]
|
||||
auto n_devices = display_get_devices_len(w_state);
|
||||
const char *devs[n_devices];
|
||||
display_get_devices(w_state, devs, n_devices);
|
||||
|
||||
// Get a list of the env vars needed, notably the wayland socket
|
||||
// ex: ["WAYLAND_DISPLAY=wayland-1"]
|
||||
auto n_envs = display_get_envvars_len(w_state);
|
||||
const char *envs[n_envs];
|
||||
display_get_envvars(w_state, envs, n_envs);
|
||||
|
||||
// Example of polling for new video data
|
||||
GstBuffer * v_buffer;
|
||||
while(true){
|
||||
v_buffer = display_get_frame(w_state);
|
||||
// TODO: do something with the video data
|
||||
}
|
||||
|
||||
display_finish(w_state); // Cleanup
|
||||
```
|
||||
Reference in New Issue
Block a user