Guillaume Desmottes
1e88971ec8
uriplaylistbin: pass valid URI in tests
...
Fix critical raised by libsoup,
see https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/346
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1471 >
2024-03-04 11:06:19 +01:00
Sebastian Dröge
c0d111e2c1
utils: Update for renamed clippy lint in 1.76
2024-02-08 21:37:17 +02:00
Sebastian Dröge
92891a61e8
Fix a couple of compiler/clippy warnings with --no-default-features
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1452 >
2024-02-08 13:02:55 +02:00
Bilal Elmoussaoui
d25a222bf9
Drop direct muldiv dependency
...
It is re-exproted in gstreamer's prelude
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1446 >
2024-02-05 15:34:31 +01:00
Bilal Elmoussaoui
0615a16124
Use workspace features for crates metadata/deps
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1446 >
2024-02-05 15:34:31 +01:00
Sebastian Dröge
1a55c70114
Switch git dependencies to explicitly name branch
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1445 >
2024-02-05 12:51:36 +02:00
Sebastian Dröge
4ad101b53b
Use once_cell crate directly again
...
The glib crate does not depend on it anymore and also does not re-export
it anymore.
Also switch some usages of OnceCell to OnceLock from std.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1441 >
2024-01-31 18:07:57 +02:00
Michael Tretter
4bb867bf52
livesync: add support for image formats
...
The livesync element is also useful for Motion JPEG streams. However,
Motion JPEG uses image/ caps instead of video/ caps.
The framerate is defined for image/, too.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1440 >
2024-01-29 11:07:30 +00:00
Guillaume Desmottes
33a1d8de3d
tracers: buffer-lateness: display some stats about late buffers
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1437 >
2024-01-29 09:24:08 +00:00
Guillaume Desmottes
d5740ea844
tracers: buffer-lateness: add argument to display only late buffers
...
Help to easily spot places where buffers are late when plotting big
pipelines.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1437 >
2024-01-29 09:24:08 +00:00
Guillaume Desmottes
c616423edb
livesync: properly format jitter in debug logs
...
Easier to read that way.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1430 >
2024-01-16 13:46:34 +01:00
Sebastian Dröge
1ef47cb48e
Fix a few new clippy 1.75 warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1415 >
2023-12-22 16:40:18 +02:00
Guillaume Desmottes
6dfd1c1496
use new debug and parse API
...
Changes from https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1355
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1403 >
2023-12-04 15:58:21 +01:00
Seungha Yang
8a04a38631
fallbacksrc: Fix timeout scheduling
...
Other thread can schedule the timeout (e.g., unblock signal
or active pad change) while state lock is released
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1384 >
2023-11-15 09:17:39 +00:00
Sebastian Dröge
636c76b03b
uriplaylistbin: Fix new clippy warning
...
warning: the borrowed expression implements the required traits
--> utils/uriplaylistbin/src/uriplaylistbin/imp.rs:1691:32
|
1691 | self.obj().remove_many(&children_ref).unwrap();
| ^^^^^^^^^^^^^ help: change this to: `children_ref`
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1391 >
2023-11-13 17:41:06 +02:00
Sebastian Dröge
16b917abb1
Update for gst::Rank
API changes
2023-11-02 14:10:59 +02:00
Sebastian Dröge
855b03a9ea
Use let-else instead of match for weak reference upgrades
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1375 >
2023-10-30 11:34:35 +02:00
Jan Alexander Steffens (heftig)
e3e58ac0be
livesync: Remove the stop from outgoing segments
...
Our buffer duplication can extend a segment indefinitely.
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/452
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1372 >
2023-10-25 19:34:47 +02:00
Jan Alexander Steffens (heftig)
f1ba498b52
livesync: Keep existing buffer duration in some cases
...
Resize a repeat buffer only if caps gave us a duration to use, or we
consider its current duration unreasonable.
In particular, for audio streams we should prefer reusing the buffer
size upstream gave us, as we did before 6633cc4046
.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1372 >
2023-10-25 19:34:47 +02:00
Jan Alexander Steffens (heftig)
59beade079
livesync: Split fallback_duration into in_ and out_duration
...
Make it independent of the `latency`; this was inconsistent anyway,
where the default latency of zero got you a fallback duration of 100 ms
and something else got you half the latency.
Maintain a separate duration for the `in` and the `out` side so we
change the duration of repeat buffers after a caps change, not just
before.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1372 >
2023-10-25 19:08:16 +02:00
Guillaume Desmottes
f94ecfc7a6
livesync: display jitter when waiting on clock
...
We already log the result of the clock wait call so may as well log the
returned jitter.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1370 >
2023-10-25 14:26:19 +02:00
Guillaume Desmottes
13dae0f0d0
livesync: log new pending segments
...
The debug print of the event does not display details about the segment:
Unqueueing Some(Event(Event { ptr: 0x7fa3e0002580, type: "segment", seqnum: Seqnum(479), structure: Some(GstEventSegment { segment: (GstSegment) ((GstSegment*) 0x7fa3e8001d00) }) }))
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1370 >
2023-10-25 14:24:35 +02:00
Jan Alexander Steffens (heftig)
ee93448de7
livesync: example: Add identities single-segment=1
...
These let us change the runtime offset of the test buffers via pad
offsets without pushing new segments into livesync, which is necessary
to demo the late-threshold behavior.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1369 >
2023-10-25 12:55:06 +02:00
Jan Alexander Steffens (heftig)
6633cc4046
livesync: Use fallback_duration for audio repeat buffers as well
...
Don't depend on upstream giving us sanely-sized buffers if we want to
repeat.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1369 >
2023-10-25 12:55:06 +02:00
Jan Alexander Steffens (heftig)
4ac7d0415b
livesync: Separate out_buffer duplicate status from GAP flag
...
Otherwise we might get confused by upstream GAP buffers.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1369 >
2023-10-25 12:10:40 +02:00
Jan Alexander Steffens (heftig)
2f36bd5d77
livesync: Handle flags and late buffer patching after queueing
...
This makes the chain function almost independent of the output state. We
still do the early discard check with `buffer_is_backwards` so we don't
try to queue buffers we can't use, allowing us to fast-forward upstream
without blocking on the src task.
Don't accept `LateOverThreshold` buffers when we have `pending_caps` or
a `pending_segment`. We need to apply these first before we can sensibly
patch buffers from the new stream.
Deduplicate most of the output buffer patching code into a new
`patch_output_buffer` method.
For: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/450
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1369 >
2023-10-25 11:52:41 +02:00
Jan Alexander Steffens (heftig)
7c48a299c3
livesync: Simplify num_duplicate counting
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1369 >
2023-10-25 11:52:40 +02:00
Jan Alexander Steffens (heftig)
17a2448237
livesync: Move num_in counting to the src task
...
This is in preparation for moving more accept/discard logic to the src
task, so we can only count `num_in` here.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1369 >
2023-10-25 11:52:40 +02:00
Jan Alexander Steffens (heftig)
1740a8e363
livesync: Move a notify closer to the interesting state change
...
Move the `notify_all` to where we pop the buffer. We're moving within a
single state lock so no change in behavior.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1369 >
2023-10-25 11:52:40 +02:00
Jan Alexander Steffens (heftig)
44f2195674
livesync: Replace an if-let with match
...
No change in behavior, yet. Separate commit to ease reviewing.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1369 >
2023-10-25 11:52:40 +02:00
Jan Alexander Steffens (heftig)
62791bfb47
livesync: Clean up state handling
...
- Separate resetting state more cleanly, introducing `set_flushing`,
`sink_reset` and `src_reset`.
- Clear the queue early when we flush, in order to unblock waits on
query responses.
- Return an error when we fail to start, pause or stop the task.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1369 >
2023-10-25 11:52:40 +02:00
Jan Alexander Steffens (heftig)
d663f708ef
livesync: Log a category error when we are missing the segment
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1369 >
2023-10-25 11:52:40 +02:00
Jan Alexander Steffens (heftig)
6567041a3d
livesync: Improve audio duration fixups
...
- An entirely missing duration is now only logged at debug level instead
of pretending the duration was zero and warning about it.
- Silently fix up a duration difference up to one sample.
- Error when we fail to calculate the duration; don't try to apply the
`fallback_duration` to a non-video stream.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1369 >
2023-10-25 11:52:40 +02:00
Jan Alexander Steffens (heftig)
0a45f776e0
livesync: Simplify start_src_task and src_loop
...
This should effect no change in behavior.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1369 >
2023-10-25 11:03:15 +02:00
Jan Alexander Steffens (heftig)
01386b8451
livesync: Rename activatemode methods to *_activatemode
...
This matches the other plugins.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1369 >
2023-10-25 11:03:14 +02:00
Sebastian Dröge
d468e1e4a6
Clean up usage of pad probes
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1361 >
2023-10-17 08:44:06 +03:00
Guillaume Desmottes
f92dc28696
fallbackswitch: protect src pad stream lock using Cond
...
Should prevent stream and State deadlocks, see https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/202
Fix #202
Hopefully fix #192 as well.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1300 >
2023-08-14 14:18:41 +02:00
Guillaume Desmottes
d3da30be6d
fallbackswitch: prevent deadlocks in chain function
...
Calling schedule_timeout() may result in handle_timeout() being called right away,
which will need pad state locks which was still hold in chain().
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1300 >
2023-08-14 13:16:37 +02:00
Guillaume Desmottes
100333c021
fallbackswitch: ensure strict ordering when taking mutexes
...
Should prevent deadlocks.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1300 >
2023-08-14 13:16:37 +02:00
Sebastian Dröge
d688aeb184
Update versions to 0.12.0-alpha.1
2023-08-10 17:21:11 +03:00
Sebastian Dröge
3b41f206bc
Don't generate .def files for plugins
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/389
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1299 >
2023-08-09 13:54:34 +03:00
François Laignel
10902c0485
utils: fix further to glib change ControlFlow -> Propagation
...
See: https://github.com/gtk-rs/gtk-rs-core/pull/1144
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1292 >
2023-08-02 13:19:22 +02:00
Sebastian Dröge
31b1cb8ca6
Update minimum supported Rust version to 1.70
...
gtk-rs will update soonish too.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1280 >
2023-07-19 09:19:34 +03:00
Sebastian Dröge
bbd3d9ffe0
Remove unnecessary mut
everywhere
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1273 >
2023-07-11 10:09:35 +03:00
Bilal Elmoussaoui
0fa2c861d6
Adapt to removal of glib::Inhibit
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1270 >
2023-07-06 22:02:31 +02:00
Jan Schmidt
2abc72b606
fallbackswitch: Change the threshold for trailing buffers
...
Only discard buffers on inactive pads if they are later
than the current output running time, rather than the
later timeout running time. That can mean switching
to a higher priority pad can happen quicker.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1198 >
2023-07-07 01:45:52 +10:00
Jan Schmidt
61e282af1a
fallbackswitch: Fix pad health calculation and notifies
...
Change the pad health calculation to consider a pad 'healthy'
if it has received data within the last 'timeout' window. Previously,
inactive pads were constantly flip-flopping between healthy and not
healthy depending on whether they were slightly ahead of or behind
the active pad running_time.
When the health status of a pad changes, make sure to always notify
the property, so that applications that are manually controlling
the active pad can make their switching decisions.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1198 >
2023-07-07 01:45:52 +10:00
Bilal Elmoussaoui
dd2d7d9215
Use re-exported once_cell
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1268 >
2023-07-06 17:50:49 +03:00
Bilal Elmoussaoui
2cc98bf410
Adapt to glib::Continue rename
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1268 >
2023-07-06 17:50:49 +03:00
Vivia Nikolaidou
9d7af671c5
togglerecord: Clip segment before calculating timestamp/duration
...
Clipping happens in buffer time space and data.clip can modify the
buffer timestamp and duration. Move it before we calculate them in order
to make it actually have some effect.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1265 >
2023-07-04 09:07:36 +00:00
Vivia Nikolaidou
8417efc630
togglerecord: Error out if main stream buffer has no valid running time
...
We cannot continue with this buffer, because we cannot calculate the
time when the recording stopped or started. We also cannot safely drop
it, because that might break the stream, especially if it's encoded.
Therefore, we return an element error.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1264 >
2023-06-30 09:20:42 +00:00
Vivia Nikolaidou
8366716456
togglerecord: Change test_two_stream_close_open_nonlivein_liveout timeout to 60ms
...
20ms was not enough for the CI.
Closes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/379
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1258 >
2023-06-26 12:33:31 +00:00
Vivia Nikolaidou
2be14b95b3
togglerecord: Fix nonlive inputs when element is started not recording
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1252 >
2023-06-21 16:27:00 +03:00
Sebastian Dröge
1119ed6620
livesync: Wait for the end timestamp of the previous buffer before looking at queue
...
Previously livesync was waiting for the start timestamp of the current
buffer after looking at the queue and right before pushing it
downstream. This meant that it generally looked too early at the queue
and especially that upstream had to provide the next buffer already at
the start timestamp of the previous one.
Instead, now wait before looking at the queue and wait for the end
timestamp of the previous buffer. Once the previous buffer has expired,
a new buffer really needs to be available or otherwise a filler buffer
has to be pushed downstream.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1250 >
2023-06-20 13:01:39 +00:00
Jan Alexander Steffens (heftig)
52ded6e8cc
livesync: Improve EOS handling
...
I've looked at the GstQueue code again and tried making livesync behave
better with EOS. This isn't very well tested, though. My goal was to
make this look saner but I think this should be reviewed by someone who
knows the queue code.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1251 >
2023-06-20 13:18:17 +02:00
Vivia Nikolaidou
063871a1eb
togglerecord: Add support for non-live inputs
...
Live input + is-live=false:
While not recording, drop input
When recording is started, offset to collapse the gap
Live input + is-live=true:
While not recording, drop input
Don't modify the offset
Non-live input + is-live=false:
While not recording, block input
Don't modify the offset
Non-live input + is-live=true:
While not recording, block input
When recording is started, offset to current running time
Co-authored-by: Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1206 >
2023-06-14 15:58:04 +03:00
Guillaume Desmottes
4683291c1f
fallbackswitch: add 'stop-on-eos' property
...
Fix the following use case:
- main input of fallbackswitch is finite (a media file)
- fallback input is infinite (videotestsrc)
- main input is done and send eos, which is propagated downstream
- fallbackswitch switches to fallback, sending STREAM_START which reset
EOS downstream (aggregator does that)
- fallback input keeps pushing buffers forever.
Solve it by adding a 'stop-on-eos' property so fallbackswitch stops
pushing property once the main input is eos.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1242 >
2023-06-13 14:49:06 +02:00
Guillaume Desmottes
6ad0db2cdb
fallbackswitch: remove unused SinkState::eos
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1242 >
2023-06-13 12:43:51 +02:00
Guillaume Desmottes
692d1bfb9e
fallbackswitch: log when handling events
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1242 >
2023-06-13 12:43:51 +02:00
Sebastian Dröge
c65b3429ad
Use MPL as license specifier for plugins only requiring GStreamer < 1.20
...
And use MPL-2.0 for all that require GStreamer 1.20 or newer. The new
string is only allowed in 1.20 or newer and using it in older versions
causes failure to load the plugin.
All affected plugins are of course still MPL-2.0 licensed.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/374
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1235 >
2023-06-07 19:13:55 +03:00
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