Guillaume Desmottes
f4604e1c58
uriplaylistbin: use thiserror
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1232 >
2023-06-06 12:46:17 +02:00
Guillaume Desmottes
432de060ea
uriplaylistbin: example: display iterations
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1232 >
2023-06-05 14:09:41 +02:00
Guillaume Desmottes
97fa20237f
uriplaylistbin: prevent deadlock when notifying property changes
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1232 >
2023-06-05 14:09:41 +02:00
Guillaume Desmottes
780d9d5b78
uriplaylistbin: example display when leaving because of eos
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1232 >
2023-06-05 14:09:41 +02:00
Seungha Yang
3406e604cd
fallbacksrc: Don't apply fallback-audio-caps to the main audio stream
...
Intended behavior is configuring audio convert/resample elements
only for the fallback stream and also fallback-audio-caps is set.
Video and image stream are doing it as intended already.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1213 >
2023-05-17 23:49:09 +09:00
Guillaume Desmottes
7ebf2d7a4f
fallbackswitch: document the pad priority ordering
...
I just wasted lots of time trying to figure out why my higher priority
pad wasn't used...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1208 >
2023-05-15 16:13:20 +02:00
François Laignel
7ba0073052
use Pad builders for optional name definition
...
Also, apply auto-naming in the following cases
* When building from a non wildcard-named template, the name of the template is
automatically assigned to the Pad. User can override with a specific name by
calling `name()` on the `PadBuilder`.
* When building with a target and no name was provided via the above, the
GhostPad is named after the target.
See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/448
Auto-naming discussion: https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1255#note_1891181
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1197 >
2023-05-12 12:55:31 +02:00
Sebastian Dröge
47159ad3c2
Make sure to keep around and drop bus watches after usage in all the examples
2023-04-14 12:46:43 +03:00
Tim-Philipp Müller
8845f6a4c6
git: replace LICENSE file symlinks with copies
...
Git will de-duplicate the contents for us anyway, and
symlinks can cause problems with some versions of git
and also on Windows.
https://github.com/mesonbuild/meson/issues/11646
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4326
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1157 >
2023-04-04 14:26:37 +01:00
Sebastian Dröge
722dba1203
fallbacksrc: Don't check caps when linking to the fallbackswitch
...
Downstream might have different caps requirements and linking might
fail. Instead of having linking fail, give upstream an opportunity to
reconfigure and otherwise have a normal negotiation error during data
flow.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/334
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1156 >
2023-04-04 10:14:06 +00:00
Guillaume Desmottes
138c318be6
uriplaylistbin: example: add queues
...
Prevent pipeline starvation with some media such as
https://assets.onestream.live/studio/Videos/1080p/osl-interval-1080p-8.mp4
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1064 >
2023-04-04 08:24:55 +00:00
Vivia Nikolaidou
c6e1efa0fe
livesync: Actually assume zero upstream latency when query fails
...
The code said "assuming zero" but left latency at None instead of
Some(0), failing to unwrap the value later.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1153 >
2023-03-31 17:40:32 +03:00
Talha Khan
a12a8c566d
livesync: Support variable framerate in fallback buffer duration calc
...
Avoids a divide by zero error
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1123 >
2023-03-10 09:18:28 +00:00
Sebastian Dröge
fc5ed15af5
Update for gst::Element::link_many()
and related API generalization
...
Specifically, get rid of now unneeded `&`.
2023-03-09 16:46:52 +02:00
Guillaume Desmottes
f7c02cb3b0
uriplaylistbin: reset element when switching back to NULL
...
Allow us to re-use the element later.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1121 >
2023-03-08 14:34:20 +01:00
Guillaume Desmottes
a0f6e84ec2
tracers: queue_levels: add appsrc support
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1111 >
2023-02-28 14:38:29 +01:00
Sebastian Dröge
ff2f7a8505
livesync: Correctly calculate fallback buffer duration from framerate
...
Numerator and denominator were switched.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1108 >
2023-02-28 12:52:11 +02:00
Sebastian Dröge
9fc1404415
Update minimum supported Rust version to 1.66
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1096 >
2023-02-20 11:09:01 +02:00
Sebastian Dröge
04e101c605
Optimize various error message / debug message formatting
...
Directly make use of format strings instead of formatting a string
beforehand and then passing it to the macros.
2023-02-13 11:50:57 +02:00
Sebastian Dröge
1e13dbb99c
Update versions to 0.11.0-alpha.1
2023-02-10 00:23:56 +02:00
Jan Alexander Steffens (heftig)
f55c32ed37
livesync: Document State's fields
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1083 >
2023-02-09 13:07:33 +01:00
Jan Alexander Steffens (heftig)
953773a314
livesync: Improve formatting
...
Move some code around to make it a bit more readable. No change in
behavior.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1083 >
2023-02-09 13:07:33 +01:00
Jan Alexander Steffens (heftig)
c1bfeb4c23
livesync: Fix log message capitalization
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1083 >
2023-02-09 13:07:33 +01:00
Jan Alexander Steffens (heftig)
0af7151ae9
livesync: Extract LiveSync::flow_error
...
And add details so it behaves more like the `GST_ELEMENT_FLOW_ERROR`
macro.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1083 >
2023-02-09 13:07:32 +01:00
Jan Alexander Steffens (heftig)
f03ee95bf0
livesync: Extract audio_info_from_caps
...
And adjust it slightly so it never panics.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1083 >
2023-02-09 13:07:32 +01:00
Jan Alexander Steffens (heftig)
c971c4d1d5
livesync: Move single segment prop
...
Keep it with the settings, not after the stats.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1083 >
2023-02-09 13:07:32 +01:00
Jan Alexander Steffens (heftig)
165b5f8c50
livesync: Fix queueing
...
The logic of the element requires the next buffer to be available
immediately after we are done pushing the previous, otherwise we insert
a repeat.
Making the src loop handle events and queries broke this, as upstream is
almost guaranteed not to deliver a buffer in time if we allow non-buffer
items to block upstream's push.
To fix this, replace our single-item `Option` with a `VecDeque` that we
allow to hold an unlimited number of events or queries, but only one
buffer at a time.
In addition, the code was confused about the current caps and segment.
This wasn't an issue before making the src loop handle events and
queries, as only the sinkpad cared about the current segment, using it
to buffers received, and only the srcpad cared about the current caps,
sending it just before sending the next received buffer.
Now the sinkpad cares about caps (through `update_fallback_duration`)
and the srcpad cares about the segment (when not in single-segment
mode).
Fix this by
- making `in_caps` always hold the current caps of the sinkpad,
- adding `pending_caps`, which is used by the srcpad to store
caps to be sent with the next received buffer,
- adding `in_segment`, holding the current segment of the sinkpad,
- adding `pending_segment`, which is used by the srcpad to store
the segment to be sent with the next received buffer,
- adding `out_segment`, holding the current segment of the srcpad.
Maybe a fix for
https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/298 .
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1082 >
2023-02-09 12:44:47 +01:00
Jan Alexander Steffens (heftig)
33696a8aed
livesync: Only resend segment if not in single-segment mode
...
In single-segment mode, the outgoing segment does not change when the
incoming segment changes. We only need to resend the segment if we got
flushed or deactivated.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1069 >
2023-01-30 15:37:00 +00:00
Sebastian Dröge
c7209dbd4f
Return exit code from gio::Application::run()
from main()
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1065 >
2023-01-27 18:50:01 +00:00
Sebastian Dröge
3b4c48d9f5
Fix various new clippy warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1062 >
2023-01-25 10:31:19 +02:00
Sebastian Dröge
2c386fb792
Update for various deprecated APIs
2023-01-22 20:07:26 +02:00
Sebastian Dröge
458b2386ed
Update for glib API changes
2023-01-21 18:13:48 +02:00
Guillaume Desmottes
570eb7463a
livesync: fix late-threshold property min value
...
The code is handling 0 as "always over threshold" but it was not
possible to set the property to 0.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1049 >
2023-01-17 10:54:05 +01:00
Sebastian Dröge
4464bf2eaa
Update for gtk::Application
constructor API changes
2023-01-16 11:51:10 +02:00
Sebastian Dröge
6132788b02
Update for caps/structure-related string API changes
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1048 >
2023-01-15 22:58:44 +02:00
Sebastian Dröge
d44a1a4245
Fix some clippy warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1035 >
2023-01-05 12:42:47 +02:00
Sebastian Dröge
27435ad82e
Update for API changes
2023-01-05 12:33:54 +02:00
Sebastian Dröge
620ba6e185
livesync: Fix version
2022-12-16 18:53:37 +02:00
Jan Alexander Steffens (heftig)
42385c81be
Add livesync plugin
...
It attempts to produce a (nearly) gapless live stream by synchronizing
its output to the running time and forwarding the next input buffer if
its start is (nearly) flush with the end of the last output buffer.
If the input buffer is missing or too far in the future, it duplicates
the last output buffer with adjusted timestamps. If it is operating on a
raw audio stream, it will fill duplicate buffers with silence.
If an input buffer arrives too late, it is thrown away. If the last
input buffer was accepted too long ago (according to `late-threshold`),
a late input buffer is accepted anyway, but immediately considered a
duplicate. Due to the silence-filling, this has no effect on audio, but
video gets a "slideshow" effect instead of freezing completely.
The "many-repeats" property will be notified when this element has
recently duplicated a lot of buffers or recovered from such a state.
Co-authored-by: Vivia Nikolaidou <vivia@ahiru.eu>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/708 >
2022-12-14 18:51:36 +02:00
Sebastian Dröge
3f904553ea
Fix various new clippy warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1011 >
2022-12-13 11:43:16 +02:00
Sebastian Dröge
45fa946e8b
tracer: buffer-lateness: Fix compilation after minor API change
2022-11-22 10:39:32 +02:00
Sebastian Dröge
a8250abbf1
Fix various new clippy warnings
2022-11-01 10:27:48 +02:00
Sebastian Dröge
f2223cf2cb
Update versions to 0.10.0-alpha.1
2022-10-24 19:31:19 +03:00
Sebastian Dröge
9a68f6e221
Move from imp.instance()
to imp.obj()
...
It's doing the same thing and is shorter.
2022-10-23 23:08:46 +03:00
François Laignel
86776be58c
Remove &
for obj
in log macros
...
This is no longer necessary.
See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1137
2022-10-23 21:22:31 +02:00
Sebastian Dröge
f045099fc1
Fix GObject type names, GStreamer debug category names and element factory names
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/198
2022-10-23 20:46:08 +03:00
Sebastian Dröge
20ad9175d8
Make GStreamer plugin/crate/library/directory names and descriptions consistent
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/238
2022-10-23 20:25:08 +03:00
Sebastian Dröge
f058a5e229
Various minor cleanups
2022-10-22 19:50:24 +03:00
François Laignel
6319d104a8
Take advantage of Into<Option<_>>
args
...
Commit 24b7cfc8
applied changes related to nullability as declared
by gir. One consequence was that some functions signature ended up
requiring users to pass `Some(val)` when they could use `val`
before.
This commit applies changes on `gstreamer-rs` which, will honoring
the nullability stil allow users to pass `val` for the few affected
functions.
This commit also fixes the signature for `Element::request_new_pad`
which was updated upstream.
2022-10-21 11:54:24 +02:00
Seungha Yang
92266cb82c
fallbacksrc: Don't configure conversion elements for normal stream
...
Internal conversion element can cause unexpected format/resolution
change depending negotiated result, which didn't happen before
the recent fallbacksrc update for fallback stream support.
Configure conversion objects only for fallback streams and also
fallback-{audio,video}-caps are specified, in order to keep
previous behavior.
2022-10-20 15:06:33 +00:00
Seungha Yang
fec404f87a
fallbacksrc: Fix for imagefreeze framerate setup
...
Put imagefreeze before capsfilter so that user specified framerate
for fallback image can be applied as expected
2022-10-20 02:08:08 +09:00
Seungha Yang
1db66e5a3b
fallbacksrc: Drop QoS event while pad is blocked
...
An element which creates QoS event might reference different
GstSegment timeline (e.g., fallback testsrc's one).
Then it can cause lots of buffers are being dropped in decoder,
because of the QoS events.
Drops the QoS event before we calculate appropriate pad offsets
from blocking pad probe.
2022-10-20 01:56:36 +09:00
Sebastian Dröge
12400b6b87
Update everything for element factory builder API changes
...
And set properties as part of object construction wherever it makes
sense.
2022-10-19 19:43:29 +03:00
Seungha Yang
953ae18f1d
fallbacksrc: Configure clocksync
...
It's missed in the previous refactoring
2022-10-18 16:27:41 +00:00
Seungha Yang
3eaf29b71f
fallbacksrc: Don't use fallback caps to normal stream
...
fallback-{audio,video}-caps should be applied only to fallback
branches
2022-10-18 16:27:41 +00:00
François Laignel
8011eadfd2
Use new format constructors
...
See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1128
2022-10-18 10:36:59 +00:00
Vivia Nikolaidou
9b1361b538
plugins: Use .into() instead of gst::Fraction::new() where applicable
2022-10-14 18:21:28 +03:00
Vivia Nikolaidou
f11b0fa5eb
plugins, examples, tutorials: Use AudioCapsBuilder and VideoCapsBuilder
...
Simplify caps creation code
2022-10-13 19:24:57 +00:00
Sebastian Dröge
e49138516c
Update for pad default functions API changes
2022-10-12 19:50:15 +03:00
Sebastian Dröge
7ee4afacf4
Change *Impl trait methods to only take &self and not Self::Type in addition
2022-10-10 15:03:25 +03:00
François Laignel
7818ac658b
Use GFV::none_for_format
where applicable
2022-10-08 18:29:10 +02:00
Sebastian Dröge
4c57a97d4d
Update for glib::Object::new() API changes
2022-10-07 23:54:53 +03:00
Sebastian Dröge
0b13bfe9dc
fallbacksrc: Always restart the fallback stream on EOS and make sure to EOS all streams if the main stream is EOS
2022-10-05 19:13:36 +03:00
Sebastian Dröge
9719b055c5
fallbacksrc: Retry fallback stream on errors too
...
It was retrying but then nonetheless handling the error as fatal.
2022-10-04 16:31:09 +00:00
Nirbheek Chauhan
1d4d3e4cb0
build: Update versions to be 0.9.0-alpha.1
...
0.9.0 is the next release, so we can't name things that already.
Also the version in meson.build was 0.13.0, which is completely wrong.
2022-10-04 21:27:23 +05:30
Sebastian Dröge
f66aafb039
tracers: queue-levels: Update for gst::TracerImpl
API changes
2022-10-02 11:44:34 +03:00
Sebastian Dröge
4ba4b00235
examples: Update to clap 4
2022-09-29 09:48:53 +03:00
Sebastian Dröge
7479888200
uriplaylistbin: Port example from structopt to clap
2022-09-27 13:30:38 +03:00
Sebastian Dröge
38753b08ac
fallbacksrc: Implement support for fallback streams
2022-09-27 12:56:15 +03:00
Sebastian Dröge
00411523d4
fallbackswitch: Make sure to flush/reset pads during pad (de)activation
...
Otherwise this can potentially deadlock or delay state changes for a
longer time.
2022-09-27 12:56:01 +03:00
Sebastian Dröge
1f7126a8a1
fallbackswitch: Flush and deactivate pads before releasing them
2022-09-27 12:56:01 +03:00
Sebastian Dröge
b6ebad2761
fallbackswitch: Fix lock order problem between state and stream lock
...
The order is first stream lock, then state lock. Everything else can
lead to deadlocks.
2022-09-27 12:54:21 +03:00
Thibault Saunier
adb4cb8691
tracers: Fix documentation comment using gtk-doc style
...
So the online documentation works
2022-09-24 16:30:50 -03:00
Jordan Petridis
d8e3894209
togglerecord: Port example to GTK 4
2022-09-05 11:47:37 +03:00
Jordan Petridis
a60f4e9ae8
fallbackswitch: Port the example to GTK 4
2022-09-05 11:47:28 +03:00
Sebastian Dröge
1a40186485
Update for GLib ParamSpec builder API changes
2022-09-05 11:45:47 +03:00
Sebastian Dröge
46dddaf31c
Update minimum supported Rust version to 1.63
2022-09-04 21:31:55 +03:00
Thibault Saunier
67e651f57c
Allow "unused_doc_comments" as we use hotdoc and not rustdoc
2022-08-29 18:33:22 -04:00
Thibault Saunier
31a53bba8a
Generate plugins documentation using hotdoc
...
Which will automatically be integrated in gstreamer documentation
2022-08-29 18:33:22 -04:00
Vivia Nikolaidou
5606111345
plugins: Simplify code using ParamSpecBuilder
2022-08-22 17:58:43 +03:00
Sebastian Dröge
374bb8323f
Fix build after glib SignalBuilder::param_types() API change
2022-08-17 23:37:39 +03:00
Sebastian Dröge
2a54d57968
tracers: queue_levels.py: cycle colors
...
Fix crash when drawing more dataset than the number of colors.
2022-08-11 09:34:46 +00:00
Seungha Yang
a9a41a54be
tracers: Enable PipelineSnapshot only for unix target
...
This implementation does not support the other targets
(it uses SIGUSR1 which does not exist on Windows)
and would not be compiled
2022-08-09 11:47:02 +00:00
Guillaume Desmottes
7eea27aefc
tracers: buffer_lateness.py: cycle colors
...
Fix crash when drawing more dataset than the number of colors.
Fix #221
2022-08-09 13:13:14 +02:00
Bilal Elmoussaoui
52973d975e
Update per glib::SignalBuilder changes
2022-07-21 20:03:13 +02:00
Sebastian Dröge
7d666ce517
tracers: queue-levels: Fix analysis script if only a single plot should be created
2022-07-21 12:26:22 +03:00
Sebastian Dröge
a45443251b
tracers: queue-levels: Add support for multiqueue and queue2
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/218
2022-07-21 12:26:22 +03:00
Guillaume Desmottes
fe210a5715
tracers: queue_levels: log when file is being written
...
Help debugging when nothing is generated.
2022-07-20 17:05:29 +02:00
Guillaume Desmottes
bdd47d69ce
tracers: buffer_lateness: log when file is being written
...
Help debugging when nothing is generated.
2022-07-20 16:37:49 +02:00
Sebastian Dröge
02990f8fcc
tracers: queue-levels: Output bytes/buffers/time graphs in separate plots
...
Much easier to read.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/220
2022-07-20 16:03:51 +03:00
Sebastian Dröge
320cb73527
tracers: Add new tracer for logging the lateness of each buffer when it leaves a pad
2022-07-19 18:03:40 +03:00
Sebastian Dröge
2f987b09ee
tracers: Add queue levels tracer and Python script for plotting
2022-07-19 18:03:40 +03:00
François Laignel
5c5c15d36a
Simplify Formatted value handling
...
See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1059
2022-07-11 21:21:54 +02:00
Sebastian Dröge
cb84206457
Fix a couple of new 1.62 clippy warnings
2022-06-28 14:52:20 +03:00
Sebastian Dröge
5dac064a49
fallbackswitch: Remove unused libc dependency/feature
2022-06-15 09:48:19 +03:00
Mathieu Duponchelle
abf872130a
fallbackswitch: fix gap processing regression
...
This was broken by the rewrite, receiving gaps on the main pad
should let the position progress, reset timeouts and keep the main
pad active.
This picks the simplest solution, transforming gap events into GAP
buffers and letting them go through chain(), this achieves the desired
effect.
2022-06-15 06:21:04 +00:00
Sebastian Dröge
427ebcd759
uriplaylistbin: Update to more-asserts 0.3
2022-06-06 11:55:52 +03:00
Seungha Yang
4072f1df34
fallbacksrc: Add fallback-{audio,video}-caps properties
...
Add new properties so that user can specify output raw audio and/or
video format of fallback stream (output of testsrc or still image)
2022-06-03 13:18:38 +00:00
Jan Alexander Steffens (heftig)
a5dd92f479
fallbackswitch: Reset timeout_clock_id on timeout
...
We shouldn't leave the used clock ID around. Otherwise, we might never
schedule a new timeout from an inactive pad if the active pad doesn't
get a buffer.
2022-06-02 11:07:20 +02:00
Jan Alexander Steffens (heftig)
90ad761d83
fallbackswitch: Use cancel_timeout in schedule_timeout
...
Dedupe the code and use the function that does the exact same thing.
2022-06-02 11:07:20 +02:00
Guillaume Desmottes
0dd0acd738
uriplaylistbin: disable more tests
...
Those are not reliable either.
2022-05-30 09:23:52 +02:00
Jan Alexander Steffens (heftig)
68c55ca413
fallbackswitch: Recheck active_sinkpad after schedule_timeout
...
`schedule_timeout` can synchronously call `handle_timeout` and change the
active pad. We need to update `is_active` afterwards.
After calling `schedule_timeout` with `end_running_time`, we used to
assume there was no pad switch and reset `switched_pad` immediately. If
the pad actually got switched, this would make us miss a sticky events
update.
2022-05-25 17:53:55 +02:00
Guillaume Desmottes
351453c132
add snapshotting tracer
...
Convenient tracer to dump all the existing pipelines when receiving the
SIGUSR1 Unix signal.
2022-05-23 13:52:52 +02:00
Jan Alexander Steffens (heftig)
d27e279272
fallbackswitch: Move active_sinkpad out of State into its own Mutex
...
As described in issue #200 , we hold the srcpad's stream lock in some
situations where we notify the `active-pad` property.
If there's a handler installed it will most likely attempt to read the
property, which had to take the `state` lock. Another thread could
already be holding this lock and attempting to obtain the srcpad's
stream lock. This resulted in a deadlock.
To avoid this, move the `active_sinkpad` field into its own Mutex, which
we never hold for long.
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/200
2022-05-12 16:52:07 +02:00
Guillaume Desmottes
d69b4edfbc
uriplaylistbin: fix number of streaming items
...
One more item than intended was allowed.
2022-04-22 14:50:42 +02:00
Guillaume Desmottes
03fcc2cb9a
uriplaylistbin: implement Debug on State
...
Help debugging.
2022-04-22 14:50:28 +02:00
Vivia Nikolaidou
385a983e5f
fallbackswitch: Fix racy manual switching test
...
The element has a small race condition where it might output two buffers
with the same running time during e.g. a manual switch. In practice this
is not a problem, so the test takes this race into account.
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/195
2022-04-18 16:13:00 +03:00
Sebastian Dröge
e82678586f
fallbackswitch: Remove a redundant pad state unlock/lock
2022-04-14 08:14:26 +00:00
Sebastian Dröge
279dd7d053
fallbackswitch: Set end running time as current running time once a buffer has passed
2022-04-14 08:14:26 +00:00
Sebastian Dröge
4aa00c9eca
fallbackswitch: Don't configure a framerate in the test
...
The tests assume that buffers have no known duration and would deadlock
otherwise because timeouts are scheduled to the end of a buffer.
2022-04-14 08:14:26 +00:00
Sebastian Dröge
f5260f9b36
fallbackswitch: Explictly set priority of pads in the test
2022-04-14 08:14:26 +00:00
Sebastian Dröge
0ca0d485a0
fallbackswitch: Log affected pad when scheduling buffer waiting for it
2022-04-14 08:14:26 +00:00
Sebastian Dröge
d73bce2985
fallbackswitch: Only update the output running time if it's increasing
2022-04-14 08:14:26 +00:00
Sebastian Dröge
930cdca750
fallbackswitch: Only drop raw audio/video buffers if they're trailing
...
Otherwise this can cause decoding errors further downstream.
2022-04-14 08:14:26 +00:00
Sebastian Dröge
bbb7ced95a
fallbackswitch: Improve some debug outputs
...
Don't print "buffer buffer ...".
2022-04-14 08:14:26 +00:00
Sebastian Dröge
ca7cf7dee7
fallbackswitch: Fix clipping of buffers against the output running time
...
To handle buffers outside the segment correctly.
Also fix debug output to print the correct value.
2022-04-14 08:14:26 +00:00
Sebastian Dröge
617a2ef49e
fallbackswitch: Clip buffers against the segment
...
Also clip raw audio/video buffers according to the caps if they have the
relevant information in the caps, and drop raw audio samples if they're
outside the segment too.
In addition also set durations on raw audio/video buffers based on the
caps if no duration is set.
2022-04-14 08:14:26 +00:00
Sebastian Dröge
6ce523a7a8
fallbackswitch: Improve debug output of clock times and simplify some code
2022-04-14 08:14:26 +00:00
Guillaume Desmottes
5004479c6f
uriplaylistbin: disable more tests
...
See https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/194
2022-04-13 07:55:27 +00:00
Seungha Yang
930cc41aaa
fallbacksrc: Don't forward manual flush events to downstream
...
fallbackswitch might forward flush event if it's for the currently
active pad. But forwarded flush event will be problematic in various
reasons and that's not a behavior we expected.
2022-04-12 23:21:32 +09:00
Sebastian Dröge
5788837fb6
fallbacksrc: Unflush downstream pads of the source after shutting down everything
...
Otherwise the pads might still be flushing on the next try and the
source would never recover.
2022-04-12 14:40:08 +03:00
Sebastian Dröge
7233d6936c
fallbacksrc: Remove imagefreeze if it becomes unneeded
2022-04-12 14:37:29 +03:00
Vivia Nikolaidou
de936f42e9
fallbackswitch: Minor cleanup in get_sync_time
2022-04-11 15:57:20 +03:00
Sebastian Dröge
3de317b3c9
fallbacksrc: Don't panic when shutting down the source and there are source pad blocks but no actual source pads
...
This can happen if the source removed the actual source pad already but
our downstream pad that is blocked still exists.
2022-04-11 11:01:27 +00:00
Sebastian Dröge
84402f39ef
fallbacksrc: Reset state in fallbacksrc custom source also if changing the state to READY before failed
...
Otherwise it will panic on the next try because always pads are already
linked to the ghostpads.
2022-04-11 11:01:27 +00:00
Vivia Nikolaidou
0ba6ebb10f
fallbackswitch: Notify active-pad without state lock held
...
Can otherwise deadlock.
2022-04-11 10:48:28 +00:00
Sebastian Dröge
08379ab389
fallbacksrc: Request the main pad first from fallbackswitch
...
By default the first created pad is the active one before the
fallbackswitch is actually processing data.
2022-04-08 20:24:03 +03:00
Sebastian Dröge
96c28a5728
fallbackswitch: Only notify active-pad property on state changes if it actually changed
2022-04-08 20:23:28 +03:00
Sebastian Dröge
452ea76a69
fallbackswitch: Rename debug category from fallback-switch to fallbackswitch
...
The element name is without hyphen so the debug category should ideally
too to reduce confusion.
2022-04-08 20:07:01 +03:00
Sebastian Dröge
d3d98c73ca
fallbacksrc: Connect to notify::active-pad
after requesting pads
...
Requesting the first pad will emit the property because the first pad is
then selected. That will cause the callback to be called, which tries to
take the same mutex that is already locked during element setup and
causes a deadlock.
2022-04-08 19:53:38 +03:00
Guillaume Desmottes
7daab76f17
uriplaylistbin: skip missing_http test
...
It's not reliable.
2022-04-08 16:18:03 +02:00
Guillaume Desmottes
00b3199727
Revert "Revert "uriplaylistbin: disable test deadlocking""
...
This reverts commit 821ec857e1
.
Looks like the test is still unreliable. :(
2022-04-08 16:16:05 +02:00
Guillaume Desmottes
cde5fdf202
uriplaylistbin: break reference cycle
...
Passing ownership of item to the probe callback was introducing a reference cycle as the item is owning the sinkpad.
2022-04-08 15:50:48 +02:00
Guillaume Desmottes
ffdcc8167c
uriplaylistbin: remove useless uridecodebin clone
2022-04-08 15:50:48 +02:00
Guillaume Desmottes
821ec857e1
Revert "uriplaylistbin: disable test deadlocking"
...
This reverts commit d9f3e8e9e7
.
The test seems to work reliably so hopefully it's been fixed with the
latest dead lock fixes.
Fix #191
2022-04-08 12:58:13 +02:00
Guillaume Desmottes
69ceaa3a5e
uriplaylistbin: add Status::ShuttingDown
...
Fix a race where we were trying to process new decodedin pads while the
element was being shutdown, resulting in a dead lock.
2022-04-08 12:58:13 +02:00
Guillaume Desmottes
0ed72a360d
uriplaylistbin: replace errored with Status enum
2022-04-08 12:58:13 +02:00
Guillaume Desmottes
97dba9046b
uridecodebin: stop using crossbeam_channel
...
I give up on crossbeam_channel. For some reasons some receivers are not
always unblocked and I was not able to reproduce using simpler test
cases.
Use with mpsc channels instead which are more reliable.
2022-04-08 12:58:13 +02:00
Sebastian Dröge
803e452889
Update minimum supported GStreamer version to 1.14
2022-04-07 12:41:54 +03:00
Jan Alexander Steffens (heftig)
0a3e9c81f9
fallbackswitch: Add missing requires_private
2022-04-06 11:11:25 +02:00
Jan Schmidt
bd2ff494c7
fallbackswitch: Replace with priorityswitch
...
fallbackswitch now supports multiple sink pads, and on a timeout of the
active pad, it will automatically switch to the next lowest priority pad
that has data available.
fallbackswitch sink pads follow the `sink_%u` template and have
`priority` as a pad property.
Co-authored-by: Vivia Nikolaidou <vivia.nikolaidou@ltnglobal.com>
2022-04-05 18:52:31 +03:00
Guillaume Desmottes
bf14939b9b
uriplaylistbin: remove pad probe when shutting down
...
The previous patch was unblocking the receiver in the pad probe but
it could be blocked again as the item streaming status was not changed.
2022-04-01 11:58:50 +02:00
Guillaume Desmottes
5dab4bc502
uriplaylistbin: handle waiting items no longer being set
...
ab96219c19
broke some assertions as
waiting items are now unset when shutting down the element.
2022-03-28 13:02:40 +02:00
Guillaume Desmottes
ab96219c19
uriplaylistbin: fix deadlock when shutting down
...
The probes on srcpad was not removed which was preventing the element to
reach the NULL state.
2022-03-28 10:10:42 +02:00
Guillaume Desmottes
e0d05353e8
uriplaylistbin: fix race when handling topology change
...
Keep the state mutex during the whole decodebin pad-added callback.
Fix a race when we were checking if state.waiting_for_ss_eos was set and
it was removed before we actually processed the item.
Fix #184
2022-03-25 14:33:02 +01:00
Vivia Nikolaidou
c6feb31207
Revert "fallbackswitch: Forward custom downstream events from active sinkpad"
...
This reverts commit 9ebbae9d27
.
It works even without the change.
2022-03-22 13:11:00 +02:00
Vivia Nikolaidou
9ebbae9d27
fallbackswitch: Forward custom downstream events from active sinkpad
...
This will allow us to forward e.g. SCTE-35 events
2022-03-21 15:30:36 +02:00
Sebastian Dröge
4a54001aed
fallbacksrc: Flush source before restarting on errors
...
It might still be blocked downstream for a while, e.g. in the clocksync.
Flushing does not cause any problems as fallbackswitch is not going to
forward it and will only unblock everything up to there.
2022-03-17 16:12:34 +00:00
Guillaume Desmottes
8389bff7d8
fallbackswitch: properly handle GAP events
...
Handle GAP events from the active pad as activity and forward
downstream.
2022-03-03 11:48:26 +01:00
Guillaume Desmottes
7b109785be
fallbackswitch: factor out handle_main_timed_item()
...
No semantic change, I'll re-use this to handle GAP events.
2022-03-03 10:01:59 +01:00