Commit graph

2429 commits

Author SHA1 Message Date
Arun Raghavan
b015688447 aws: s3sink: Treat stopping without EOS as an error for multipart upload
This allows us to try to clean up based on configuration (abort /
complete / do nothing) if the pipeline is shut down without an EOS.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/986>
2022-11-27 20:44:15 +02:00
Sebastian Dröge
274e57a536 Update Cargo.lock 2022-11-13 20:26:21 +02:00
Sebastian Dröge
e434fd19ca Update versions to 0.9.1 2022-11-13 20:23:47 +02:00
Sebastian Dröge
28065de413 closedcaption: Update for deprecated chrono functions
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/977>
2022-11-12 18:41:58 +02:00
Sebastian Dröge
a6f64b5b20 version-helper: Update for deprecated chrono functions
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/977>
2022-11-12 18:24:02 +02:00
Sebastian Dröge
5295fe9e67 Update Cargo.lock
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/977>
2022-11-12 18:15:50 +02:00
Guillaume Desmottes
331d053516 webrtc: README: fix couple of links
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/977>
2022-11-12 15:52:50 +00:00
Mathieu Duponchelle
5c9bc03eab webrtcsink: improve debug
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/977>
2022-11-12 15:52:50 +00:00
Tim-Philipp Müller
8c454c5c37 ci: add trigger job and only run documentation job post-merge
- require manual trigger to run pipeline on branches and MRs
- require manual trigger to run pipeline post-merge (excl. docs)

https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/417

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/977>
2022-11-12 15:52:50 +00:00
Tim-Philipp Müller
a9f3ff2925 ci: add integration stage and move documentation job to that
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/977>
2022-11-12 15:52:50 +00:00
François Laignel
cdf07dd860 ts/udpsink: handle items in the PadSinkHandler
... instead of forwarding them to a Task via a channel.

This improves CPU usage by 5% according to `udpsrc-benchmark-sender`
with the `tuning` feature using default audio test buffers and
400 streams on the same ts-context.

It is expected to improve latency significantly. This is inferred
from `ts-standalone`: latency shrinks from around 5ms to 1.5µs
using the `task` sink compared to the `async-mutex` sink.

The async Mutex is mandatory here as we need to hold the lock
across await points.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/977>
2022-11-12 15:52:50 +00:00
François Laignel
2e52fece61 ts: introduce ts-audiotestsrc
This makes it easy to generate "listenable" signals and to evaluate
discontinuities.

When the `tuning` feature is activated and the `main-elem` property
is set, the element can log the parked duration in %, which is an
image of the CPU usage for the ts-context.

This commit adds a test mode to `udpsrc-benchmark-sender` which
generates default audio buffers from `ts-audiotestsrc`. The `rtp`
mode is modified so that it uses `ts-audiotestsrc`.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/977>
2022-11-12 15:52:50 +00:00
François Laignel
01816e2a8a ts/standalone: add new Sinks
Contrary to the existing Task Sink, the Async and Sync Mutex Sinks
handle buffers in the `PadSinkHandler` directly. The Async Mutex
Sink uses an async Mutex for the `PadSinkHandlerInner` while the
Sync Mutex Sink uses... a sync Mutex.

All Sinks share the same settings and stats manager.

