Commit graph

3370 commits

Author SHA1 Message Date
Daniel Vilar
678c5876de Improved timestamps calculation
Due to the possibility to connect to two or more streams simultaneously with different clocks synchronization It's necessary to improve the timestamps calculation to detect this.

Prior to this commit, we saved the first timestamp that arrive and use it to calculate the running time of the stream for the rest of frames (pts field in gstreamer buffer) in all of the streams. This lead to problems when connecting to multiple streams in multiple computers and the clocks were not correctly synchronized.

To fix this, now we save a different initial timestamp for each stream.
2018-12-10 13:27:23 +01:00
François Laignel
4812884453 CI: fix fmt 2018-12-09 16:03:27 +01:00
Sebastian Dröge
e64a9b4a1a Port threadshare plugin to new subclassing API 2018-12-06 13:03:04 +02:00
Daniel Vilar
f06ac8c035
Merge pull request #11 from teltek/loss_threshold_param
Added parameter to adjust threshold when detecting that a stream was closed
2018-12-05 17:35:46 +01:00
Daniel Vilar
b0b3316616
Merge pull request #12 from teltek/fix_audio_multichannel
Fix issues with multichanel audio
2018-12-05 17:35:34 +01:00
Daniel Vilar
9df0a01a0c If param loss_threshold is 0, we don't close the stream connection when receiving a NDIlib_frame_type_none 2018-12-05 16:13:36 +01:00
Daniel Vilar
e68bb9b4aa Fix issues with multichanel audio 2018-12-05 15:22:01 +01:00
Daniel Vilar
192253ab05 A new parameter was added to adjust the threshold when detecting that a stream was closed 2018-12-05 12:55:01 +01:00
Sebastian Dröge
4d87c11293 Run everything through latest rustfmt again 2018-12-04 19:01:40 +02:00
Sebastian Dröge
3026e56cfb ts-udpsrc: Creating a gio::Socket from a raw fd/socket is unsafe
So put it into an unsafe block.
2018-12-03 13:02:35 +02:00
Sebastian Dröge
9750195caa ts-udpsrc: Dup the socket so that both tokio and GIO can take ownership of it
Otherwise both would be closing the same socket, which a) breaks the
second user of the socket if any and b) could on the second close cause
a completely unrelated socket to be closed.

