mirror of
https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git
synced 2024-11-27 05:51:01 +00:00
1377916b3b
https://doc.rust-lang.org/book/second-edition/ch19-03-advanced-traits.html#the-newtype-pattern-to-implement-external-traits-on-external-types error[E0277]: the trait bound `*mut std::os::raw::c_void: std::marker::Send` is not satisfied in `ndisrc::State` --> src/ndisrc.rs:276:6 | 276 | impl ObjectImpl<BaseSrc> for NdiSrc { | ^^^^^^^^^^^^^^^^^^^ `*mut std::os::raw::c_void` cannot be sent between threads safely | = help: within `ndisrc::State`, the trait `std::marker::Send` is not implemented for `*mut std::os::raw::c_void` = note: required because it appears within the type `std::option::Option<*mut std::os::raw::c_void>` = note: required because it appears within the type `ndisrc::State` = note: required because of the requirements on the impl of `std::marker::Sync` for `std::sync::Mutex<ndisrc::State>` = note: required because it appears within the type `ndisrc::NdiSrc` error[E0277]: the trait bound `*mut std::os::raw::c_void: std::marker::Send` is not satisfied in `ndisrc::State` --> src/ndisrc.rs:405:6 | 405 | impl ElementImpl<BaseSrc> for NdiSrc { | ^^^^^^^^^^^^^^^^^^^^ `*mut std::os::raw::c_void` cannot be sent between threads safely | = help: within `ndisrc::State`, the trait `std::marker::Send` is not implemented for `*mut std::os::raw::c_void` = note: required because it appears within the type `std::option::Option<*mut std::os::raw::c_void>` = note: required because it appears within the type `ndisrc::State` = note: required because of the requirements on the impl of `std::marker::Sync` for `std::sync::Mutex<ndisrc::State>` = note: required because it appears within the type `ndisrc::NdiSrc` error[E0277]: the trait bound `*mut std::os::raw::c_void: std::marker::Send` is not satisfied in `ndisrc::State` --> src/ndisrc.rs:424:6 | 424 | impl BaseSrcImpl<BaseSrc> for NdiSrc { | ^^^^^^^^^^^^^^^^^^^^ `*mut std::os::raw::c_void` cannot be sent between threads safely | = help: within `ndisrc::State`, the trait `std::marker::Send` is not implemented for `*mut std::os::raw::c_void` = note: required because it appears within the type `std::option::Option<*mut std::os::raw::c_void>` = note: required because it appears within the type `ndisrc::State` = note: required because of the requirements on the impl of `std::marker::Sync` for `std::sync::Mutex<ndisrc::State>` = note: required because it appears within the type `ndisrc::NdiSrc` error: aborting due to 3 previous errors |
||
---|---|---|
.. | ||
src | ||
Cargo.lock | ||
Cargo.toml | ||
README.md |
TODO
See:
https://coaxion.net/blog/2018/01/how-to-write-gstreamer-elements-in-rust-part-1-a-video-filter-for-converting-rgb-to-grayscale/ https://coaxion.net/blog/2018/02/how-to-write-gstreamer-elements-in-rust-part-2-a-raw-audio-sine-wave-source/
Before cargo build install:
$ 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
Test
cargo build
export GST_PLUGIN_PATH=`pwd`/target/debug
gst-inspect-1.0 ndisrc