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
rubenrua
227080e32d
Add comment about Newtek NDI times resolution
...
See: https://github.com/FFmpeg/FFmpeg/blob/master/libavdevice/libndi_newtek_common.h#L27
From NDI SDK Documentation:
This is the timecode of this frame in 100ns intervals. This is generally not used internally by the SDK, but is passed
through to applications who may interpret it as they wish. When sending data, a value of
NDIlib_send_timecode_synthesize can be specified (and should be the default), the operation of this value is
documented in the sending section of this documentation. NDIlib_send_timecode_synthesize will yield UTC
time in 100ns intervals since the Unix Time Epoch 1/1/1970 00:00. When interpreting this timecode a receiving
application may choose to localise the time of day based on time zone offset which can optionally be communicated by
the sender in connection metadata. Since timecode is stored in UTC within NDI, communicating timecode time of day for
non UTC time zones requires a translation
2018-09-27 10:18:54 +02:00
rubenrua
cb1ea2195f
Fix rust fmt
2018-09-25 16:04:00 +02:00
rubenrua
8a81ca526b
Use "cargo build --release" in README. Fix #4
...
Waiting for use a distro package.
2018-09-25 15:55:54 +02:00
Ruben Gonzalez
c93f7d41dc
Merge pull request #6 from sdroege/compare-factory-name
...
Compare element factory names to distinguish video source from audio …
2018-09-25 15:44:29 +02:00
Ruben Gonzalez
d1cec10925
Merge pull request #7 from teltek/travis
...
Add Travis
2018-09-25 15:19:28 +02:00
rubenrua
00df152210
Update travis with slomo GStreamer version
...
Copy from https://github.com/sdroege/gst-plugin-rs/blob/master/.travis.yml
2018-09-25 13:50:49 +02:00
Sebastian Dröge
a8c9d78bff
Compare element factory names to distinguish video source from audio source
...
We could also go via the glib::Type but that requires more steps unless
we also add a getter from the registered type to the audio/video source
modules.
2018-09-25 13:37:59 +03:00