Commit graph

212 commits

Author SHA1 Message Date
Sebastian Dröge
b3184b45bc Combine audio/video source into a single element and add a demuxer for that
This simplifies the code considerably.
2021-09-29 14:48:32 +03:00
Samuel Alonso Rodriguez
0f88b3df68
Merge pull request #71 from sdroege/gst-0.17
Update to gstreamer-rs 0.17
2021-09-24 11:30:22 +02:00
Sebastian Dröge
291d951b01 Update to gstreamer-rs 0.17 2021-09-13 13:43:31 +03:00
Samuel Alonso Rodriguez
160571e251
Merge pull request #65 from sdroege/max-queue-length-setting
Make the maximum receive queue length size configurable
2021-08-17 09:56:45 +02:00
Sebastian Dröge
7604a0c596 Make the maximum receive queue length size configurable 2021-08-02 08:45:32 +03:00
Pablo Nieto
50548c8e6a
Merge pull request #55 from sdroege/sink
Add initial version of NDI sink
2021-03-15 13:01:43 +01:00
Sebastian Dröge
2345c455c1 Add initial version of NDI sink
The sink can accept audio or video directly, or if both should be
provided at once it is necesary to use the ndisinkcombiner before the
ndisink to merge both audio and video into the same stream.

Fixes https://github.com/teltek/gst-plugin-ndi/issues/10
2021-02-26 11:00:23 +02:00
Sebastian Dröge
e7b3b87757 Add safe bindings for the send API
Including creation of frames from GStreamer buffers.
2021-02-26 11:00:23 +02:00
Luke Moscrop
83962cbb8c Add FFI bindings for NDIlib_send_instance_t and related functions 2021-02-26 11:00:23 +02:00
Sebastian Dröge
84e4fe7f59 Add new timestamp mode based on the receive time and timecode
In addition to the old one based on the receive time and timestamp.

Also make that new mode the default as it will usually give more
accurate results because the timestamp is just the send time while the
timecode is usually set by the sender based on the media timestamps.
2021-02-26 11:00:23 +02:00
Samuel Alonso Rodriguez
a02fe56871
Merge pull request #54 from sdroege/cleanups
Various minor cleanups
2021-02-26 09:37:16 +01:00
Sebastian Dröge
4e93604fe9 Fix various clippy warnings 2021-02-23 12:46:27 +02:00
Sebastian Dröge
bb1e1b1529 Use glib GEnum derive macro instead of implementing this manually 2021-02-23 12:40:28 +02:00
Sebastian Dröge
0aef5152a7 Simplify code for Rust 2018 a bit 2021-02-23 12:37:24 +02:00
Sebastian Dröge
eee4a65d19 Update to byte-slice-cast 1.0 and switch from lazy_static to once_cell 2021-02-23 12:29:04 +02:00
Ruben Gonzalez
c1d9c0e958
Merge pull request #51 from sdroege/timeouts
Only consider timeouts if configure bigger than 0
2020-09-07 20:20:45 +02:00
Ruben Gonzalez
3c5c06c9f8
Merge pull request #48 from sdroege/gstreamer-rs-0-16
Update to gstreamer-rs 0.16
2020-09-07 20:20:27 +02:00
Sebastian Dröge
3ea203825a Only consider timeouts if configure bigger than 0
Configuring 0 will never time out.
2020-09-01 21:38:43 +03:00
Sebastian Dröge
5fa3b689f0 Update to gstreamer-rs 0.16 2020-07-27 16:10:39 +03:00
Alfonso Rodríguez Pereira
9d4e427e14
Merge pull request #47 from sdroege/device-provider
Add device provider
2020-01-31 10:09:25 +01:00
Alfonso Rodríguez Pereira
21d7298843
Merge pull request #46 from sdroege/ndi-sdk-4
Port to NDI SDK v4
2020-01-31 10:08:56 +01:00
Sebastian Dröge
4d620cd737 Allow connecting to either an NDI name or URL/address again
Apparently the SDK allows both but the documentation was a bit
confusing.
2020-01-20 22:01:33 +02:00
Sebastian Dröge
8d2c025e47 Allow creating source elements from the device provider and don't do discovery during element setup anymore
While making it possible to create elements from the device provider,
this also speeds up the connection generally when starting up the
elements.

Also add the url-address property for additional filtering in addition
to the NDI name.
2020-01-20 22:01:33 +02:00
Sebastian Dröge
f2a4699d13 Add a device provider for listing available sources
Fixes https://github.com/teltek/gst-plugin-ndi/issues/36
2020-01-20 22:01:33 +02:00
Sebastian Dröge
afc301de3a Port to NDI SDK v4
Most notably this allows the video line stride to be set to 0, in which
case a default value is to be used, and it deprecates selecting NDI
sources by their IP address and because of that we remove the relevant
properties.

