From dd23ac7093d36b820ab476884fb0b42999fc44f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Sun, 29 Nov 2020 11:42:24 +0200 Subject: [PATCH] gstreamer-gl: Fix/extend cargo metadata and add README.md for new EGL/Wayland/X11 sub-crates --- gstreamer-gl/egl/Cargo.toml | 4 +- gstreamer-gl/egl/README.md | 184 ++++++++++++++++++++++++++++ gstreamer-gl/egl/sys/Cargo.toml | 12 +- gstreamer-gl/egl/sys/README.md | 31 +++++ gstreamer-gl/wayland/Cargo.toml | 4 +- gstreamer-gl/wayland/README.md | 184 ++++++++++++++++++++++++++++ gstreamer-gl/wayland/sys/Cargo.toml | 12 +- gstreamer-gl/wayland/sys/README.md | 31 +++++ gstreamer-gl/x11/Cargo.toml | 4 +- gstreamer-gl/x11/README.md | 184 ++++++++++++++++++++++++++++ gstreamer-gl/x11/sys/Cargo.toml | 12 +- gstreamer-gl/x11/sys/README.md | 31 +++++ 12 files changed, 681 insertions(+), 12 deletions(-) create mode 100644 gstreamer-gl/egl/README.md create mode 100644 gstreamer-gl/egl/sys/README.md create mode 100644 gstreamer-gl/wayland/README.md create mode 100644 gstreamer-gl/wayland/sys/README.md create mode 100644 gstreamer-gl/x11/README.md create mode 100644 gstreamer-gl/x11/sys/README.md diff --git a/gstreamer-gl/egl/Cargo.toml b/gstreamer-gl/egl/Cargo.toml index 7a666f984..d6a6c3779 100644 --- a/gstreamer-gl/egl/Cargo.toml +++ b/gstreamer-gl/egl/Cargo.toml @@ -4,12 +4,12 @@ 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" +description = "Rust bindings for GStreamer GL library (EGL support)" 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/" +documentation = "https://gstreamer.pages.freedesktop.org/gstreamer-rs/gstreamer_gl_egl/" keywords = ["gstreamer", "multimedia", "audio", "video", "gnome"] build = "../build.rs" edition = "2018" diff --git a/gstreamer-gl/egl/README.md b/gstreamer-gl/egl/README.md new file mode 100644 index 000000000..aa58145ee --- /dev/null +++ b/gstreamer-gl/egl/README.md @@ -0,0 +1,184 @@ +# gstreamer-rs [![crates.io](https://img.shields.io/crates/v/gstreamer-gl-egl.svg)](https://crates.io/crates/gstreamer-gl-egl) [![pipeline status](https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/badges/master/pipeline.svg)](https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/commits/master) + +[GStreamer](https://gstreamer.freedesktop.org/) (OpenGL library, EGL support) +bindings for Rust. Documentation can be found +[here](https://slomo.pages.freedesktop.org/rustdocs/gstreamer/gstreamer_gl_egl/). + +These bindings are providing a safe API that can be used to interface with +GStreamer, e.g. for writing GStreamer-based applications and GStreamer plugins. + +The bindings are mostly autogenerated with [gir](https://github.com/gtk-rs/gir/) +based on the [GObject-Introspection](https://wiki.gnome.org/Projects/GObjectIntrospection/) +API metadata provided by the GStreamer project. + +## Table of Contents +1. [Installation](#installation) + 1. [Linux/BSDs](#installation-linux) + 1. [macOS](#installation-macos) + 1. [Windows](#installation-windows) +1. [Getting Started](#getting-started) +1. [License](#license) +1. [Contribution](#contribution) + + + +## Installation + +To build the GStreamer bindings or anything depending on them, you +need to have at least GStreamer 1.14 and gst-plugins-base 1.14 +installed. In addition, some of the examples/tutorials require various +GStreamer plugins to be available, which can be found in +gst-plugins-base, gst-plugins-good, gst-plugins-bad, gst-plugins-ugly +and/or gst-libav. + + + +### Linux/BSDs + +You need to install the above mentioned packages with your distributions +package manager, or build them from source. + +On Debian/Ubuntu they can be installed with + +``` +$ apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \ + gstreamer1.0-plugins-base gstreamer1.0-plugins-good \ + gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly \ + gstreamer1.0-libav libgstrtspserver-1.0-dev +``` + +The minimum required version of the above libraries is >= 1.14. See +the `Cargo.toml` files for the full details, + +Package names on other distributions should be similar. +Please submit a pull request with instructions for yours. + + + +### macOS + +You can install GStreamer and the plugins via [Homebrew](https://brew.sh/) or +by installing the [binaries](https://gstreamer.freedesktop.org/data/pkg/osx/) +provided by the GStreamer project. + +#### Homebrew + +Homebrew only installs various plugins if explicitly enabled, so some extra +`--with-*` flags may be required. + +``` +$ brew install gstreamer gst-plugins-base gst-plugins-good \ + gst-plugins-bad gst-plugins-ugly gst-libav gst-rtsp-server \ + gst-editing-services --with-orc --with-libogg --with-opus \ + --with-pango --with-theora --with-libvorbis --with-libvpx \ + --enable-gtk3 +``` + +Please, make sure the version of these libraries is >= 1.14. + +#### GStreamer Binaries + +You need to download the *two* `.pkg` files from the GStreamer website and +install them, e.g. `gstreamer-1.0-1.14.4-x86_64.pkg` and +`gstreamer-1.0-devel-1.14.4-x86_64.pkg`. + +After installation, you also need to install `pkg-config` (e.g. via Homebrew) +and set the `PKG_CONFIG_PATH` environment variable + +``` +$ export PKG_CONFIG_PATH="/Library/Frameworks/GStreamer.framework/Versions/Current/lib/pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}" +``` + + + +### Windows + +You can install GStreamer and the plugins via [MSYS2](http://www.msys2.org/) +with `pacman` or by installing the +[binaries](https://gstreamer.freedesktop.org/data/pkg/windows/) provided by +the GStreamer project. + +#### MSYS2 / pacman + +``` +$ pacman -S pkg-config mingw-w64-x86_64-gstreamer mingw-w64-x86_64-gst-plugins-base \ + mingw-w64-x86_64-gst-plugins-good mingw-w64-x86_64-gst-plugins-bad \ + mingw-w64-x86_64-gst-plugins-ugly mingw-w64-x86_64-gst-libav \ + mingw-w64-x86_64-gst-rtsp-server +``` + +Please, make sure the version of these libraries is >= 1.14. + +#### GStreamer Binaries + +You need to download the *two* `.msi` files for your platform from the +GStreamer website and install them, e.g. `gstreamer-1.0-x86_64-1.14.4.msi` and +`gstreamer-1.0-devel-x86_64-1.14.4.msi`. + +After installation, you also need to install `pkg-config` (e.g. via MSYS2 or +from [here](https://sourceforge.net/projects/pkgconfiglite/)) +and set the `PKG_CONFIG_PATH` environment variable + +``` +$ export PKG_CONFIG_PATH="c:\\gstreamer\\1.0\\x86_64\\lib\\pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}" +``` + + + +## Getting Started + +The API reference can be found +[here](https://gstreamer.pages.freedesktop.org/gstreamer-rs/gstreamer/index.html), however it is +only the Rust API reference and does not explain any of the concepts. + +For getting started with GStreamer development, the best would be to follow +the [documentation](https://gstreamer.freedesktop.org/documentation/) on the +GStreamer website, especially the [Application Development +Manual](https://gstreamer.freedesktop.org/documentation/application-development/). +While being C-centric, it explains all the fundamental concepts of GStreamer +and the code examples should be relatively easily translatable to Rust. The +API is basically the same, function/struct names are the same and everything +is only more convenient (hopefully) and safer. + +In addition there are +[tutorials](https://gstreamer.freedesktop.org/documentation/tutorials/) on the +GStreamer website. Many of them were ported to Rust already and the code can +be found in the +[tutorials](https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/tree/master/tutorials) +directory. + +Some further examples for various aspects of GStreamer and how to use it from +Rust can be found in the +[examples](https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/tree/master/examples) +directory. + +Various GStreamer plugins written in Rust can be found in the +[gst-plugins-rs](https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs) +repository. + + + +## LICENSE + +gstreamer-rs and all crates contained in here are licensed under either of + + * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or + http://www.apache.org/licenses/LICENSE-2.0) + * MIT license ([LICENSE-MIT](LICENSE-MIT) or + http://opensource.org/licenses/MIT) + +at your option. + +GStreamer itself is licensed under the Lesser General Public License version +2.1 or (at your option) any later version: +https://www.gnu.org/licenses/lgpl-2.1.html + + + +## Contribution + +Any kinds of contributions are welcome as a pull request. + +Unless you explicitly state otherwise, any contribution intentionally submitted +for inclusion in gstreamer-rs by you, as defined in the Apache-2.0 license, shall be +dual licensed as above, without any additional terms or conditions. diff --git a/gstreamer-gl/egl/sys/Cargo.toml b/gstreamer-gl/egl/sys/Cargo.toml index 376bc25f0..4514a667c 100644 --- a/gstreamer-gl/egl/sys/Cargo.toml +++ b/gstreamer-gl/egl/sys/Cargo.toml @@ -1,8 +1,16 @@ [package] +authors = ["Sebastian Dröge "] build = "build.rs" -edition = "2018" +description = "FFI bindings to libgstgl-1.0 (EGL support)" +documentation = "https://gstreamer.pages.freedesktop.org/gstreamer-rs/gstreamer_gl_egl_sys/" +homepage = "https://gstreamer.freedesktop.org" +keywords = ["ffi", "gstreamer", "gnome", "multimedia"] +license = "MIT" name = "gstreamer-gl-egl-sys" -version = "0.0.1" +readme = "README.md" +repository = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs" +version = "0.17.0" +edition = "2018" [package.metadata.system-deps.gstreamer_gl_egl_1_0] name = "gstreamer-gl-1.0" version = "1.14" diff --git a/gstreamer-gl/egl/sys/README.md b/gstreamer-gl/egl/sys/README.md new file mode 100644 index 000000000..32e024f99 --- /dev/null +++ b/gstreamer-gl/egl/sys/README.md @@ -0,0 +1,31 @@ +# gstreamer-sys [![crates.io](https://img.shields.io/crates/v/gstreamer-gl-egl-sys.svg)](https://crates.io/crates/gstreamer-gl-egl-sys) [![pipeline status](https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/badges/master/pipeline.svg)](https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/commits/master) + +[GStreamer](https://gstreamer.freedesktop.org/) (OpenGL library, EGL support) FFI bindings for Rust. + +These bindings are providing unsafe FFI API that can be used to interface with +GStreamer. Generally they are meant to be used as the building block for +higher-level abstractions like: + + * Bindings for GStreamer applications and plugins: https://gitlab.freedesktop.org/gstreamer/gstreamer-rs + * Various GStreamer plugins written in Rust: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs + +The bindings are autogenerated with [gir](https://github.com/gtk-rs/gir/) +based on the [GObject-Introspection](https://wiki.gnome.org/Projects/GObjectIntrospection/) +API metadata provided by the GStreamer project. + +## LICENSE + +gstreamer-sys and all crates contained here are licensed under the MIT +license ([LICENSE](LICENSE) or http://opensource.org/licenses/MIT). + +GStreamer itself is licensed under the Lesser General Public License version +2.1 or (at your option) any later version: +https://www.gnu.org/licenses/lgpl-2.1.html + +## Contribution + +Any kinds of contributions are welcome as a pull request. + +Unless you explicitly state otherwise, any contribution intentionally submitted +for inclusion in gstreamer-rs by you shall be licensed under the MIT license as above, +without any additional terms or conditions. diff --git a/gstreamer-gl/wayland/Cargo.toml b/gstreamer-gl/wayland/Cargo.toml index 5e3f98916..050ef5e62 100644 --- a/gstreamer-gl/wayland/Cargo.toml +++ b/gstreamer-gl/wayland/Cargo.toml @@ -4,12 +4,12 @@ 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" +description = "Rust bindings for GStreamer GL library (Wayland support)" 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/" +documentation = "https://gstreamer.pages.freedesktop.org/gstreamer-rs/gstreamer_gl_wayland/" keywords = ["gstreamer", "multimedia", "audio", "video", "gnome"] build = "../build.rs" edition = "2018" diff --git a/gstreamer-gl/wayland/README.md b/gstreamer-gl/wayland/README.md new file mode 100644 index 000000000..abede1317 --- /dev/null +++ b/gstreamer-gl/wayland/README.md @@ -0,0 +1,184 @@ +# gstreamer-rs [![crates.io](https://img.shields.io/crates/v/gstreamer-gl-wayland.svg)](https://crates.io/crates/gstreamer-gl-wayland) [![pipeline status](https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/badges/master/pipeline.svg)](https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/commits/master) + +[GStreamer](https://gstreamer.freedesktop.org/) (OpenGL library, Wayland support) +bindings for Rust. Documentation can be found +[here](https://slomo.pages.freedesktop.org/rustdocs/gstreamer/gstreamer_gl_wayland/). + +These bindings are providing a safe API that can be used to interface with +GStreamer, e.g. for writing GStreamer-based applications and GStreamer plugins. + +The bindings are mostly autogenerated with [gir](https://github.com/gtk-rs/gir/) +based on the [GObject-Introspection](https://wiki.gnome.org/Projects/GObjectIntrospection/) +API metadata provided by the GStreamer project. + +## Table of Contents +1. [Installation](#installation) + 1. [Linux/BSDs](#installation-linux) + 1. [macOS](#installation-macos) + 1. [Windows](#installation-windows) +1. [Getting Started](#getting-started) +1. [License](#license) +1. [Contribution](#contribution) + + + +## Installation + +To build the GStreamer bindings or anything depending on them, you +need to have at least GStreamer 1.14 and gst-plugins-base 1.14 +installed. In addition, some of the examples/tutorials require various +GStreamer plugins to be available, which can be found in +gst-plugins-base, gst-plugins-good, gst-plugins-bad, gst-plugins-ugly +and/or gst-libav. + + + +### Linux/BSDs + +You need to install the above mentioned packages with your distributions +package manager, or build them from source. + +On Debian/Ubuntu they can be installed with + +``` +$ apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \ + gstreamer1.0-plugins-base gstreamer1.0-plugins-good \ + gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly \ + gstreamer1.0-libav libgstrtspserver-1.0-dev +``` + +The minimum required version of the above libraries is >= 1.14. See +the `Cargo.toml` files for the full details, + +Package names on other distributions should be similar. +Please submit a pull request with instructions for yours. + + + +### macOS + +You can install GStreamer and the plugins via [Homebrew](https://brew.sh/) or +by installing the [binaries](https://gstreamer.freedesktop.org/data/pkg/osx/) +provided by the GStreamer project. + +#### Homebrew + +Homebrew only installs various plugins if explicitly enabled, so some extra +`--with-*` flags may be required. + +``` +$ brew install gstreamer gst-plugins-base gst-plugins-good \ + gst-plugins-bad gst-plugins-ugly gst-libav gst-rtsp-server \ + gst-editing-services --with-orc --with-libogg --with-opus \ + --with-pango --with-theora --with-libvorbis --with-libvpx \ + --enable-gtk3 +``` + +Please, make sure the version of these libraries is >= 1.14. + +#### GStreamer Binaries + +You need to download the *two* `.pkg` files from the GStreamer website and +install them, e.g. `gstreamer-1.0-1.14.4-x86_64.pkg` and +`gstreamer-1.0-devel-1.14.4-x86_64.pkg`. + +After installation, you also need to install `pkg-config` (e.g. via Homebrew) +and set the `PKG_CONFIG_PATH` environment variable + +``` +$ export PKG_CONFIG_PATH="/Library/Frameworks/GStreamer.framework/Versions/Current/lib/pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}" +``` + + + +### Windows + +You can install GStreamer and the plugins via [MSYS2](http://www.msys2.org/) +with `pacman` or by installing the +[binaries](https://gstreamer.freedesktop.org/data/pkg/windows/) provided by +the GStreamer project. + +#### MSYS2 / pacman + +``` +$ pacman -S pkg-config mingw-w64-x86_64-gstreamer mingw-w64-x86_64-gst-plugins-base \ + mingw-w64-x86_64-gst-plugins-good mingw-w64-x86_64-gst-plugins-bad \ + mingw-w64-x86_64-gst-plugins-ugly mingw-w64-x86_64-gst-libav \ + mingw-w64-x86_64-gst-rtsp-server +``` + +Please, make sure the version of these libraries is >= 1.14. + +#### GStreamer Binaries + +You need to download the *two* `.msi` files for your platform from the +GStreamer website and install them, e.g. `gstreamer-1.0-x86_64-1.14.4.msi` and +`gstreamer-1.0-devel-x86_64-1.14.4.msi`. + +After installation, you also need to install `pkg-config` (e.g. via MSYS2 or +from [here](https://sourceforge.net/projects/pkgconfiglite/)) +and set the `PKG_CONFIG_PATH` environment variable + +``` +$ export PKG_CONFIG_PATH="c:\\gstreamer\\1.0\\x86_64\\lib\\pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}" +``` + + + +## Getting Started + +The API reference can be found +[here](https://gstreamer.pages.freedesktop.org/gstreamer-rs/gstreamer/index.html), however it is +only the Rust API reference and does not explain any of the concepts. + +For getting started with GStreamer development, the best would be to follow +the [documentation](https://gstreamer.freedesktop.org/documentation/) on the +GStreamer website, especially the [Application Development +Manual](https://gstreamer.freedesktop.org/documentation/application-development/). +While being C-centric, it explains all the fundamental concepts of GStreamer +and the code examples should be relatively easily translatable to Rust. The +API is basically the same, function/struct names are the same and everything +is only more convenient (hopefully) and safer. + +In addition there are +[tutorials](https://gstreamer.freedesktop.org/documentation/tutorials/) on the +GStreamer website. Many of them were ported to Rust already and the code can +be found in the +[tutorials](https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/tree/master/tutorials) +directory. + +Some further examples for various aspects of GStreamer and how to use it from +Rust can be found in the +[examples](https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/tree/master/examples) +directory. + +Various GStreamer plugins written in Rust can be found in the +[gst-plugins-rs](https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs) +repository. + + + +## LICENSE + +gstreamer-rs and all crates contained in here are licensed under either of + + * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or + http://www.apache.org/licenses/LICENSE-2.0) + * MIT license ([LICENSE-MIT](LICENSE-MIT) or + http://opensource.org/licenses/MIT) + +at your option. + +GStreamer itself is licensed under the Lesser General Public License version +2.1 or (at your option) any later version: +https://www.gnu.org/licenses/lgpl-2.1.html + + + +## Contribution + +Any kinds of contributions are welcome as a pull request. + +Unless you explicitly state otherwise, any contribution intentionally submitted +for inclusion in gstreamer-rs by you, as defined in the Apache-2.0 license, shall be +dual licensed as above, without any additional terms or conditions. diff --git a/gstreamer-gl/wayland/sys/Cargo.toml b/gstreamer-gl/wayland/sys/Cargo.toml index 6687babee..5f915ac77 100644 --- a/gstreamer-gl/wayland/sys/Cargo.toml +++ b/gstreamer-gl/wayland/sys/Cargo.toml @@ -1,8 +1,16 @@ [package] +authors = ["Sebastian Dröge "] build = "build.rs" -edition = "2018" +description = "FFI bindings to libgstgl-1.0 (Wayland support)" +documentation = "https://gstreamer.pages.freedesktop.org/gstreamer-rs/gstreamer_gl_wayland_sys/" +homepage = "https://gstreamer.freedesktop.org" +keywords = ["ffi", "gstreamer", "gnome", "multimedia"] +license = "MIT" name = "gstreamer-gl-wayland-sys" -version = "0.0.1" +readme = "README.md" +repository = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs" +version = "0.17.0" +edition = "2018" [package.metadata.system-deps.gstreamer_gl_wayland_1_0] name = "gstreamer-gl-1.0" version = "1.14" diff --git a/gstreamer-gl/wayland/sys/README.md b/gstreamer-gl/wayland/sys/README.md new file mode 100644 index 000000000..b959d9774 --- /dev/null +++ b/gstreamer-gl/wayland/sys/README.md @@ -0,0 +1,31 @@ +# gstreamer-sys [![crates.io](https://img.shields.io/crates/v/gstreamer-gl-wayland-sys.svg)](https://crates.io/crates/gstreamer-gl-wayland-sys) [![pipeline status](https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/badges/master/pipeline.svg)](https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/commits/master) + +[GStreamer](https://gstreamer.freedesktop.org/) (OpenGL library, Wayland support) FFI bindings for Rust. + +These bindings are providing unsafe FFI API that can be used to interface with +GStreamer. Generally they are meant to be used as the building block for +higher-level abstractions like: + + * Bindings for GStreamer applications and plugins: https://gitlab.freedesktop.org/gstreamer/gstreamer-rs + * Various GStreamer plugins written in Rust: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs + +The bindings are autogenerated with [gir](https://github.com/gtk-rs/gir/) +based on the [GObject-Introspection](https://wiki.gnome.org/Projects/GObjectIntrospection/) +API metadata provided by the GStreamer project. + +## LICENSE + +gstreamer-sys and all crates contained here are licensed under the MIT +license ([LICENSE](LICENSE) or http://opensource.org/licenses/MIT). + +GStreamer itself is licensed under the Lesser General Public License version +2.1 or (at your option) any later version: +https://www.gnu.org/licenses/lgpl-2.1.html + +## Contribution + +Any kinds of contributions are welcome as a pull request. + +Unless you explicitly state otherwise, any contribution intentionally submitted +for inclusion in gstreamer-rs by you shall be licensed under the MIT license as above, +without any additional terms or conditions. diff --git a/gstreamer-gl/x11/Cargo.toml b/gstreamer-gl/x11/Cargo.toml index bec5d3235..ff320be12 100644 --- a/gstreamer-gl/x11/Cargo.toml +++ b/gstreamer-gl/x11/Cargo.toml @@ -4,12 +4,12 @@ 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" +description = "Rust bindings for GStreamer GL library (X11 support)" 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/" +documentation = "https://gstreamer.pages.freedesktop.org/gstreamer-rs/gstreamer_gl_x11/" keywords = ["gstreamer", "multimedia", "audio", "video", "gnome"] build = "../build.rs" edition = "2018" diff --git a/gstreamer-gl/x11/README.md b/gstreamer-gl/x11/README.md new file mode 100644 index 000000000..8c42ca488 --- /dev/null +++ b/gstreamer-gl/x11/README.md @@ -0,0 +1,184 @@ +# gstreamer-rs [![crates.io](https://img.shields.io/crates/v/gstreamer-gl-x11.svg)](https://crates.io/crates/gstreamer-gl-x11) [![pipeline status](https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/badges/master/pipeline.svg)](https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/commits/master) + +[GStreamer](https://gstreamer.freedesktop.org/) (OpenGL library, X11 support) +bindings for Rust. Documentation can be found +[here](https://slomo.pages.freedesktop.org/rustdocs/gstreamer/gstreamer_gl_x11/). + +These bindings are providing a safe API that can be used to interface with +GStreamer, e.g. for writing GStreamer-based applications and GStreamer plugins. + +The bindings are mostly autogenerated with [gir](https://github.com/gtk-rs/gir/) +based on the [GObject-Introspection](https://wiki.gnome.org/Projects/GObjectIntrospection/) +API metadata provided by the GStreamer project. + +## Table of Contents +1. [Installation](#installation) + 1. [Linux/BSDs](#installation-linux) + 1. [macOS](#installation-macos) + 1. [Windows](#installation-windows) +1. [Getting Started](#getting-started) +1. [License](#license) +1. [Contribution](#contribution) + + + +## Installation + +To build the GStreamer bindings or anything depending on them, you +need to have at least GStreamer 1.14 and gst-plugins-base 1.14 +installed. In addition, some of the examples/tutorials require various +GStreamer plugins to be available, which can be found in +gst-plugins-base, gst-plugins-good, gst-plugins-bad, gst-plugins-ugly +and/or gst-libav. + + + +### Linux/BSDs + +You need to install the above mentioned packages with your distributions +package manager, or build them from source. + +On Debian/Ubuntu they can be installed with + +``` +$ apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \ + gstreamer1.0-plugins-base gstreamer1.0-plugins-good \ + gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly \ + gstreamer1.0-libav libgstrtspserver-1.0-dev +``` + +The minimum required version of the above libraries is >= 1.14. See +the `Cargo.toml` files for the full details, + +Package names on other distributions should be similar. +Please submit a pull request with instructions for yours. + + + +### macOS + +You can install GStreamer and the plugins via [Homebrew](https://brew.sh/) or +by installing the [binaries](https://gstreamer.freedesktop.org/data/pkg/osx/) +provided by the GStreamer project. + +#### Homebrew + +Homebrew only installs various plugins if explicitly enabled, so some extra +`--with-*` flags may be required. + +``` +$ brew install gstreamer gst-plugins-base gst-plugins-good \ + gst-plugins-bad gst-plugins-ugly gst-libav gst-rtsp-server \ + gst-editing-services --with-orc --with-libogg --with-opus \ + --with-pango --with-theora --with-libvorbis --with-libvpx \ + --enable-gtk3 +``` + +Please, make sure the version of these libraries is >= 1.14. + +#### GStreamer Binaries + +You need to download the *two* `.pkg` files from the GStreamer website and +install them, e.g. `gstreamer-1.0-1.14.4-x86_64.pkg` and +`gstreamer-1.0-devel-1.14.4-x86_64.pkg`. + +After installation, you also need to install `pkg-config` (e.g. via Homebrew) +and set the `PKG_CONFIG_PATH` environment variable + +``` +$ export PKG_CONFIG_PATH="/Library/Frameworks/GStreamer.framework/Versions/Current/lib/pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}" +``` + + + +### Windows + +You can install GStreamer and the plugins via [MSYS2](http://www.msys2.org/) +with `pacman` or by installing the +[binaries](https://gstreamer.freedesktop.org/data/pkg/windows/) provided by +the GStreamer project. + +#### MSYS2 / pacman + +``` +$ pacman -S pkg-config mingw-w64-x86_64-gstreamer mingw-w64-x86_64-gst-plugins-base \ + mingw-w64-x86_64-gst-plugins-good mingw-w64-x86_64-gst-plugins-bad \ + mingw-w64-x86_64-gst-plugins-ugly mingw-w64-x86_64-gst-libav \ + mingw-w64-x86_64-gst-rtsp-server +``` + +Please, make sure the version of these libraries is >= 1.14. + +#### GStreamer Binaries + +You need to download the *two* `.msi` files for your platform from the +GStreamer website and install them, e.g. `gstreamer-1.0-x86_64-1.14.4.msi` and +`gstreamer-1.0-devel-x86_64-1.14.4.msi`. + +After installation, you also need to install `pkg-config` (e.g. via MSYS2 or +from [here](https://sourceforge.net/projects/pkgconfiglite/)) +and set the `PKG_CONFIG_PATH` environment variable + +``` +$ export PKG_CONFIG_PATH="c:\\gstreamer\\1.0\\x86_64\\lib\\pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}" +``` + + + +## Getting Started + +The API reference can be found +[here](https://gstreamer.pages.freedesktop.org/gstreamer-rs/gstreamer/index.html), however it is +only the Rust API reference and does not explain any of the concepts. + +For getting started with GStreamer development, the best would be to follow +the [documentation](https://gstreamer.freedesktop.org/documentation/) on the +GStreamer website, especially the [Application Development +Manual](https://gstreamer.freedesktop.org/documentation/application-development/). +While being C-centric, it explains all the fundamental concepts of GStreamer +and the code examples should be relatively easily translatable to Rust. The +API is basically the same, function/struct names are the same and everything +is only more convenient (hopefully) and safer. + +In addition there are +[tutorials](https://gstreamer.freedesktop.org/documentation/tutorials/) on the +GStreamer website. Many of them were ported to Rust already and the code can +be found in the +[tutorials](https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/tree/master/tutorials) +directory. + +Some further examples for various aspects of GStreamer and how to use it from +Rust can be found in the +[examples](https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/tree/master/examples) +directory. + +Various GStreamer plugins written in Rust can be found in the +[gst-plugins-rs](https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs) +repository. + + + +## LICENSE + +gstreamer-rs and all crates contained in here are licensed under either of + + * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or + http://www.apache.org/licenses/LICENSE-2.0) + * MIT license ([LICENSE-MIT](LICENSE-MIT) or + http://opensource.org/licenses/MIT) + +at your option. + +GStreamer itself is licensed under the Lesser General Public License version +2.1 or (at your option) any later version: +https://www.gnu.org/licenses/lgpl-2.1.html + + + +## Contribution + +Any kinds of contributions are welcome as a pull request. + +Unless you explicitly state otherwise, any contribution intentionally submitted +for inclusion in gstreamer-rs by you, as defined in the Apache-2.0 license, shall be +dual licensed as above, without any additional terms or conditions. diff --git a/gstreamer-gl/x11/sys/Cargo.toml b/gstreamer-gl/x11/sys/Cargo.toml index 592ab2b4e..909e34462 100644 --- a/gstreamer-gl/x11/sys/Cargo.toml +++ b/gstreamer-gl/x11/sys/Cargo.toml @@ -1,8 +1,16 @@ [package] +authors = ["Sebastian Dröge "] build = "build.rs" -edition = "2018" +description = "FFI bindings to libgstgl-1.0 (X11 support)" +documentation = "https://gstreamer.pages.freedesktop.org/gstreamer-rs/gstreamer_gl_x11_sys/" +homepage = "https://gstreamer.freedesktop.org" +keywords = ["ffi", "gstreamer", "gnome", "multimedia"] +license = "MIT" name = "gstreamer-gl-x11-sys" -version = "0.0.1" +readme = "README.md" +repository = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs" +version = "0.17.0" +edition = "2018" [package.metadata.system-deps.gstreamer_gl_x11_1_0] name = "gstreamer-gl-1.0" version = "1.14" diff --git a/gstreamer-gl/x11/sys/README.md b/gstreamer-gl/x11/sys/README.md new file mode 100644 index 000000000..45e91d42d --- /dev/null +++ b/gstreamer-gl/x11/sys/README.md @@ -0,0 +1,31 @@ +# gstreamer-sys [![crates.io](https://img.shields.io/crates/v/gstreamer-gl-x11-sys.svg)](https://crates.io/crates/gstreamer-gl-x11-sys) [![pipeline status](https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/badges/master/pipeline.svg)](https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/commits/master) + +[GStreamer](https://gstreamer.freedesktop.org/) (OpenGL library, X11 support) FFI bindings for Rust. + +These bindings are providing unsafe FFI API that can be used to interface with +GStreamer. Generally they are meant to be used as the building block for +higher-level abstractions like: + + * Bindings for GStreamer applications and plugins: https://gitlab.freedesktop.org/gstreamer/gstreamer-rs + * Various GStreamer plugins written in Rust: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs + +The bindings are autogenerated with [gir](https://github.com/gtk-rs/gir/) +based on the [GObject-Introspection](https://wiki.gnome.org/Projects/GObjectIntrospection/) +API metadata provided by the GStreamer project. + +## LICENSE + +gstreamer-sys and all crates contained here are licensed under the MIT +license ([LICENSE](LICENSE) or http://opensource.org/licenses/MIT). + +GStreamer itself is licensed under the Lesser General Public License version +2.1 or (at your option) any later version: +https://www.gnu.org/licenses/lgpl-2.1.html + +## Contribution + +Any kinds of contributions are welcome as a pull request. + +Unless you explicitly state otherwise, any contribution intentionally submitted +for inclusion in gstreamer-rs by you shall be licensed under the MIT license as above, +without any additional terms or conditions.