Sebastian Dröge
5965ff4364
fmp4mux: Accept more data on already filled streams if the remaining streams need more data for finishing a GOP
...
In other words, continue queueing buffers in sync from all streams until
all of them are ready for draining instead of stopping to queue buffers
on every stream that is already filled individually.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/310
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1081 >
2023-02-09 20:36:42 +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
Simon Himmelbauer
3c31c98d95
spotifyaudiosrc: Support configurable bitrate
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1073 >
2023-02-09 00:02:30 +02:00
rajneeshksoni
0f383a6545
hlssink3: Allow setting i-frame-only playlist.
...
HLS allows manifest where all segments are single ifames.
This manifest requires `EXT-X-I-FRAMES-ONLY` tag in the
manifest.
I-FRAMES-ONLY playlist segments are video only segments.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1070 >
2023-02-08 14:04:46 +00:00
Sebastian Dröge
44405e0cd7
dav1ddec: Make sure to call get_picture()
twice in a row when draining
...
The first time might return `EAGAIN` if there are pending frames but
there is no decoded frame available yet. The second time it will
actually wait for frames to become available and only start returning
`EAGAIN` again once no more frames are left.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1080 >
2023-02-08 11:26:25 +02:00
Sebastian Dröge
0ed74d0aa4
rtpgccbwe: Don't use clamp()
if there's no clear min/max value
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/305
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1078 >
2023-02-06 21:56:46 +02:00
Sebastian Dröge
3a408c0146
fmp4mux: Handle GOPs ending after the desired fragment end correctly
...
Either create further chunks if enough data is queued or simply start
the new fragment at a later time if the keyframe is later.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1077 >
2023-02-06 19:20:34 +02:00
Sebastian Dröge
5c2de6aeb6
gtk4: Update for GLDisplay
object lock requirements
2023-02-06 11:10:02 +02:00
Sebastian Dröge
6f26e3bf79
mp4/fmp4: Update docs
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1075 >
2023-02-04 16:32:17 +02:00
Sebastian Dröge
5627bd8d7d
mp4: Add support for AV1
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1075 >
2023-02-04 13:48:37 +00:00
Sebastian Dröge
4c3ae6f8ce
fmp4: Add support for AV1
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1075 >
2023-02-04 13:48:37 +00:00
Sebastian Dröge
cef6fef079
fmp4: Add support for VP8
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1075 >
2023-02-04 13:48:37 +00:00
Sebastian Dröge
02ac4b3b04
mp4: Add support for VP8
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1075 >
2023-02-04 13:48:37 +00:00
Sebastian Dröge
042a5d0755
deny: Update
2023-02-04 10:38:25 +02:00
Sanchayan Maity
6006a0ba36
aws/s3hlssink: Fix deadlock on EOS
...
In state change to NULL, we take state lock and call stop. When stop
is called, we will try to upload queued segments in S3 request thread.
That tries to take the state lock again and deadlocks.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1076 >
2023-02-03 19:09:18 +05:30
Sanchayan Maity
41aa1e51da
aws/s3hlssink: Use factory name when checking name of child element
...
Commit ad3f1cf
fixed the name of hlssink child element to be the same
for hlssink2 and hlssink3. However, we rely on element name to return
boolean in case of hlssink3 or None in case of hlssink2 as the return
value of the delete-fragment closure.
Fix this by using the factory name instead of the element name.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1076 >
2023-02-03 19:08:40 +05:30
Sebastian Dröge
5506f8001e
rtpav1pay: Add support for tu/frame aligned input
...
In this case every buffer can be sent out immediately and makes up a
whole frame.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1072 >
2023-02-02 20:24:27 +02:00
Sebastian Dröge
194c4e9e9f
rtpav1pay: Consider the marker flag to output packets immediately at the end of a frame
...
Otherwise it is necessary to wait for the beginning of the following
frame, which unnecessarily increases the latency.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/255
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1072 >
2023-02-02 20:24:27 +02:00
Sebastian Dröge
49350f738f
rtpav1depay: Fix depayloading of packets starting with a leading OBU fragment followed by more OBUs
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/288
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1072 >
2023-02-02 20:24:27 +02:00
Sebastian Dröge
1756d7a516
rtpav1depay: Fix error handling
...
Don't error out immediately on errors anymore but try again with the
next packet.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/289
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1072 >
2023-02-02 20:24:27 +02:00
Sebastian Dröge
ed4e9a50d5
rtpav1depay: Set DISCONT flag on buffers following a corrupted packet
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1072 >
2023-02-02 20:24:27 +02:00
Sebastian Dröge
d6cb9d72d8
rtpav1depay: Don't output full TUs but just OBUs as they come
...
Simplifies state tracking and potentially reduces latency as it's not
necessary to wait until all fragments of an OBU are received.
The last OBU of a TU is marked with the marker flag to allow parsers to
detect this without first seeing the beginning of the next TU.
Also use a simple `Vec` for collecting complete OBUs instead of a
`gst_base::Adapter` as this reduces the number of allocations.
And also handle invalid packets a little bit more gracefully.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/244
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1072 >
2023-02-02 20:24:27 +02:00
Sebastian Dröge
27128a476c
deny: Update
2023-02-02 09:24:40 +02:00
Sebastian Dröge
ecb26a0b16
fmp4mux: Fix a couple of assertions by handling these cases cleaner
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1071 >
2023-02-01 14:57:00 +02:00
Sebastian Dröge
560bdc4cb7
Update for glib API changes
2023-01-31 12:24:07 +02: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
1998ecab45
fmp4mux: Refactor and clean up code
...
Split many longer functions into multiple functions and simplify various
parts. Overall this is functionally still the same as before.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1068 >
2023-01-30 14:41:33 +00:00
Sebastian Dröge
a1cce9b796
aws: Update to AWS SDK 0.54/0.24
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1066 >
2023-01-27 22:10:23 +02:00
Sebastian Dröge
2a3d962dc5
fmp4mux: Add support for sub-fragments / chunking
...
Allow outputting sub-fragments (chunks in CMAF terms) that are shorter
than the fragment duration and don't usually start on a keyframe. By
this the buffering requirements of the element is reduced to one chunk
duration, as is the latency.
This is used for formats like low-latency / LL-HLS and DASH.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1059 >
2023-01-27 19:28:27 +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
62bfc545d3
gtk4: Fix compilation after gst_gl::Display
API changes
2023-01-27 20:46:22 +02:00
Guillaume Desmottes
abe4efc4a2
fmp4mux: add 'offset-to-zero' property
...
Add it only to 'isofmp4mux', the onvif variant already does this and
CMAF and DASH are always single-stream so you rely on inter-container
synchronization via the running-time.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1063 >
2023-01-25 12:29:30 +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
Arun Raghavan
ad3f1cf534
aws: s3hlssink: Fix the name of the hlssink child element
...
It's easier to set child element properties if the name doesn't depend
on the factory.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1061 >
2023-01-24 18:56:46 +00:00
Sebastian Dröge
ee8249eec7
fmp4mux: Don't write the first sample flags into any trun but the first
...
The flags are based on the first sample of this fragment so writing it
into any trun but the first is not very useful.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1060 >
2023-01-24 19:54:12 +02:00
Sebastian Dröge
1ceaea844a
fmp4mux: Fix decision whether per-sample flags are needed in the trun
...
Previously it would never use per-sample flags if any later sample
needed different flags than the first two.
Also comment the code a bit better.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1060 >
2023-01-24 19:54:11 +02:00
Sebastian Dröge
77d68080e8
meson: Update version to 0.10.0-alpha.1
...
Should've happened long ago already.
2023-01-24 15:44:54 +02:00
Sebastian Dröge
e0e63dd4da
dav1d: Don't treat any kind of bitstream error immediately as fatal
...
Instead use the videodecoder error handling to allow up to max-errors
consecutive decoding errors, i.e. infinite by default in 1.22 and newer.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1057 >
2023-01-23 10:46:38 +02:00
Sebastian Dröge
2c386fb792
Update for various deprecated APIs
2023-01-22 20:07:26 +02:00
Sebastian Dröge
037294b077
dav1d: Get rid of some unnecessary unwrap()
s
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1055 >
2023-01-22 00:32:52 +02:00
Sebastian Dröge
f62d07633d
dav1d: Remove unnecessary frame dropping loop
...
After flushing there are no frames left anymore that could be dropped.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1055 >
2023-01-22 00:28:15 +02:00
Sebastian Dröge
c5a625ae28
dav1d: Don't flush the decoder when draining
...
This directly discards all frames and it won't be possible to output
them anymore.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1055 >
2023-01-22 00:27:22 +02:00
Sebastian Dröge
d110977580
dav1d: Only drain at most one decoded frame per input frame unless the decoder requires more before accepting new data
...
This works around a race condition in dav1d where the decoder deadlocks
if multiple threads are used, and also is generally beneficial as it
allows for proper frame threading.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1055 >
2023-01-22 00:25:23 +02:00
Sebastian Dröge
4582ae91ab
Move remaining plugins to ParamSpec
builders
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1054 >
2023-01-21 18:34:55 +02:00