Usually the SDK will give an URL instead of an IP address now, so usage
would've been broken anyway.
2020-01-10 12:29:24 +02:00
Sebastian Dröge
05b807aff0 Fix some minor clippy warnings 2020-01-02 13:06:53 +02:00
Alfonso Rodríguez Pereira
edcb10820d
Merge pull request #45 from sdroege/update-to-gstreamer-0.15
Update to gstreamer 0.15 and byte-slice-cast 0.3
2019-12-23 16:24:30 +01:00
Sebastian Dröge
6aea804c6c Update byte-slice-cast to 0.3 2019-12-19 01:04:59 +02:00
Sebastian Dröge
5923adf333 Update to gstreamer 0.15 bindings release 2019-12-19 01:04:59 +02:00
Ruben Gonzalez
5f020ad5b8
Merge pull request #43 from UbiCastTeam/master
fix comparaison to detect source uniqueness in a pipeline, fixes #42
2019-08-30 10:20:29 +02:00
Ruben Gonzalez
732100f293
Merge pull request #41 from sdroege/calculate-linear-regression
Depend on gstreamer 0.14.4 for gst::calculate_linear_regression()
2019-08-30 08:13:48 +02:00
Amaury Denoyelle
5e10693aa6 fix comparaison to detect source uniqueness in a pipeline, fixes #42 2019-08-23 17:23:52 +02:00
Sebastian Dröge
06e5d7cb95 Depend on gstreamer 0.14.4 for gst::calculate_linear_regression()
Instead of having our own unsafe binding for it.
2019-08-14 22:49:55 +03:00
Ruben Gonzalez
8e3c6c39b7 Update README (fix #38) 2019-08-06 23:23:22 +02:00
Ruben Gonzalez
842603482b
Merge pull request #40 from sdroege/negotiate
Don't do anything in BaseSrc::negotiate()
2019-08-06 23:17:03 +02:00
Sebastian Dröge
7246b1b147 Don't do anything in BaseSrc::negotiate()
We can't negotiate anything meaningful with downstream and will always
set the caps based on the data we receive in ::create() later.
2019-08-06 18:48:24 +03:00
rubenrua
892e54ac4d Reorder ndisys to reduce complexity 2019-07-30 17:52:15 +02:00
rubenrua
b0b42f8f17 Fix travis CI 2019-07-30 17:29:42 +02:00
Ruben Gonzalez
43eee4740b
Merge pull request #37 from sdroege/rust-2018
Switch to 2018 edition
2019-07-30 17:06:33 +02:00
Sebastian Dröge
1a20ec4c2c Add myself to the authors list in Cargo.toml 2019-07-23 14:26:04 +03:00
Sebastian Dröge
57d928ad96 Switch to 2018 edition
Fixes https://github.com/teltek/gst-plugin-ndi/issues/15
2019-07-23 14:26:04 +03:00
Ruben Gonzalez
060190d59a
Update README.md 2019-07-23 07:22:52 +02:00
Ruben Gonzalez
a0c5b24fb8
Merge pull request #34 from sdroege/safe-ndi-wrapper
Lots of improvements
2019-07-23 07:19:04 +02:00
Sebastian Dröge
cd741f37be Fix compilation with --no-default-features 2019-07-22 09:12:04 +03:00
Sebastian Dröge
3ac1a6b288 Handle receiving in the beginning without clock gracefully
We'll only have a clock once the source element is actually in Playing.
2019-07-19 13:00:27 +03:00
Sebastian Dröge
bbdfae8cdd Compare IP addresses in lowercase
Only really relevant for IPv6.
2019-07-19 12:55:18 +03:00
Sebastian Dröge
98c290602c Improve error reporting/handling
And minor refactoring.
2019-07-19 12:51:06 +03:00
Sebastian Dröge
d352a0c20d Print all found sources in the debug log 2019-07-19 12:15:08 +03:00
Sebastian Dröge
5e5007091e Always return 1 frame of latency except for timecode mode
This allows for some slack when receiving, as up to 1 frame difference between
receive times can easily happen because of capturing alone.

And return 5 frames maximum latency as that is the size of our internal
queue.
2019-07-19 11:37:33 +03:00
Sebastian Dröge
fa9f788190 Improve type-safety a bit by making the Receiver generic over the stream type 2019-07-19 11:34:20 +03:00