|5.1.0||Jun 7, 2021|
|5.0.0||Oct 23, 2020|
|4.0.13||Mar 27, 2020|
|4.0.12||Dec 2, 2019|
|4.0.10||Jun 23, 2019|
#7 in Encoding
901 downloads per month
Used in 2 crates
Rust bindings to libvpx.
env-libvpx-sys crate offers the following:
- It provides only the
-syslayer. VPX header files are wrapped with bindgen and the native library is linked. However, no higher-level Rust interface is provided. (See the vpx-encode crate for a simple higher-level interface).
- It adds Continuous Integration tests for Windows, Linux and Mac.
- It includes bundled bindgen-generated FFI wrapper for a few versions of
libvpx. You can also enable
generatefeature of this crate to generate FFI on the fly for a custom version of libvpx.
- It originally started as a fork of libvpx-native-sys (see history below).
At compilation time,
build.rs determines how to link libvpx, including what
version to use.
This scenario is the default and is used when the environment variable
VPX_LIB_DIR is not set. In this case,
pkg-config will attempt to
automatically discover libvpx.
VPX_VERSION is set,
build.rs will ensure that
pkg-config returns the
same version. If
VPX_VERSION is not set, the version returned by
will be used.
pkg-config will check the
VPX_STATIC environment variable, and if
it is set, will attempt static linking.
In this scenario, set the following environment variables:
VPX_VERSION appropriately. Caution: if
does not match the linked library
VPX_STATIC may be set to
1 to force static linking.
At one point, cargo features were considered as a means to select the library
version used. However, this meant
the final application binary would need to specify the library version used.
This would place a requirement on all crates in the dependency chain from the
final application binary to
env-libvpx-sys that they must explicitly depend on
env-libvpx-sys (even if, as is very likely beyond a vpx wrapper crate such as
vpx-encode) the intermediate or final
crate does not directly call into
As an additional problem, because cargo features are additive, the possibility
for conflicting build requests with two sets of features would be possible in
this scenario. The present alternative, namely setting the environment variable
VPX_VERSION, naturally enforces the selection of only a single version.
If the bindings for your version are not pre-generated in the
directory, you may let
automatically generate them during the build process by using the
To save your (re)generated bindings and commit them to this repository, build
using with the
generate cargo feature. The easiest way to do this is to use
regen-ffi.bat on Windows). Then, copy the
generated file in
generated/vpx-ffi-<version>.rs. Finally, add this file to version control.