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