Windows part of the code is untested.
2018-11-30 19:39:39 +02:00
Sebastian Dröge
4ac6863eed Port tutorials plugin to new subclassing API 2018-11-30 17:18:53 +02:00
Sebastian Dröge
485839a2a9 Port audiofx plugin with audioecho element to new subclassing API 2018-11-30 17:18:40 +02:00
Sebastian Dröge
38ca1ef3cb Port gst-plugin-togglerecord to new subclassing API 2018-11-30 17:17:37 +02:00
Sebastian Dröge
40426a2cf6 Use new boxed type support from the GLib bindings 2018-11-29 21:01:02 +02:00
Sebastian Dröge
ab59e88809 Update CHANGELOG.md for 0.3.2 2018-11-26 17:07:40 +01:00
Sebastian Dröge
fae723a238 Update documentation to gitlab pages 2018-11-26 16:27:13 +01:00
Sebastian Dröge
32265412f3 Change all links/mentions from gst-plugin-rs to gst-plugins-rs 2018-11-26 11:52:09 +01:00
Sebastian Dröge
8881548652 AggregatorPad is not actually a GhostPad 2018-11-19 11:36:23 +02:00
Sebastian Dröge
8081c319c2 Update CHANGELOG.md for 0.3.1 2018-11-19 11:32:14 +02:00
Sebastian Dröge
66366ce024 Make sure to override vfuncs of all parent classes correctly 2018-11-19 11:29:25 +02:00
Sebastian Dröge
8b7f0b40ea ts-appsrc: Rewrite test around Harness 2018-11-13 18:58:06 +02:00
Sebastian Dröge
bcc0bb0d7d ts-udpsrc: Add unit test for socket re-use and the socket/used-socket properties 2018-11-13 18:58:06 +02:00
Sebastian Dröge
941b83a1d6 ts-udpsrc: Rewrite unit test around gst_check::Harness 2018-11-13 18:50:54 +02:00
Sebastian Dröge
ab08cbd412 ts-udpsrc: Implement socket and used-socket properties like in udpsrc 2018-11-13 14:13:23 +02:00
Sebastian Dröge
4fb18382c2 threadshare: register plugin static in integration test
After a `cargo clean` the shared library is not yet present if the test is started with `cargo test`.
2018-11-05 13:47:34 +02:00
Sebastian Dröge
73a7be5ef5 Run gst-plugin-threadshare through cargo fmt 2018-11-05 13:43:38 +02:00
Sebastian Dröge
6c32b702f0 Fix build with gst-plugin-rs API changes 2018-11-05 13:43:11 +02:00
Sebastian Dröge
20bec35c68 Merge gst-plugin-threadshare into gst-plugin-rs 2018-11-05 13:40:43 +02:00
Sebastian Dröge
132986cf71 threadshare: Fix deprecation warnings and move to released versions of tokio 2018-11-05 13:36:47 +02:00
Sebastian Dröge
4e8c6fd293 threadshare: Change gobject-subclass repository URI 2018-11-05 13:36:47 +02:00
Sebastian Dröge
fbc0a04cff threadshare: Run everything through rustfmt again 2018-11-05 13:36:47 +02:00
Sebastian Dröge
55f9b84008 threadshare: Drop support for multi-threaded runtime as it is consistently slower
And switch to the new built-in spawning support of CurrentThread
2018-11-05 13:36:47 +02:00
LEE Dongjun
20149c7293 threadshare: Rename udpsrc_benchmark.rs to benchmark.rs. 2018-11-05 13:36:47 +02:00
LEE Dongjun
6827b9509e threadshare: Add TcpClient elements and unit test. 2018-11-05 13:36:47 +02:00
LEE Dongjun
df86b67117 threadshare: Rename udpsocket file to socket file 2018-11-05 13:36:47 +02:00
LEE Dongjun
1ac85c91e5 threadshare: Generalize UdpSocket to Socket. 2018-11-05 13:36:47 +02:00
Sebastian Dröge
ec3e0875a1 threadshare: Use downcast_ref() instead of downcast() 2018-11-05 13:36:47 +02:00
Sebastian Dröge
987f78de42 threadshare: Move to tokio_threadpool and tokio_current_thread crates 2018-11-05 13:36:47 +02:00
Sebastian Dröge
23b25b210b threadshare: Update to rand 0.5 2018-11-05 13:36:47 +02:00
Sebastian Dröge
8cdb47e61e threadshare: Also set reuse address/port settings for non-multicast sockets
And share more code between unicast/multicast socket creation
2018-11-05 13:36:47 +02:00
Sebastian Dröge
9adf663073 threadshare: Add property to udpsrc for allowing port/address reuse 2018-11-05 13:36:47 +02:00
Sebastian Dröge
c5d901609f threadshare: Try pushing pending items immediately if we did not schedule a future for it yet
It might not be necessary to first go through a future, we might
directly be able to push them now.
2018-11-05 13:36:47 +02:00
Sebastian Dröge
7ac9534322 threadshare: Don't drain the queue when trying to push pending items
Otherwise we'll have to collect all failed items and push them back.
Instead pop items one by one, and if one fails just push that single
item back to the front.

The previous code would've lost all items after the first one that
failed
2018-11-05 13:36:47 +02:00
Sebastian Dröge
51aa06d013 threadshare: Schedule the pending queue in queue/proxysink only on EOS or the first buffer/buffer list
We will get the custom sticky downstream event with the IO context only
after stream-start and others, so would potentially block the current
thread from another futures executor, which then panics. Instead let's
just queue up those events for the time being until a later time.
2018-11-05 13:36:47 +02:00
Sebastian Dröge
3a8ce35e60 threadshare: Revert "Push io-context sharing event before stream-start and anything else"
This reverts commit 083948e8ea1471f1d8a013a225200729cfcef2a9.

This has no effect because core is reordering events to have
stream-start and others always first.
2018-11-05 13:36:47 +02:00
Sebastian Dröge
135ec5ee7d threadshare: Push io-context sharing event before stream-start and anything else 2018-11-05 13:36:47 +02:00
Sebastian Dröge
0b54cdb8ea threadshare: Use default query handling
While this will still drop most queries, it at least implements some
sane default handling for CAPS/ACCEPT_CAPS queries.
2018-11-05 13:36:47 +02:00
Sebastian Dröge
be0403ce24 threadshare: Switch to gobject-subclass 2018-11-05 13:36:47 +02:00
Sebastian Dröge
8f9a42f486 threadshare: Switch back to main tokio now that the CurrentThread PR is merged 2018-11-05 13:36:47 +02:00