Sebastian Dröge
2dfca38977
threadshare: Turn the single-threaded executor until no futures are left to be run before waiting
...
Otherwise in e.g. a pipeline like
ts-udpsrc ! ts-queue ! fakesink
the first turn would only get a packet and queue it up, then we would
wait due to throttling and only then we would forward the packet from
the queue (but not poll the socket again), wait again due to throttling
and only then poll and get the next packet.
See https://github.com/tokio-rs/tokio/issues/310
2018-11-05 13:36:47 +02:00
Sebastian Dröge
b56e1a9873
threadshare: Update udpsrc benchmark a bit
2018-11-05 13:36:47 +02:00
Sebastian Dröge
7939f95861
threadshare: Add very simple udpsrc/tonesrc benchmark application
2018-11-05 13:36:47 +02:00
Sebastian Dröge
eab6537094
threadshare: Add test for queue
2018-11-05 13:36:20 +02:00
Sebastian Dröge
3e82b5a14e
threadshare: Add test for udpsrc
2018-11-05 13:36:20 +02:00
Sebastian Dröge
34acbcc6a1
threadshare: Add simple test for proxysrc/sink
2018-11-05 13:36:20 +02:00
Sebastian Dröge
30b2df753c
threadshare: Set element flags correctly for sources and sinks
...
And let proxysink post EOS events
2018-11-05 13:36:20 +02:00
Sebastian Dröge
099093e9be
threadshare: Refactor pending future draining to get rid of some duplicated code
2018-11-05 13:36:20 +02:00
Sebastian Dröge
a9d979a988
threadshare: Use catch_panic_pad_function from gst-plugin crate
2018-11-05 13:36:20 +02:00
Sebastian Dröge
96bc778f72
threadshare: Add code for canceling pending futures
2018-11-05 13:36:20 +02:00
Sebastian Dröge
88933790e7
threadshare: Add FIXME comment for refactoring opportunities
2018-11-05 13:36:20 +02:00
Sebastian Dröge
28100d3a63
threadshare: Add test for single and multi-threaded appsrc
2018-11-05 13:36:20 +02:00
Sebastian Dröge
82ab78fa3d
threadshare: Minor appsrc refactoring
2018-11-05 13:36:20 +02:00
Sebastian Dröge
d52f1d49dd
threadshare: Add a sample appsrc-like element plus test
2018-11-05 13:36:20 +02:00
Sebastian Dröge
f5b3e9481f
threadshare: Run everything through rustfmt
2018-11-05 13:36:20 +02:00
Sebastian Dröge
ab22d81f12
threadshare: Integrate new tokio-timer into the IOContext
2018-11-05 13:36:20 +02:00
Sebastian Dröge
82cc63551c
threadshare: Don't set a fallback reactor
...
This should not be needed and fails if we have multiple contexts
2018-11-05 13:36:20 +02:00
Sebastian Dröge
13e706f678
threadshare: Fix queue time level calculation
2018-11-05 13:36:20 +02:00
Sebastian Dröge
6ebc8988b2
threadshare: Make sure to shutdown sockets/queues without any mutexes locked
...
And make sure that the IOContext stays alive until they are fully done.
2018-11-05 13:36:20 +02:00
Sebastian Dröge
b4d1145490
threadshare: Add initial implementation of a proxysrc/sink like element
2018-11-05 13:36:20 +02:00
Sebastian Dröge
c26299277e
threadshare: Move DataQueue to its own module
2018-11-05 13:36:20 +02:00
Sebastian Dröge
811893ccf9
threadshare: Only take the current queue levels into account instead of the future ones
...
Otherwise we might never ever enqueue a single buffer if it is already
by itself going over the limits.
2018-11-05 13:36:20 +02:00
Sebastian Dröge
e03c27814b
threadshare: Implement pending futures that could be scheduled downstream as result of a push
...
This is used by the queue to schedule putting data into the queue once
it has space again.
Also implement blocking-wait in the queue on the sinkpad if there is no
IOContext upstream and generally clean up various things.
2018-11-05 13:36:20 +02:00
Sebastian Dröge
1e26ca6365
threadshare: Add a first version of a queue
2018-11-05 13:36:20 +02:00
Sebastian Dröge
21f905739f
threadshare: Implement error handling
2018-11-05 13:36:20 +02:00
Sebastian Dröge
7cd2945268
threadshare: Implement error handling for IO/data flow errors
...
Also create a proper stream id
2018-11-05 13:36:20 +02:00
Sebastian Dröge
212b00ef2f
threadshare: Move buffer handling into a separate function
2018-11-05 13:36:20 +02:00
Sebastian Dröge
613706d446
threadshare: Implement propert event/query handling
2018-11-05 13:36:20 +02:00
Sebastian Dröge
e269e51524
threadshare: Refactor
2018-11-05 13:36:20 +02:00
Sebastian Dröge
f53efc6e6f
threadshare: Implement throttling for the poll loop
2018-11-05 13:36:20 +02:00
Sebastian Dröge
6aa9f642ba
threadshare: Allow running completely single-threaded
2018-11-05 13:36:20 +02:00
Sebastian Dröge
b939607693
threadshare: Stop using reactor::Background and implement it ourselves for now
2018-11-05 13:36:20 +02:00
Sebastian Dröge
299c69185e
threadshare: WIP
2018-11-05 13:36:20 +02:00
Sebastian Dröge
0fe6fbc859
threadshare: Initial working version
2018-11-05 13:36:20 +02:00
Sebastian Dröge
1593c06595
threadshare: Initial commit
2018-11-05 13:36:20 +02:00
Thijs Vermeir
a8e16d4815
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-04 20:24:20 +01:00
Thijs Vermeir
e4acf61af3
create plugin_register_static in plugin_define!
2018-11-04 20:24:20 +01:00
Thijs Vermeir
cee861f341
use BoolError for plugin registration
2018-11-04 20:24:20 +01:00
Sebastian Dröge
46f80da72e
First run lints, then tests
2018-11-04 18:52:31 +02:00
Sebastian Dröge
87f94ddcc8
Run gitlab-ci also with Rust 1.28
2018-11-04 18:52:25 +02:00
Sebastian Dröge
9a4aaa4e43
Point to the new repo location in README.md
2018-11-03 20:55:29 +02:00
Sebastian Dröge
712ea76d7d
Run everything through rustfmt again
2018-11-03 20:30:10 +02:00
Sebastian Dröge
97cc1c8458
Change all references from GitHub to freedesktop.org GitLab
2018-11-03 20:24:21 +02:00
Sebastian Dröge
ee3fc37f4c
Switch to parking_lot Mutex/Condvar for lower overhead
2018-11-01 12:45:57 +02:00
Arun Raghavan
25501233ec
Use FlowError instead of FlowReturn as error part of Result
...
This prevents the possibility of a Result that is an Err(Ok), which
would not be meaningful.
2018-10-29 19:15:38 +00:00
Arun Raghavan
20910b2415
Implement From instead of Into for FlowError -> FlowReturn
...
It is recommended to implement From as that is more flexible and
includes an implicit Into instance.
2018-10-28 12:07:19 +00:00
Arun Raghavan
c5c3726668
Update gitignore for Cargo.lock and vim files
2018-10-28 10:20:54 +00:00
Jordan Petridis
252b8498ff
CI: Add gitlab-ci config.
...
Similar to how ti was done for gstreamer-rs.
See [1] for more.
[1] https://github.com/sdroege/gstreamer-rs/pull/132
2018-10-15 16:26:28 +03:00
Sebastian Dröge
628f5099eb
Run everything through latest rustfmt
2018-10-11 13:49:48 +03:00
Sebastian Dröge
f2deb2264b
Fix various clippy warnings
2018-10-11 13:49:10 +03:00