Commit graph

471 commits

Author SHA1 Message Date
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
Sebastian Dröge 162311d2f1 Remove travis cargo cache 2018-10-05 17:19:30 +03:00
Sebastian Dröge a178945d80 Update travis to use GStreamer 1.14.3 binaries (including OpenGL library) 2018-09-21 18:37:12 +03:00