Now it's possible to connect to N streams in the same pipeline. Each new connection will create a new NDI receiver except if it's a empty slot in the receiver.
Each receiver has two slots one to connect to audio and other to connect to video to the same stream.
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