Commit graph

1315 commits

Author SHA1 Message Date
Sebastian Dröge
44ad0a2f52 fallbacksrc: Differentiate between fallback and restart timeout
This also fixes the bug that the source wouldn't be restarted another
time if we switched to the fallback stream before and didn't at least
shortly switch to the normal stream. There was no timeout for this.

Based on a patch by Mathieu Duponchelle <mathieu@centricular.com>
2020-07-02 14:46:59 +03:00
Mathieu Duponchelle
f7fc5bb0a3 fallbacksrc: add missing assignment to source_pending_timeout
b3138ad041 added the field for
that purpose, let's also use it!
2020-07-02 11:51:16 +03:00
Sebastian Dröge
2192c9d3b4 fallbacksrc: Unset ghost pad targets before removing from the element
Workaround for https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/553
2020-07-02 11:38:01 +03:00
Sebastian Dröge
bde998ce50 video/cdgdec: Box CdgInterpreter state to prevent GObject private size to become too big
Only 64k are allowed for the sum of all private instance structs in the
class hierarchy, as well as for the public instance structs.

The CdgInterpreter itself is huge and adding just another two integers
to GstVideoDecoderPrivate in libgstvideo is causing the limit to be
reached, so let's allocate it in a separate memory area.
2020-07-01 01:51:23 +03:00
Sebastian Dröge
a28455f0ce Update for Element::post_message() signature change 2020-06-30 21:28:02 +00:00
François Laignel
e2f27e77ce threadshare: use tokio tag 2020-06-30 09:25:20 +00:00
Sebastian Dröge
48c20471d5 Fix compilation after flags cleanup 2020-06-30 12:04:50 +03:00
Sebastian Dröge
11d17b8de9 deny: Update for latest version of dependencies 2020-06-30 11:02:23 +03:00
Sebastian Dröge
d03c6cb26a Update various dependencies 2020-06-30 10:49:27 +03:00
Sebastian Dröge
86e983ef11 fallbacksrc: Try setting imagefreeze to live mode
Otherwise we would start outputting at running time 0, which is going to
be wrong if the pipeline was already running for a while.

Requires https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/653
2020-06-29 12:03:57 +03:00
Sebastian Dröge
f62c11f851 Update for functions returning a Builder being renamed to builder() instead of new()
And new video event APIs.
2020-06-25 19:49:07 +03:00
Sebastian Dröge
392bfc0b1e fallbacksrc: Create an identity sync=true if the new clocksync element can't be found 2020-06-25 13:58:22 +03:00
Sebastian Dröge
2e13e4ce73 fallbacksrc: Mark internal source property for custom sources as write/construct-only
It's only used during construction of the internal bin after all.
Keeping it readable would cause e.g. creating a pipeline graph trying to
read it, which is not implemented.
2020-06-25 13:47:45 +03:00
François Laignel
e40267e95d event,message,query: update instantiation
See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/532
2020-06-25 11:26:32 +02:00
Sebastian Dröge
fe274ac6e7 fallbacksrc: Use new proxy_pad_chain_function() support when building pads
Less unsafe code.
2020-06-23 10:01:27 +03:00
Sebastian Dröge
fc20df294e Remove a few unused dependencies 2020-06-22 16:29:13 +03:00
Sebastian Dröge
9bb3e75fb9 Update to use the new pad builders for safely setting pad functions
Only two uses of unsafely setting the pad functions is left:
- fallbacksrc for overriding the chain function of the proxy pad of a
  ghost pad
- threadshare for overriding the pad functions after creationg, which
  probably needs some fixing at some point
2020-06-22 11:28:19 +03:00
Sebastian Dröge
c917e77687 rusoto: Update async-tungstenite dependency to 0.6 2020-06-21 18:16:42 +03:00
Sebastian Dröge
ecac8002d9 deny: Ignore duplicated num-rational dependency for now
image depends on the old 0.2 version currently.
2020-06-19 09:32:54 +03:00
Sebastian Dröge
d9257c2219 deny: Unignore arrayvec/itertools now that nom/rav1e are updated to the new version 2020-06-19 09:31:14 +03:00
Sebastian Dröge
f4e7f127d9 flavors: Update num-rational dependency to 0.3 2020-06-18 13:07:09 +03:00
Sebastian Dröge
60321edb8c Update for new_with_XXX/new_from_XXX function renaming 2020-06-16 11:56:48 +03:00
Guillaume Desmottes
61f76548bc ci: check commit using ci-fairy
See https://freedesktop.pages.freedesktop.org/ci-templates/ci-fairy.html#checking-commits

In this setup it will check for any leftover fixup!/squash! commits and
that messages don't have the 'Signed-off-by:' tag.
2020-06-15 10:25:09 +02:00
Guillaume Desmottes
e85799b9d6 use new constructor names 2020-06-11 13:07:01 +02:00
Mathieu Duponchelle
ed4fa7fde4 tttocea608: insert preambles in roll-up mode
I thought I could spare some bandwidth by letting renderers pick
the base row, but it turns out this triggers some unwanted behaviours
with compliant renderers.

Instead, we now follow the protocol laid out in EIA/CEA-608-B,
section B.8.1

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/355>
2020-06-10 22:05:02 +02:00
Sebastian Dröge
321f418518 video: Handle Result returned by VideoMeta::add()
By simply unwrapping for now, which is still better silently having no
VideoMeta.
2020-06-08 11:08:27 +03:00
Philippe Normand
737bd459e4 jitterbuffer: Remove un-needed mut qualifiers 2020-06-06 10:26:06 +01:00
Sebastian Dröge
84a2d8b513 deny: Update to pass again 2020-06-05 12:36:41 +03:00
Sebastian Dröge
0674826376 rusoto: Update to rusoto 0.44 2020-06-05 12:29:54 +03:00
Mathieu Duponchelle
0bb626c653 closedcaption: implement cea608overlay
Useful complement to cea708overlay, that can only render native
708.

