forked from mirrors/gstreamer-rs
gstreamer-gl: Fix/extend cargo metadata and add README.md for new EGL/Wayland/X11 sub-crates
This commit is contained in:
parent
506c19dab4
commit
dd23ac7093
12 changed files with 681 additions and 12 deletions
|
@ -4,12 +4,12 @@ version = "0.17.0"
|
||||||
authors = ["Sebastian Dröge <sebastian@centricular.com>",
|
authors = ["Sebastian Dröge <sebastian@centricular.com>",
|
||||||
"Víctor M. Jáquez L. <vjaquez@igalia.com>"]
|
"Víctor M. Jáquez L. <vjaquez@igalia.com>"]
|
||||||
categories = ["api-bindings", "multimedia"]
|
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"
|
repository = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs"
|
||||||
license = "MIT/Apache-2.0"
|
license = "MIT/Apache-2.0"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
homepage = "https://gstreamer.freedesktop.org"
|
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"]
|
keywords = ["gstreamer", "multimedia", "audio", "video", "gnome"]
|
||||||
build = "../build.rs"
|
build = "../build.rs"
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
184
gstreamer-gl/egl/README.md
Normal file
184
gstreamer-gl/egl/README.md
Normal file
|
@ -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)
|
||||||
|
|
||||||
|
<a name="installation"/>
|
||||||
|
|
||||||
|
## 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.
|
||||||
|
|
||||||
|
<a name="installation-linux"/>
|
||||||
|
|
||||||
|
### 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.
|
||||||
|
|
||||||
|
<a name="installation-macos"/>
|
||||||
|
|
||||||
|
### 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}"
|
||||||
|
```
|
||||||
|
|
||||||
|
<a name="installation-windows"/>
|
||||||
|
|
||||||
|
### 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}"
|
||||||
|
```
|
||||||
|
|
||||||
|
<a name="getting-started"/>
|
||||||
|
|
||||||
|
## 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.
|
||||||
|
|
||||||
|
<a name="license"/>
|
||||||
|
|
||||||
|
## 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
|
||||||
|
|
||||||
|
<a name="contribution"/>
|
||||||
|
|
||||||
|
## 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.
|
|
@ -1,8 +1,16 @@
|
||||||
[package]
|
[package]
|
||||||
|
authors = ["Sebastian Dröge <sebastian@centricular.com>"]
|
||||||
build = "build.rs"
|
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"
|
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]
|
[package.metadata.system-deps.gstreamer_gl_egl_1_0]
|
||||||
name = "gstreamer-gl-1.0"
|
name = "gstreamer-gl-1.0"
|
||||||
version = "1.14"
|
version = "1.14"
|
||||||
|
|
31
gstreamer-gl/egl/sys/README.md
Normal file
31
gstreamer-gl/egl/sys/README.md
Normal file
|
@ -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.
|
|
@ -4,12 +4,12 @@ version = "0.17.0"
|
||||||
authors = ["Sebastian Dröge <sebastian@centricular.com>",
|
authors = ["Sebastian Dröge <sebastian@centricular.com>",
|
||||||
"Víctor M. Jáquez L. <vjaquez@igalia.com>"]
|
"Víctor M. Jáquez L. <vjaquez@igalia.com>"]
|
||||||
categories = ["api-bindings", "multimedia"]
|
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"
|
repository = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs"
|
||||||
license = "MIT/Apache-2.0"
|
license = "MIT/Apache-2.0"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
homepage = "https://gstreamer.freedesktop.org"
|
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"]
|
keywords = ["gstreamer", "multimedia", "audio", "video", "gnome"]
|
||||||
build = "../build.rs"
|
build = "../build.rs"
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
184
gstreamer-gl/wayland/README.md
Normal file
184
gstreamer-gl/wayland/README.md
Normal file
|
@ -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)
|
||||||
|
|
||||||
|
<a name="installation"/>
|
||||||
|
|
||||||
|
## 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.
|
||||||
|
|
||||||
|
<a name="installation-linux"/>
|
||||||
|
|
||||||
|
### 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.
|
||||||
|
|
||||||
|
<a name="installation-macos"/>
|
||||||
|
|
||||||
|
### 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}"
|
||||||
|
```
|
||||||
|
|
||||||
|
<a name="installation-windows"/>
|
||||||
|
|
||||||
|
### 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}"
|
||||||
|
```
|
||||||
|
|
||||||
|
<a name="getting-started"/>
|
||||||
|
|
||||||
|
## 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.
|
||||||
|
|
||||||
|
<a name="license"/>
|
||||||
|
|
||||||
|
## 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
|
||||||
|
|
||||||
|
<a name="contribution"/>
|
||||||
|
|
||||||
|
## 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.
|
|
@ -1,8 +1,16 @@
|
||||||
[package]
|
[package]
|
||||||
|
authors = ["Sebastian Dröge <sebastian@centricular.com>"]
|
||||||
build = "build.rs"
|
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"
|
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]
|
[package.metadata.system-deps.gstreamer_gl_wayland_1_0]
|
||||||
name = "gstreamer-gl-1.0"
|
name = "gstreamer-gl-1.0"
|
||||||
version = "1.14"
|
version = "1.14"
|
||||||
|
|
31
gstreamer-gl/wayland/sys/README.md
Normal file
31
gstreamer-gl/wayland/sys/README.md
Normal file
|
@ -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.
|
|
@ -4,12 +4,12 @@ version = "0.17.0"
|
||||||
authors = ["Sebastian Dröge <sebastian@centricular.com>",
|
authors = ["Sebastian Dröge <sebastian@centricular.com>",
|
||||||
"Víctor M. Jáquez L. <vjaquez@igalia.com>"]
|
"Víctor M. Jáquez L. <vjaquez@igalia.com>"]
|
||||||
categories = ["api-bindings", "multimedia"]
|
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"
|
repository = "https://gitlab.freedesktop.org/gstreamer/gstreamer-rs"
|
||||||
license = "MIT/Apache-2.0"
|
license = "MIT/Apache-2.0"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
homepage = "https://gstreamer.freedesktop.org"
|
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"]
|
keywords = ["gstreamer", "multimedia", "audio", "video", "gnome"]
|
||||||
build = "../build.rs"
|
build = "../build.rs"
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
184
gstreamer-gl/x11/README.md
Normal file
184
gstreamer-gl/x11/README.md
Normal file
|
@ -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)
|
||||||
|
|
||||||
|
<a name="installation"/>
|
||||||
|
|
||||||
|
## 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.
|
||||||
|
|
||||||
|
<a name="installation-linux"/>
|
||||||
|
|
||||||
|
### 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.
|
||||||
|
|
||||||
|
<a name="installation-macos"/>
|
||||||
|
|
||||||
|
### 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}"
|
||||||
|
```
|
||||||
|
|
||||||
|
<a name="installation-windows"/>
|
||||||
|
|
||||||
|
### 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}"
|
||||||
|
```
|
||||||
|
|
||||||
|
<a name="getting-started"/>
|
||||||
|
|
||||||
|
## 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.
|
||||||
|
|
||||||
|
<a name="license"/>
|
||||||
|
|
||||||
|
## 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
|
||||||
|
|
||||||
|
<a name="contribution"/>
|
||||||
|
|
||||||
|
## 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.
|
|
@ -1,8 +1,16 @@
|
||||||
[package]
|
[package]
|
||||||
|
authors = ["Sebastian Dröge <sebastian@centricular.com>"]
|
||||||
build = "build.rs"
|
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"
|
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]
|
[package.metadata.system-deps.gstreamer_gl_x11_1_0]
|
||||||
name = "gstreamer-gl-1.0"
|
name = "gstreamer-gl-1.0"
|
||||||
version = "1.14"
|
version = "1.14"
|
||||||
|
|
31
gstreamer-gl/x11/sys/README.md
Normal file
31
gstreamer-gl/x11/sys/README.md
Normal file
|
@ -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.
|
Loading…
Reference in a new issue