Use the `--sink` command line option to select the sink (default is
`sync-mutex` since it allows evaluating the framework with as little
overhead as possible.

Also apply various fixes:

- Only keep the segment start instead of the full `Segment`. This
  helps with cache locality (`Segment` is a plain struct with many
  fields) and avoids downcasting the generic `Segment` upon each
  buffer handling.
- Box the `Stat`s. This should improve cache locality a bit.
- Fix EOS handling which took ages for no benefits in this
  particular use case.
- Use a macro to raise log level in the main element.
- Move error handling during item processing in `handle_loop_error`.
  This function was precisely designed for this and it should reduce
  the `handle_item`'s Future size.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/977>
2022-11-12 15:52:50 +00:00
François Laignel
ea82881e1c ts/standalone: move current sink under task_sink
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/977>
2022-11-12 15:52:50 +00:00
Sebastian Dröge
429e545e5c deny: Update
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/977>
2022-11-12 15:52:50 +00:00
Sebastian Dröge
2e3373647a Add missing doc features to WebRTC plugins
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/977>
2022-11-12 15:52:50 +00:00
Sebastian Dröge
43ac186e69 fmp4mux: Make media/trak timescales configurable
And refactor a bit of code for easier extensibility.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/977>
2022-11-12 15:52:50 +00:00
Sebastian Dröge
1ef9a46508 ci: Update to cargo-c 0.9.14
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/977>
2022-11-12 15:52:50 +00:00
Jan Beich
b7891e77e5 meson: optionalize pango dependency used by net/onvif
Similar to -Dpango=<auto|enabled|disabled> in gst-plugins-base.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/977>
2022-11-12 15:52:49 +00:00
Jan Beich
bdb423e2b9 ndi: provide Unix fallback after 3fe9e4a207
error[E0425]: cannot find value `LIBRARY_NAME` in this scope
   --> net/ndi/src/ndisys.rs:336:23
    |
336 |             path.push(LIBRARY_NAME);
    |                       ^^^^^^^^^^^^ not found in this scope

error[E0425]: cannot find value `LIBRARY_NAME` in this scope
   --> net/ndi/src/ndisys.rs:339:33
    |
339 |             path::PathBuf::from(LIBRARY_NAME)
    |                                 ^^^^^^^^^^^^ not found in this scope

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/977>
2022-11-12 15:52:49 +00:00
Sebastian Dröge
4556657602 fmp4mux: Don't allow VP9 for CMAF
This would require setting the correct compatible band for VP9 in CMAF,
which is not implemented yet.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/977>
2022-11-12 15:52:49 +00:00
Sebastian Dröge
cb5a956ee7 fmp4mux: Add initial Opus support
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/239

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/977>
2022-11-12 15:52:49 +00:00
Sebastian Dröge
d0228ed544 docs: Remove some stale entries of renamed elements
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/977>
2022-11-12 15:52:49 +00:00
Arun Raghavan
6b3f0f764e aws: Skip s3 test on Windows until we figure out why it times out
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/977>
2022-11-12 15:52:49 +00:00
Sebastian Dröge
07f3b0f504 Fix various new clippy warnings
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/977>
2022-11-12 15:52:49 +00:00
Sebastian Dröge
8dc22d3bf1 fmp4mux: For VP9, write resolution into the tkhd and include a stss box to signal that not all frames are sync samples
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/977>
2022-11-12 15:52:49 +00:00
Sebastian Dröge
f2f0eb30e0 webrtc: Update to human_bytes 0.4
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/977>
2022-11-12 15:52:49 +00:00
Sebastian Dröge
b596b407f6 aws: Update to aws 0.21/0.51
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/977>
2022-11-12 15:52:49 +00:00
Sebastian Dröge
2b6d87cf66 fmp4mux: Remove unused uuid dependency
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/977>
2022-11-12 15:52:49 +00:00
Sebastian Dröge
18fa678a5c Update Cargo.lock 2022-10-27 15:36:30 +03:00
Sebastian Dröge
8e2a6500aa fmp4mux: Clip negative PTS to zero/last PTS instead of erroring out
This can happen at the beginning of a stream if upstream is
rtpjitterbuffer and it has problems figuring out timestamps in the
beginning due to resetting / skew.
2022-10-27 15:35:17 +03:00
Sebastian Dröge
e268577994 fmp4mux: Send force-keyunit events for now if the ideal position has already passed 2022-10-27 15:35:17 +03:00
Sebastian Dröge
f2a6a8d3de fmp4mux: Add debug log when writing the mfra box 2022-10-27 15:35:17 +03:00
Sebastian Dröge
51ff099221 fmp4mux: Reset timing infos to None if a stream only contained gap events for a whole fragment 2022-10-27 15:35:17 +03:00
Sebastian Dröge
eefa8540ba fmp4mux: If a stream is longer than the main stream at EOS, simply include all of its buffers in the last fragment nonetheless 2022-10-27 15:35:17 +03:00
Sebastian Dröge
790453364d whipsink: Add object to debug logs 2022-10-27 15:34:52 +03:00
Matthew Waters
32d2372e90 fmp4mux: don't require dts for predictive-only formats like vp9 2022-10-27 15:34:52 +03:00
Guillaume Desmottes
15955758b6 aws: fix title in README
The title was not matching the actual plugin name which was confusing.
2022-10-27 15:34:52 +03:00
Sebastian Dröge
54fe3f1c02 deny: Update 2022-10-27 15:34:32 +03:00
Matthew Waters
a54318fbb4 fmp4: add support for muxing VP9 streams in cmaf, dash and iso fmp4
As specified in https://www.webmproject.org/vp9/mp4/
2022-10-27 15:34:32 +03:00
Sebastian Dröge
46152533ba Add Cargo.lock 2022-10-24 19:28:41 +03:00
Sebastian Dröge
ba5270d30a Update to release versions of gtk-rs and gstreamer-rs 2022-10-24 19:28:41 +03:00
Sebastian Dröge
2ff40142db Update versions to 0.9.0 2022-10-24 18:25:05 +03:00
Sebastian Dröge
b64f951160 Update to async-tungstenite 0.18 2022-10-24 18:03:33 +03:00
Sebastian Dröge
6d21231554 pngenc: Encode every frame individually
Passing multiple frames to the encoder only causes the PNG header to be
written before the very first frame and is meant for writing animated APNG.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/261
2022-10-24 16:35:51 +03:00
François Laignel
5ca033049e ts/pad: use gst::Pad in handlers trait functions...
... instead of the `Pad{Src,Sink}Ref` wrappers:

- In practice, only the `gst::Pad` is useful in these functions.
  Some of these which need a `Pad{Src,Sink}Ref`, but it's the one
  for the opposite stream direction. In those cases, it is accessed
  via the element's implementation.
- It saves a few `clone`s.
- The implementations usually use the `gst::Pad` for logging.
  They no longer need to access it via `pad.gst_pad()`.
2022-10-24 13:15:13 +02:00
François Laignel
554ce7e7d6 ts/pad: don't pass self as ref in remaining handler traits functions
- They are either unit types or `Clone` (in which case they are implemented
  as pointers).
- Internally, we already use an owned version, so there's no need to get a
  reference.
- It facilitates implementation if the handler must be moved into a closure
  or a `Future`.
2022-10-24 12:01:09 +02:00
Sebastian Dröge
43e28e5a6d textwrap: Update to textwrap 0.16 2022-10-24 11:19:52 +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