Commit graph

549 commits

Author SHA1 Message Date
Matthew Waters
01ef35eac8 cea708overlay: enable a black background by default
It is the recommended colour sceheme in CEA-608.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1942>
2024-12-09 05:16:04 +00:00
Matthew Waters
144a0e431c cea708overlay: produce a slightly more CEA-608 layout
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1942>
2024-12-09 05:16:04 +00:00
Matthew Waters
9787b187de deps: update cea708-types to 0.3.5
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1942>
2024-12-09 05:16:04 +00:00
Matthew Waters
34c928e9fe tttocea708: log the bytes and times generated
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1942>
2024-12-09 05:16:04 +00:00
Matthew Waters
b23a514657 tttocea708: don't incorrectly recode timestamp to frame conversion on gap events
Simply use the already existing generate() which will convert from a timestamp
and duration into frames for processing.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1942>
2024-12-09 05:16:04 +00:00
Matthew Waters
fe49837107 cea708mux: handle different timestamped inputs
If different inputs have different framerates, then an input buffer may need
to be combined or split.  Account for that in the aggregate loop.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1942>
2024-12-09 05:16:04 +00:00
Matthew Waters
00cb3fefe9 cea708mux: output padding by default
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1942>
2024-12-09 05:16:04 +00:00
Matthew Waters
c0a3b0c868 tttocea708: output CEA-X08 padding by default
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1942>
2024-12-09 05:16:04 +00:00
Matthew Waters
9eb3ad4412 cea708mux: forward CEA-608 data correctly
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1942>
2024-12-09 05:16:04 +00:00
Mathieu Duponchelle
39a8db51de transcriberbin: register pad templates for unsynced source pads
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1963>
2024-12-06 09:38:39 +00:00
Edward Hervey
4d31001c4b cea708mux: Always pad cea708
Instead of pushing gaps, we should send out valid (empty) cea708 buffers
downstream, like we do in most other caption element

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1946>
2024-12-02 10:35:45 +00:00
Sebastian Dröge
6aeb3f2af2 Fix / silence various new Rust 1.83 clippy warnings
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1954>
2024-11-30 14:57:24 +02:00
Mathieu Duponchelle
01b3e2a8f2 transcriberbin: take synthesis latency into account
and factor out a method to calculate the element's internal latency, to
be shared with the code for calculating the size of the passthrough
queues.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1930>
2024-11-29 22:09:37 +00:00
Mathieu Duponchelle
a71fd35ebf transcriberbin: set latencies on transcribers as soon as possible
Otherwise if we wait for setup_transcription(), the transcribers might
already have reached the playing state.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1930>
2024-11-29 22:09:37 +00:00
Mathieu Duponchelle
4406851ae7 transcriberbin: add support for speech synthesis
This commit adds a new "synthesis-languages" property. Users can set it
to define a map of languages (typically translations) that should then
be routed through a "synthesis" bin, with its description specifiable
as the value of the map.

The output of this bin is then exposed as a new pad on the top-level
bin.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1930>
2024-11-29 22:09:37 +00:00
Edward Hervey
8bb0a7eecc tttocea708: Fix off-by-one issue
last_frame_no is used to eventually calculate the outgoing pts. We want to
increment it *after* having created the content

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1947>
2024-11-29 09:48:17 +00:00
François Laignel
a8146f333f all: use builder conditional setters where applicable
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1926>
2024-11-21 12:57:16 +00:00
François Laignel
4262a8aafe all: update due to new has_property signature
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1926>
2024-11-21 12:57:16 +00:00
Mathieu Duponchelle
29b5ccacdf transcriberbin: take passthrough state into account in more places
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/630
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1925>
2024-11-20 12:52:17 +01:00
Mathieu Duponchelle
1fc1ed2539 transcriberbin: relink transcriber more thoroughly
* Remove old transcriber from correct bin
* Remove old unsynced ghost pads and expose new ones
* Fix potential deadlock where State was locked after PadState

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1925>
2024-11-20 12:52:17 +01:00
Mathieu Duponchelle
169f7b762e transcriberbin: remove proxy properties on element
Those properties are now exposed on the sink pads, and should be used
directly.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1925>
2024-11-20 12:52:17 +01:00
Mathieu Duponchelle
4074f4c275 transcriberbin: simplify latency query implementation
By always replying with a synthetic latency

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1925>
2024-11-18 19:24:57 +01:00
Mathieu Duponchelle
10a022e457 transcriberbin: expose unsynced source pads for original transcripts
.. when the transcriber exposes those.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1915>
2024-11-18 17:30:54 +00:00
Mathieu Duponchelle
d993c95e38 transcriberbin: fix initial transcription setup
Only link the audio tee with the pad transcriber when it is not
in passthrough mode.

Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/628
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1916>
2024-11-14 17:35:33 +00:00
Mathieu Duponchelle
4284fe953a transcriberbin: expose lateness property
Directly mapped to the lateness property on the transcriber object.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1910>
2024-11-14 16:40:14 +00:00
Mathieu Duponchelle
635a83a8d7 transcriberbin: notify passthrough at the appropriate time
We want to enable passthrough internally, and only notify that
internally it has been enabled once the transcriber has been unlinked.

