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
Sebastian Dröge
33370e42ad
Collect observations for the timestamp/receive time mappings and smoothen them
...
This allows keeping audio/video more in sync with how the sender was
sending it, while also handling network jitter and clock drift in a
reasonable way.
2019-07-19 10:52:47 +03:00
Sebastian Dröge
66d4fd1d90
Move connecting and capturing to separate threads
...
This ensures that we'll be able to capture every frame even if
downstream of the source is blocking for a moment, and also allows us to
make all operations cancellable.
2019-07-18 15:44:31 +03:00
Sebastian Dröge
19d25d20a7
Implement cancellation of connection attempts
2019-07-17 12:12:58 +03:00
Sebastian Dröge
f27c2507c5
Refactor huge create() functions into multiple smaller functions
...
And don't hold any mutexes when unnecessary, especially not while trying
to receive a frame.
2019-07-17 11:44:53 +03:00
Sebastian Dröge
cd0726b037
Make RecvInstance reference counted and allow lock-less capturing
2019-07-17 11:01:40 +03:00
Sebastian Dröge
34858762f7
Consolidate element properties
...
stream-name is called ndi-name everywhere in the NDI SDK and documentation
ip is called ip-address everywhere
Rename loss-threshold to timeout and change it to be in milliseconds
instead of iterations.
Add connect-timeout for timeout during connection
Add bandwidth and receiver-ndi-name properties, and initialize the
latter with a reasonable default value.
2019-07-17 11:01:40 +03:00
Sebastian Dröge
8b00e80316
Add property for selecting between different timestamping modes
2019-07-17 11:01:40 +03:00
Sebastian Dröge
a4890d3295
Add timestamp/timecode into ReferenceTimestampMeta on every buffer
2019-07-16 16:03:15 +03:00
Sebastian Dröge
fabcc65460
Properly support interlaced video and signal it correctly in the caps and buffer flags
2019-07-16 13:07:50 +03:00
Sebastian Dröge
a500b5297b
Simplify boolean expression
2019-07-16 12:49:31 +03:00
Sebastian Dröge
b91d23521f
Remove unnecessary TODO comment
2019-07-16 12:49:31 +03:00
Sebastian Dröge
cd8bca11aa
Run everything to rustfmt to give it a consistent indentation
2019-07-15 20:38:00 +03:00
Sebastian Dröge
4ebcd78acc
Print frame timestamp/timecode in debug output
2019-07-15 20:38:00 +03:00
Sebastian Dröge
75eb959c80
Add support for all other video formats
2019-07-15 20:38:00 +03:00
Sebastian Dröge
5022ff412c
Fix caps negotiation
...
We can't just fixate to any close to what we receive right now but only
support exactly the caps we receive. So check the format of each frame
and negotiate exactly those caps as needed when receiving frames.
Also re-negotiate if the caps are ever changing.
2019-07-15 20:13:12 +03:00