From 55badab13d0ca9df5ef4a958e66655babb0c8122 Mon Sep 17 00:00:00 2001 From: Marijn Suijten Date: Wed, 25 Nov 2020 11:49:59 +0100 Subject: [PATCH] gl: Add X11/EGL/Wayland API back based on separate -sys crates MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sebastian Dröge --- Cargo.toml | 6 ++++ gstreamer-gl/Cargo.toml | 3 -- gstreamer-gl/Gir.toml | 18 ----------- gstreamer-gl/egl/Cargo.toml | 37 +++++++++++++++++++++ gstreamer-gl/egl/Gir.toml | 53 +++++++++++++++++++++++++++++++ gstreamer-gl/egl/sys/Gir.toml | 22 +++++++++++++ gstreamer-gl/sys/Cargo.toml | 3 -- gstreamer-gl/sys/Gir.toml | 48 ---------------------------- gstreamer-gl/wayland/Cargo.toml | 37 +++++++++++++++++++++ gstreamer-gl/wayland/Gir.toml | 53 +++++++++++++++++++++++++++++++ gstreamer-gl/wayland/sys/Gir.toml | 22 +++++++++++++ gstreamer-gl/x11/Cargo.toml | 37 +++++++++++++++++++++ gstreamer-gl/x11/Gir.toml | 53 +++++++++++++++++++++++++++++++ gstreamer-gl/x11/sys/Gir.toml | 22 +++++++++++++ 14 files changed, 342 insertions(+), 72 deletions(-) create mode 100644 gstreamer-gl/egl/Cargo.toml create mode 100644 gstreamer-gl/egl/Gir.toml create mode 100644 gstreamer-gl/egl/sys/Gir.toml create mode 100644 gstreamer-gl/wayland/Cargo.toml create mode 100644 gstreamer-gl/wayland/Gir.toml create mode 100644 gstreamer-gl/wayland/sys/Gir.toml create mode 100644 gstreamer-gl/x11/Cargo.toml create mode 100644 gstreamer-gl/x11/Gir.toml create mode 100644 gstreamer-gl/x11/sys/Gir.toml diff --git a/Cargo.toml b/Cargo.toml index b7e12cd58..5b4d1b554 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,6 +9,9 @@ members = [ "gstreamer-controller/sys", "gstreamer-editing-services/sys", "gstreamer-gl/sys", + "gstreamer-gl/egl/sys", + "gstreamer-gl/wayland/sys", + "gstreamer-gl/x11/sys", "gstreamer-mpegts/sys", "gstreamer-net/sys", "gstreamer-pbutils/sys", @@ -28,6 +31,9 @@ members = [ "gstreamer-controller", "gstreamer-editing-services", "gstreamer-gl", + "gstreamer-gl/egl", + "gstreamer-gl/wayland", + "gstreamer-gl/x11", "gstreamer-net", "gstreamer-pbutils", "gstreamer-player", diff --git a/gstreamer-gl/Cargo.toml b/gstreamer-gl/Cargo.toml index 3b5dab853..b64ac5c09 100644 --- a/gstreamer-gl/Cargo.toml +++ b/gstreamer-gl/Cargo.toml @@ -31,9 +31,6 @@ gstreamer-rs-lgpl-docs = { path = "../docs", optional = true } [features] default = [] dox = ["v1_18", "ffi/dox", "glib/dox", "gst/dox", "gst-base/dox", "gst-video/dox"] -egl = ["ffi/egl"] -x11 = ["ffi/x11"] -wayland = ["ffi/wayland"] embed-lgpl-docs = ["gstreamer-rs-lgpl-docs"] purge-lgpl-docs = ["gstreamer-rs-lgpl-docs"] v1_16 = ["gst/v1_16", "gst-base/v1_16", "gst-video/v1_16", "ffi/v1_16"] diff --git a/gstreamer-gl/Gir.toml b/gstreamer-gl/Gir.toml index 856c93e0a..7d435743f 100644 --- a/gstreamer-gl/Gir.toml +++ b/gstreamer-gl/Gir.toml @@ -186,24 +186,6 @@ status = "generate" [object.function.return] nullable_return_is_error = "Failed to create window" -[[object]] -name = "GstGL.GLDisplayEGL" -status = "generate" -final_type = true -cfg_condition = "feature = \"egl\"" - -[[object]] -name = "GstGL.GLDisplayX11" -status = "generate" -final_type = true -cfg_condition = "feature = \"x11\"" - -[[object]] -name = "GstGL.GLDisplayWayland" -status = "generate" -final_type = true -cfg_condition = "feature = \"wayland\"" - [[object]] name = "GstGL.GLWindow" status = "generate" diff --git a/gstreamer-gl/egl/Cargo.toml b/gstreamer-gl/egl/Cargo.toml new file mode 100644 index 000000000..56bb4af34 --- /dev/null +++ b/gstreamer-gl/egl/Cargo.toml @@ -0,0 +1,37 @@ +[package] +name = "gstreamer-gl-egl" +version = "0.17.0" +authors = ["Sebastian Dröge ", + "Víctor M. Jáquez L. "] +categories = ["api-bindings", "multimedia"] +description = "Rust bindings for GStreamer GLEGL library" +repository = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs" +license = "MIT/Apache-2.0" +readme = "README.md" +homepage = "https://gstreamer.freedesktop.org" +documentation = "https://gstreamer.pages.freedesktop.org/gstreamer-rs/gstreamer_gl/" +keywords = ["gstreamer", "multimedia", "audio", "video", "gnome"] +build = "../build.rs" +edition = "2018" + +[dependencies] +libc = "0.2" +ffi = { package = "gst-glegl-sys", path = "sys" } + +glib = { git = "https://github.com/gtk-rs/gtk-rs" } +gst = { package = "gstreamer", path = "../../gstreamer", features = ["v1_14"] } +gst-gl = { package = "gstreamer-gl", path = "../" } + +[build-dependencies] +gstreamer-rs-lgpl-docs = { path = "../../docs", optional = true } + +[features] +default = [] +dox = ["v1_18", "ffi/dox", "glib/dox", "gst/dox", "gst-gl/dox"] +embed-lgpl-docs = ["gstreamer-rs-lgpl-docs"] +purge-lgpl-docs = ["gstreamer-rs-lgpl-docs"] +v1_16 = ["gst/v1_16", "gst-gl/v1_16", "ffi/v1_16"] +v1_18 = ["gst/v1_18", "gst-gl/v1_18", "ffi/v1_18", "v1_16"] + +[package.metadata.docs.rs] +features = ["embed-lgpl-docs"] diff --git a/gstreamer-gl/egl/Gir.toml b/gstreamer-gl/egl/Gir.toml new file mode 100644 index 000000000..0b1575bc7 --- /dev/null +++ b/gstreamer-gl/egl/Gir.toml @@ -0,0 +1,53 @@ +[options] +girs_dir = "../../gir-files" +library = "GstGLEGL" +version = "1.0" +min_cfg_version = "1.14" +work_mode = "normal" +concurrency = "send+sync" +generate_safety_asserts = true +single_version_file = true +generate_display_trait = false + +external_libraries = [ + "GLib", + "GObject", + "Gst", + "GstBase", + "GstVideo", + "GstGL", +] + +generate = [ + "GstGLEGL.GLDisplayEGL", +] + +manual = [ + "GLib.Error", + "GLib.Thread", + "GObject.Object", + "Gst.Object", + "Gst.FlowReturn", + "Gst.PadDirection", + "GstGL.GLDisplay", +] + +[[object]] +name = "Gst.Structure" +status = "manual" +ref_mode = "ref-mut" + +[[object]] +name = "Gst.Buffer" +status = "manual" +ref_mode = "ref" + +[[object]] +name = "Gst.Caps" +status = "manual" +ref_mode = "ref" + +[[object]] +name = "Gst.Query" +status = "manual" +ref_mode = "ref" diff --git a/gstreamer-gl/egl/sys/Gir.toml b/gstreamer-gl/egl/sys/Gir.toml new file mode 100644 index 000000000..1f32e998d --- /dev/null +++ b/gstreamer-gl/egl/sys/Gir.toml @@ -0,0 +1,22 @@ +[options] +girs_dir = "../../../gir-files" +library = "GstGLEGL" +min_cfg_version = "1.14" +version = "1.0" +work_mode = "sys" + +extra_versions = [ + "1.18", + "1.16", +] + +external_libraries = [ + "GLib", +] + +generate = [ + "GstGLEGL.GLDisplayEGL", +] + +[external_libraries] +gstreamer-gl = "GstGL" diff --git a/gstreamer-gl/sys/Cargo.toml b/gstreamer-gl/sys/Cargo.toml index 2d929f9e6..a8ba9c87c 100644 --- a/gstreamer-gl/sys/Cargo.toml +++ b/gstreamer-gl/sys/Cargo.toml @@ -28,9 +28,6 @@ tempfile = "3" [features] dox = [] -egl = [] -x11 = [] -wayland = [] v1_16 = [] v1_18 = ["v1_16"] diff --git a/gstreamer-gl/sys/Gir.toml b/gstreamer-gl/sys/Gir.toml index 02c313dc3..672725616 100644 --- a/gstreamer-gl/sys/Gir.toml +++ b/gstreamer-gl/sys/Gir.toml @@ -11,7 +11,6 @@ extra_versions = [ ] ignore = [ - "GstGL.GL_DISPLAY_EGL_NAME", "GstGL.GL_COLOR_CONVERT_VIDEO_CAPS", "GstGL.GL_COLOR_CONVERT_FORMATS", "GstGL.GL_MEMORY_VIDEO_FORMATS_STR", @@ -27,53 +26,6 @@ gstreamer="Gst" gstreamer-base="GstBase" gstreamer-video="GstVideo" -[[object]] -name = "GstGL.GLDisplayEGL" -status = "generate" -cfg_condition = "feature = \"egl\"" - [[object.function]] - pattern = ".*" - cfg_condition = "feature = \"egl\"" - -[[object]] -name = "GstGL.GLDisplayEGLClass" -status = "generate" -cfg_condition = "feature = \"egl\"" - -#[[object]] -#name = "GstGL.GL_DISPLAY_EGL_NAME" -#status = "manual" -#cfg_condition = "feature = \"egl\"" -# [[object.constant]] -# pattern = ".*" -# cfg_condition = "feature = \"egl\"" - #[[object]] #name = "GstGL.GL_COLOR_CONVERT_VIDEO_CAPS" #status = "manual" - -[[object]] -name = "GstGL.GLDisplayX11" -status = "generate" -cfg_condition = "feature = \"x11\"" - [[object.function]] - pattern = ".*" - cfg_condition = "feature = \"x11\"" - -[[object]] -name = "GstGL.GLDisplayX11Class" -status = "generate" -cfg_condition = "feature = \"x11\"" - -[[object]] -name = "GstGL.GLDisplayWayland" -status = "generate" -cfg_condition = "feature = \"wayland\"" - [[object.function]] - pattern = ".*" - cfg_condition = "feature = \"wayland\"" - -[[object]] -name = "GstGL.GLDisplayWaylandClass" -status = "generate" -cfg_condition = "feature = \"wayland\"" diff --git a/gstreamer-gl/wayland/Cargo.toml b/gstreamer-gl/wayland/Cargo.toml new file mode 100644 index 000000000..34be73815 --- /dev/null +++ b/gstreamer-gl/wayland/Cargo.toml @@ -0,0 +1,37 @@ +[package] +name = "gstreamer-gl-wayland" +version = "0.17.0" +authors = ["Sebastian Dröge ", + "Víctor M. Jáquez L. "] +categories = ["api-bindings", "multimedia"] +description = "Rust bindings for GStreamer GL Wayland library" +repository = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs" +license = "MIT/Apache-2.0" +readme = "README.md" +homepage = "https://gstreamer.freedesktop.org" +documentation = "https://gstreamer.pages.freedesktop.org/gstreamer-rs/gstreamer_gl/" +keywords = ["gstreamer", "multimedia", "audio", "video", "gnome"] +build = "../build.rs" +edition = "2018" + +[dependencies] +libc = "0.2" +ffi = { package = "gst-gl-wayland-sys", path = "sys" } + +glib = { git = "https://github.com/gtk-rs/gtk-rs" } +gst = { package = "gstreamer", path = "../../gstreamer", features = ["v1_14"] } +gst-gl = { package = "gstreamer-gl", path = "../" } + +[build-dependencies] +gstreamer-rs-lgpl-docs = { path = "../../docs", optional = true } + +[features] +default = [] +dox = ["v1_18", "ffi/dox", "glib/dox", "gst/dox", "gst-gl/dox"] +embed-lgpl-docs = ["gstreamer-rs-lgpl-docs"] +purge-lgpl-docs = ["gstreamer-rs-lgpl-docs"] +v1_16 = ["gst/v1_16", "gst-gl/v1_16", "ffi/v1_16"] +v1_18 = ["gst/v1_18", "gst-gl/v1_18", "ffi/v1_18", "v1_16"] + +[package.metadata.docs.rs] +features = ["embed-lgpl-docs"] diff --git a/gstreamer-gl/wayland/Gir.toml b/gstreamer-gl/wayland/Gir.toml new file mode 100644 index 000000000..38da7ce0e --- /dev/null +++ b/gstreamer-gl/wayland/Gir.toml @@ -0,0 +1,53 @@ +[options] +girs_dir = "../../gir-files" +library = "GstGLWayland" +version = "1.0" +min_cfg_version = "1.14" +work_mode = "normal" +concurrency = "send+sync" +generate_safety_asserts = true +single_version_file = true +generate_display_trait = false + +external_libraries = [ + "GLib", + "GObject", + "Gst", + "GstBase", + "GstVideo", + "GstGL", +] + +generate = [ + "GstGLWayland.GLDisplayWayland", +] + +manual = [ + "GLib.Error", + "GLib.Thread", + "GObject.Object", + "Gst.Object", + "Gst.FlowReturn", + "Gst.PadDirection", + "GstGL.GLDisplay", +] + +[[object]] +name = "Gst.Structure" +status = "manual" +ref_mode = "ref-mut" + +[[object]] +name = "Gst.Buffer" +status = "manual" +ref_mode = "ref" + +[[object]] +name = "Gst.Caps" +status = "manual" +ref_mode = "ref" + +[[object]] +name = "Gst.Query" +status = "manual" +ref_mode = "ref" diff --git a/gstreamer-gl/wayland/sys/Gir.toml b/gstreamer-gl/wayland/sys/Gir.toml new file mode 100644 index 000000000..1ac40d804 --- /dev/null +++ b/gstreamer-gl/wayland/sys/Gir.toml @@ -0,0 +1,22 @@ +[options] +girs_dir = "../../../gir-files" +library = "GstGLWayland" +min_cfg_version = "1.14" +version = "1.0" +work_mode = "sys" + +extra_versions = [ + "1.18", + "1.16", +] + +external_libraries = [ + "GLib", +] + +generate = [ + "GstGLWayland.GLDisplayWayland", +] + +[external_libraries] +gstreamer-gl = "GstGL" diff --git a/gstreamer-gl/x11/Cargo.toml b/gstreamer-gl/x11/Cargo.toml new file mode 100644 index 000000000..aff26427c --- /dev/null +++ b/gstreamer-gl/x11/Cargo.toml @@ -0,0 +1,37 @@ +[package] +name = "gstreamer-gl-x11" +version = "0.17.0" +authors = ["Sebastian Dröge ", + "Víctor M. Jáquez L. "] +categories = ["api-bindings", "multimedia"] +description = "Rust bindings for GStreamer GL X11 library" +repository = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs" +license = "MIT/Apache-2.0" +readme = "README.md" +homepage = "https://gstreamer.freedesktop.org" +documentation = "https://gstreamer.pages.freedesktop.org/gstreamer-rs/gstreamer_gl/" +keywords = ["gstreamer", "multimedia", "audio", "video", "gnome"] +build = "../build.rs" +edition = "2018" + +[dependencies] +libc = "0.2" +ffi = { package = "gst-glx11-sys", path = "sys" } + +glib = { git = "https://github.com/gtk-rs/gtk-rs" } +gst = { package = "gstreamer", path = "../../gstreamer", features = ["v1_14"] } +gst-gl = { package = "gstreamer-gl", path = "../" } + +[build-dependencies] +gstreamer-rs-lgpl-docs = { path = "../../docs", optional = true } + +[features] +default = [] +dox = ["v1_18", "ffi/dox", "glib/dox", "gst/dox", "gst-gl/dox"] +embed-lgpl-docs = ["gstreamer-rs-lgpl-docs"] +purge-lgpl-docs = ["gstreamer-rs-lgpl-docs"] +v1_16 = ["gst/v1_16", "gst-gl/v1_16", "ffi/v1_16"] +v1_18 = ["gst/v1_18", "gst-gl/v1_18", "ffi/v1_18", "v1_16"] + +[package.metadata.docs.rs] +features = ["embed-lgpl-docs"] diff --git a/gstreamer-gl/x11/Gir.toml b/gstreamer-gl/x11/Gir.toml new file mode 100644 index 000000000..1c1725fa5 --- /dev/null +++ b/gstreamer-gl/x11/Gir.toml @@ -0,0 +1,53 @@ +[options] +girs_dir = "../../gir-files" +library = "GstGLX11" +version = "1.0" +min_cfg_version = "1.14" +work_mode = "normal" +concurrency = "send+sync" +generate_safety_asserts = true +single_version_file = true +generate_display_trait = false + +external_libraries = [ + "GLib", + "GObject", + "Gst", + "GstBase", + "GstVideo", + "GstGL", +] + +generate = [ + "GstGLX11.GLDisplayX11", +] + +manual = [ + "GLib.Error", + "GLib.Thread", + "GObject.Object", + "Gst.Object", + "Gst.FlowReturn", + "Gst.PadDirection", + "GstGL.GLDisplay", +] + +[[object]] +name = "Gst.Structure" +status = "manual" +ref_mode = "ref-mut" + +[[object]] +name = "Gst.Buffer" +status = "manual" +ref_mode = "ref" + +[[object]] +name = "Gst.Caps" +status = "manual" +ref_mode = "ref" + +[[object]] +name = "Gst.Query" +status = "manual" +ref_mode = "ref" diff --git a/gstreamer-gl/x11/sys/Gir.toml b/gstreamer-gl/x11/sys/Gir.toml new file mode 100644 index 000000000..c6ce8adc1 --- /dev/null +++ b/gstreamer-gl/x11/sys/Gir.toml @@ -0,0 +1,22 @@ +[options] +girs_dir = "../../../gir-files" +library = "GstGLX11" +min_cfg_version = "1.14" +version = "1.0" +work_mode = "sys" + +extra_versions = [ + "1.18", + "1.16", +] + +external_libraries = [ + "GLib", +] + +generate = [ + "GstGLX11.GLDisplayX11", +] + +[external_libraries] +gstreamer-gl = "GstGL"