This way applications connected to the notify handler can synchronously
update the properties and attempt to disable passthrough again.

Doing so properly requires a refactoring of the transition to the
passthrough state, with the currently set passthrough mode maintained
separately from the target passthrough state.

This commit also finishes the work left incomplete in
17d7997137 by moving the passthrough
property to the sink pad class, making each transcriber passthrough
state independent from the others.

Also adds an example to demonstrate the behavior

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1856>
2024-11-05 12:23:54 +00:00
Sebastian Dröge
76282cd385 gtk4: Add missing interfaces to the widget
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1904>
2024-11-02 13:00:28 +02:00
Mathieu Duponchelle
0ea7e9a59c cea708mux: add support for force-live
This requires a bump of the gst-base dependency to 1.22 in order to
use the new set_force_live() API.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1876>
2024-10-24 15:10:15 +00:00
Sebastian Dröge
91b61ac12f closedcaption: Switch from once_cell to std for new ST2038 elements
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1777>
2024-10-23 11:42:37 +00:00
Sebastian Dröge
5864a1368f closedcaption: st2038ancdemux: Send gap events for inactive streams
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1777>
2024-10-23 11:42:37 +00:00
Sebastian Dröge
593cb6c7fc closedcaption: Add Closed Caption to ST2038 element
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1777>
2024-10-23 11:42:37 +00:00
Sebastian Dröge
c1b364696c closedcaption: Add ST2038 to Closed Caption element
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1777>
2024-10-23 11:42:37 +00:00
Sebastian Dröge
0139a37014 closedcaption: st2038ancdemux: Reset element correctly on state changes and flush-stop
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1777>
2024-10-23 11:42:37 +00:00
Sebastian Dröge
623667af03 closedcaption: st2038: Handle different alignments correctly in muxer/demuxer
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1777>
2024-10-23 11:42:37 +00:00
Sebastian Dröge
b2e37d3c98 closedcaption: Add ST2038 muxer element
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1777>
2024-10-23 11:42:37 +00:00
Tim-Philipp Müller
a4dcb52ca7 closedcaption: add an SMPTE ST-2038 ancillary data demuxer
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1777>
2024-10-23 11:42:37 +00:00
Sebastian Dröge
7e59c3f0fd Remove once_cell dependency
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1868>
2024-10-21 17:53:18 +00:00
Sebastian Dröge
b43a778a8e Fix a couple of type hierarchy bugs
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1864>
2024-10-20 19:53:15 +00:00
Sebastian Dröge
ec8759ae44 Fix various new clippy warnings due to MSRV bump
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1864>
2024-10-20 19:53:15 +00:00
Sebastian Dröge
628dee9079 gtk4: Use a correctly typed None value when retrieving the paintable property fails
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/609

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1850>
2024-10-14 18:22:04 +03:00
Ray Tiley
06c8874752 [cea608overlay] - don't indent centered text.
Adding the additional 10% padding was causing captions to render to far
to the right.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1845>
2024-10-08 16:30:43 -04:00
Sebastian Dröge
36304a7d36 gtk4paintablesink: Don't initialize a GL context unless a GL platform is enabled
And also don't suggest in the template caps that GL might be supported.

For clarification, the wayland feature is also renamed to waylandegl and
using wayland gives a deprecation warning.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1837>
2024-10-02 14:12:12 +00:00
Sebastian Dröge
d1254fc4ef gtk4paintablesink: Don't check for a GL context when filtering dmabuf caps
There's no connection between the two and dmabuf can also not be
supported if GL is also unsupported.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1837>
2024-10-02 14:12:12 +00:00
Mathieu Duponchelle
115e12c09a transcriberbin: fix linking of user-provided transcriber
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1831>
2024-10-02 11:16:02 +00:00
Mathieu Duponchelle
5eccb180be transcriberbin: support both latency and transcribe-latency properties
Also don't set translate-latency property if not present

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1831>
2024-10-02 11:16:02 +00:00
Mathieu Duponchelle
8fae519c8d transcriberbin: add debug
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1831>
2024-10-02 11:16:02 +00:00
Sebastian Dröge
c9b370a6e4 cea708mux: Fix off-by-one in deciding whether a buffer belongs to this or the next frame
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1774>
2024-09-19 12:05:42 +00:00
Sebastian Dröge
d69d0f8738 cea708mux: Stop with EOS if all pads are EOS instead of continuing forever
Also don't drop buffers if multiple tries are needed for aggregating
because some pads are not ready yet.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1774>
2024-09-19 12:05:42 +00:00
Sebastian Dröge
29b54ed2fc cea708mux: Don't create a separate source pad and actually push gap events downstream
The aggregator base class is already creating the source pad and the
source pad that was created here internally was never added to the
element at all. As such all gap events pushed on it never went anywhere.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1774>
2024-09-19 12:05:42 +00:00
Sebastian Dröge
aae9d5c0e9 closedcaption: cea608utils: Avoid overflow when deciding which lines to retain
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1776>
2024-09-17 12:00:56 +03:00