The element isn't an aggregator, and simply parses and renders
closed caption meta on its input video buffers.

No property is exposed, the rendering is done using a monospace
font, over a 32 x 15 grid with the font size fitted to fill as
much of the viewport as possible.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/343>
2020-06-04 16:53:04 +02:00
Mathieu Duponchelle
f27173e2b9 tttocea608: fix pts incrementation in roll up mode
Simple operator mistake

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/351>
2020-06-03 00:51:40 +02:00
Mathieu Duponchelle
3d26d2f27b sync elements: implement provide_clock
Since those are using the clock for sync, they need to also
provide a clock for good measure. The reason is that even if
downstream elements provide a clock, we don't want to have
that clock selected because it might not be running yet.
2020-06-02 19:31:58 +02:00
François Laignel
dfaf59a59b threadshare: simplify Pad{Src,Sink} implementations
Pad{Src,Sink}[Ref] delegate some functions to their respective
Pad{Src,Sink}Inner. Since they act as smart pointers, we can
safely implement the Deref trait to simplify the implementations.
2020-05-30 08:30:27 +00:00
Sebastian Dröge
13d3fd1cc8 Remove now unneeded gobject_sys imports 2020-05-30 11:15:33 +03:00
Mathieu Duponchelle
83b0596242 tttocea608: add roll-up modes
In roll-up mode, the element expects input text without layout
(eg new lines), and the characters it outputs are displayed
immediately, without double-buffering as in pop-on mode.

Once the last column is reached, the element simply outputs
a carriage return and the text scrolls up, potentially splitting
words with no hyphenation.

The main advantage of this mode is its simplicity and the near-zero
latency it introduces.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/347>
2020-05-30 01:36:11 +02:00
Mathieu Duponchelle
7bf43241e5 audio/transcribe: remove and merge with rusoto
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/348>
2020-05-29 20:21:34 +00:00
Mathieu Duponchelle
815aa80789 awstranscriber: implement use-partial-results property
The current implementation only makes use of non-partial results,
requiring a crazy high latency.

With this mode, we use items from partial results when they're
older than latency - 2 * GRANULARITY_MS. Depending on the latency
that the user has set this may result in reduced accuracy, the
default latency has been modified to a pretty conservative sweet
spot of 8 seconds.

This complexifies the code a bit, as items aren't identified by
AWS, and their timings can change.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/348>
2020-05-29 20:21:34 +00:00
Sebastian Dröge
08da51744b threadshare: Update from the deprecated net2 to the socket2 crate 2020-05-29 13:07:14 +03:00
Sebastian Dröge
2e283b855a deny: Skip various duplicated deps until our dependencies are updated 2020-05-29 13:07:08 +03:00
Arun Raghavan
7dc2de0c6c deny: Drop special-casing for rusoto plugins
This was added because we were on an older version of Rusoto, which is
no longer the case.
2020-05-28 14:03:19 -04:00
Arun Raghavan
d398d4a7dc rusoto: Upgrade to Rusoto 0.43
This moves to Rusoto 0.43, which has moved from futures to async/.await.
As a result, we implement a utility function to convert the
async/streaming bits to blocking operations backed by a tokio runtime.

In the process, we also need to restructure s3sink a little, so that the
client is now part of the started state (like it is for s3src). This is
a better model than a separate client, as it reflects the condition that
the client is only available in the started state.
2020-05-28 07:19:13 -04:00
Sebastian Dröge
65333d85ab transcribe: Update to rusoto 0.43 and async-tungstenite 0.5 2020-05-28 13:22:59 +03:00
François Laignel
04f85f6dbd threadshare: return false when Flush{Start,Stop} fails 2020-05-25 18:31:49 +02:00
François Laignel
244f6dd6f7 threadshare: fix Transition naming 2020-05-25 18:31:49 +02:00
François Laignel
725eb0a093 threadshare: spawn StateMachine on the futures::executor::ThreadPool
StateMachines are spawned on a runtime::Context which uses a tokio
runtime. The StateMachine doesn't need all the features from tokio
such as the IO and timers drivers.

This commit makes use of a light-weight futures executor to spawn
the StateMachines.
2020-05-25 18:31:49 +02:00
François Laignel
f0793587f6 threadshare/TaskImpl: allow transition hooks to fail...
... and add error handlers for iterate and transitions hooks with
default implementation.
2020-05-25 18:31:49 +02:00
François Laignel
5c9bbc6818 threadshare: Task: reduce memory usage
Using dynamic dispatch instead of monomorphization reduces the lib size
and memory use without affecting CPU nor throughput significantly.
2020-05-25 18:31:49 +02:00
François Laignel
1bea2ad279 threadshare: introduce TaskImpl trait
TaskImpl is the trait for specific Task behaviour. It is the basis
of a new Task model. The main motivation for this model is to ease
threadsafe implementations of state transitions.

See https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/298
2020-05-25 18:31:48 +02:00
Sebastian Dröge
b3138ad041 utils/fallbacksrc: Schedule another timeout after the last buffering activity
If we switch to the fallback stream but the last buffering activity was
less than $timeout ago, we shouldn't restart the source yet but wait a
bit longer. However for that we actually need to schedule another
timeout, which was not happening before.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/116
2020-05-21 11:45:28 +03:00
Sebastian Dröge
621907556d utils/fallbacksrc: Don't error out if we just reached 100% buffering when the timeout triggered
It will take a moment for the fallbackswitch to actually switch to the
main stream. So instead take into account the time since the last
buffering update even when we reached 100%, and don't reset that time
when reaching 100%.
2020-05-20 12:44:28 +03:00