Piotr Brzeziński
c4bcdea830
hlscmafsink: Add new-playlist signal
...
Allows you to switch output between folders without having to state change to READY to close the current playlist.
Closes the current playlist immediately and starts a new one at the currently set location.
Should be used after changing the relevant location properties.
Makes use of the send-headers signal in cmafmux.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1692 >
2024-08-22 02:06:51 +00:00
Piotr Brzeziński
b6406013c5
hlssink3: Fix racy test by separating events (signals) from bus messages
...
Was regularly failing on the CI. Bus messages are handled async here, so they need to be tracked separately.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1737 >
2024-08-21 19:49:09 +00:00
Piotr Brzeziński
982a9a9aea
hlssink3: Post hls-segment-added message
...
Posts a simple 'hls-segment-added' message with the segment location, start running time and duration.
With hlssink2, it was possible to catch 'splitmuxsink-fragment-closed', but since hlssink3 doesn't forward that message
(and hlscmafsink doesn't even use that mux), the new one was added to allow for listening for new fragments being added.
I extended the existing tests to check whether this message is posted correctly.
They theoretically only cover hlssink3, but hlscmafsink uses the same base class so it should be alright for now.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1677 >
2024-08-20 18:32:59 +00:00
Sebastian Dröge
ede82ca5b4
hlssink3: Don't use is-live=true
...
This sometimes produces imperfect timestamps that cause the fragment
duration to be slightly different than expected.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1716 >
2024-08-14 13:05:40 +03:00
Sebastian Dröge
98b28d69ce
Update for new debug log macro syntax
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1658 >
2024-07-08 11:25:23 +03:00
Sebastian Dröge
69c3c2ae46
Fix various new clippy 1.79 warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1620 >
2024-06-14 08:33:49 +03:00
Sebastian Dröge
f68655b5e2
Update for gst::BufferList
API changes
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1610 >
2024-06-08 09:58:10 +03:00
Sanchayan Maity
fe55acb4c9
net/hlssink3: Refactor out HlsBaseSink & hlscmafsink from hlssink3
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1564 >
2024-05-09 21:50:32 +05:30
Sebastian Dröge
be3ae583bc
Fix new Rust 1.78 clippy warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1559 >
2024-05-02 18:36:23 +03: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
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
Arun Raghavan
d27a04e067
hlssink3: Close the playlist giostreamsink on stop if possible
...
This is a property that will be available from GStreamer 1.24, and will
ensure that we are able to flush the playlist during the READY->NULL
transition instead of when the element is freed.
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/423
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1360 >
2023-10-24 21:03:14 +00:00
Seungha Yang
22cc8c4986
hlssink3: Update README
...
Mention newly added hlscmafsink element and new properties
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1306 >
2023-09-25 21:34:05 +09:00
Seungha Yang
1888a2eb82
hlscmafsink: Add live recording example
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1306 >
2023-09-25 21:34:05 +09:00
Seungha Yang
52117e4b11
hlsbasesink: Add enable-endlist property
...
Write "EXT-X-ENDLIST" tag at the end of stream if enabled, and
default to "TRUE" which is the hlssink2's behavior as well
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1306 >
2023-09-25 21:34:05 +09:00
Seungha Yang
7835d78b3d
hlssink3: Add hlscmafsink element
...
Adding cmafmux based hls sink element
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1306 >
2023-09-25 21:34:00 +09:00
Seungha Yang
5b563006f9
hlssink3: Add baseclass implementation
...
Adding HlsBaseSink class to make code reusable
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1306 >
2023-09-25 21:32:16 +09:00
Seungha Yang
0fe69cea9f
hlssink3: Various cleanup
...
* Simplify state/playlist management
* Fix a bug that segment is not deleted if location contains directory
and playlist-root is unset
* Split playlist update routine into two steps, adding segment
to playlist and playlist write
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1306 >
2023-09-25 21:32:16 +09:00
Seungha Yang
d8546dd140
hlssink3: Don't remove uri from playlist if playlist-length is zero
...
Behave as documented in property description
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1306 >
2023-09-25 21:32:16 +09:00
Seungha Yang
8e4863e9cd
hlssink3: Don't remove old files if max-files is zero
...
Follow hlssink2 element's behavior
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1306 >
2023-09-25 21:32:16 +09:00
Seungha Yang
a8d67cc607
hlssink3: Remove unused deps
...
gstreamer-base dep is unused. And use gst::glib
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1306 >
2023-09-25 21:32:16 +09:00
Seungha Yang
c4d371d163
hlssink3: Use Path API for getting file name
...
Current implementation does not support Windows path separator.
Use Path API instead.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1306 >
2023-09-25 21:32:16 +09:00
Seungha Yang
7f16ac3915
hlssink3: Use sprintf for segment name formatting
...
The zero-padded naming requirement is unnecessary. Use simple
sprintf instead
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1306 >
2023-09-25 21:32:16 +09:00
Arun Raghavan
8bbfb10cba
hlssink3: Minor PDT-related naming fixups
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1332 >
2023-09-20 16:52:55 -04:00
rajneeshksoni
a7fe24a294
hlssink3: Add property track-pipeline-clock-for-pdt.
...
This is required to take care of clock skew between
system time and pipeline time.
`track-pipeline-clock-for-pdt: true` mean utd time is
sampled for first segment and for subsequent segments
keep adding the time based on pipeline clock. difference
of segment duration and PDT time will match.
track-pipeline-clock-for-pdt: false` mean utd time is
sampled for each segment. system time may jump forward
or backward based on adjustments. If application needs
to synchronization of external events `false` is
recommended.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1145 >
2023-09-20 13:54:48 +03:00
rajneeshksoni
4be24fdcaf
hlssink3: Allow adding EXT-X-PROGRAM-DATE-TIME tag.
...
- connect to `format-location-full` it provide the first
sample of the fragment. preserve the running-time of the
first sample in fragment.
- on fragment-close message, find the mapping of running-time
to UTC time.
- on each subsequent fragment, calculate the offset of the
running-time with first fragment and add offset to base
utc time
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1145 >
2023-09-20 13:54:48 +03: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
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
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
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
François Laignel
8e93d294e5
Update to argumentless {Bin,Pipeline}::new
...
See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/449
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1197 >
2023-05-12 12:55:31 +02:00
Sebastian Dröge
cc3646640e
Fix a couple of new Rust 1.69 clippy warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1186 >
2023-04-20 16:47:45 +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
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
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
Arun Raghavan
487d7fb26b
hlssink3: Allow GIOStream signal handlers to return None
...
If creating a playlist or fragment stream fails (disk is full, the
directory is removed, ...), we will currently crash because the signal
handler expects a non-None GIOStream. The actual callback is allowed to
return None values and we handle this in the caller, so let's not have
this restriction on the signal handler.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1093 >
2023-02-14 11:25:44 -05:00
Arun Raghavan
39e0acb55a
hlssink3: Fix case on unspecified playlist type nick for consistency
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1089 >
2023-02-10 23:07:12 +00:00
Sebastian Dröge
1e13dbb99c
Update versions to 0.11.0-alpha.1
2023-02-10 00:23:56 +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
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
458b2386ed
Update for glib API changes
2023-01-21 18:13:48 +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
27435ad82e
Update for API changes
2023-01-05 12:33:54 +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
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