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
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
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
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
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
Seungha Yang
0135c4251c
transcriberbin: Fix passthrough state change
...
Sync state of child bin appropriately when passthrough is disabled
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1758 >
2024-08-28 05:51:26 +00:00
Mathieu Duponchelle
79657e5671
transcriberbin: fix inspect with missing elements
...
Relax the dependency on `awstranscriber` by still building the initial
state when it is absent, this also means an alternative transcriber can
be linked even when `awstranscriber` was not available during
construction.
Also fix property getter / setters to avoid unwrapping the pad state,
and bubble up channel bin construction errors instead of unwrapping (eg
when textwrap was not available).
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/584
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1679 >
2024-07-29 08:38:36 +00: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
Mathieu Duponchelle
0ef886ea16
transcriberbin: fix internal ghost pad name regression
...
As part of https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1593
source pad names on inner transcription bins were appended a suffix, but
other pieces of the code were not updated to account for that.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1645 >
2024-07-01 11:47:39 +02:00
Mathieu Duponchelle
f0df6874d8
transcriberbin: fix property proxying
...
As part of https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1546
the element started implementing the GstChildProxy interface in order to
expose properties on its sink pads, but the implementation was
incorrect and broke proxying to children elements.
In addition, an intermediary bin was introduced with no name, making it
hard to set the properties of the inner elements through the child
proxy interface, it is now named according to the name of the pad it
corresponds to.
Finally, the default transcriber is back to being named "transcriber".
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1642 >
2024-06-28 14:24:08 +00:00
Sebastian Dröge
9b323a6519
Use Option::is_some_and(...)
instead of Option::map_or(false, ...)
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1630 >
2024-06-19 13:03:37 +00: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
Mathieu Duponchelle
7cec628c43
transcriberbin: make sure to always record pad property changes
...
When the pad isn't parented yet we should still record user choices,
either in our settings or in our state.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1593 >
2024-06-06 15:42:21 +00:00
Mathieu Duponchelle
0e85973e94
transcriberbin: fix regression with > 1 translation languages
...
By making sure to expose uniquely named pads on the inner transcription
bins.
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/552
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1593 >
2024-06-06 15:42:21 +00:00
Seungha Yang
ebdcc403cf
transcriberbin: Fix mux-method=cea708
...
* Update "translation-languages" property to include G_PARAM_CONSTRUCT
so that it can be applied to initial state.
* Change default "translation-languages" value to be None instead of
cea608 specific one. Transcriberbin will be able to configure initia
state depending on selected mux method if "translation-languages" is
unspecified.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1589 >
2024-05-30 04:40:09 +09:00
Matthew Waters
45800d7636
tttocea708: ensure periodic sync points in roll up mode
...
Otherwise, without the relevant DefineWindow, then a receiver cannot
begin to display the captions from the middle of a stream.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1591 >
2024-05-29 11:15:10 +00:00
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
Mathieu Duponchelle
17d7997137
transcriberbin: add support for consuming secondary audio streams
...
In some situations, a translated alternate audio stream for a content
might be available.
Instead of going through transcription and translation of the original
audio stream, it may be preferrable for accuracy purposes to simply
transcribe the secondary audio stream.
This MR adds support for doing just that:
* Secondary audio sink pads can be requested as "sink_audio_%u"
* Sometimes audio source pads are added at that point to pass through
the audio, as "src_audio_%u"
* The main transcription bin now contains per-input stream transcription
bins. Those can be individually controlled through properties on the
sink pads, for instance translation-languages can be dynamically set
per audio stream
* Some properties that originally existed on the main element still
remain, but are now simply mapped to the always audio sink pad
* Releasing of secondary sink pads is nominally implemented, but not
tested in states other than NULL
An example launch line for this would be:
```
$ gst-launch-1.0 transcriberbin name=transcriberbin latency=8000 accumulate-time=0 \
cc-caps="closedcaption/x-cea-708, format=cc_data" sink_audio_0::language-code="es-US" \
sink_audio_0::translation-languages="languages, transcript=cc3"
uridecodebin uri=file:///home/meh/Music/chaplin.mkv name=d
d. ! videoconvert ! transcriberbin.sink_video
d. ! clocksync ! audioconvert ! transcriberbin.sink_audio
transcriberbin.src_video ! cea608overlay field=1 ! videoconvert ! autovideosink \
transcriberbin.src_audio ! audioconvert ! fakesink \
uridecodebin uri=file:///home/meh/Music/chaplin-spanish.webm name=d2 \
d2. ! audioconvert ! transcriberbin.sink_audio_0 \
transcriberbin.src_audio_0 ! fakesink
```
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1546 >
2024-04-25 11:56:01 +02:00
Seungha Yang
b3d3895ae7
cea608overlay: Fix black-background setting
...
Apply the property to newly created renderer
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1542 >
2024-04-15 15:38:31 +00:00
Matthew Waters
4dcc44687a
cea608overlay: move Send impl lower in the stack
...
Try to avoid hiding another non-Send object in the State struct.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1519 >
2024-04-10 06:55:34 +00:00
Matthew Waters
fbce73f6fc
closedcaption: implement cea708overlay element
...
Can overlay any single CEA-708 service or any single CEA-608 channel.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1519 >
2024-04-10 06:55:34 +00:00
Matthew Waters
f0c38621c1
cea608overlay: also print bytes that failed to decode
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1519 >
2024-04-10 06:55:34 +00:00
Matthew Waters
7f6929b98d
closedcaption: remove libcaption code entirely
...
It is now unused.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1517 >
2024-04-05 19:29:24 +11:00
Matthew Waters
2575013faa
cea608tott: use our own CEA-608 frame handling instead of libcaption
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1517 >
2024-04-05 19:29:24 +11:00
Matthew Waters
d8fe1c64f1
cea608overlay: use or own CEA-608 caption frame handling instead of libcaption
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1517 >
2024-04-05 19:29:24 +11:00
Matthew Waters
fea85ff9c8
closedcaption: use cea608-types for parsing 608 captions instead of libcaption
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1517 >
2024-04-05 19:29:24 +11:00
Matthew Waters
e1cd52178e
transcriberbin: also support 608 inside 708
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1406 >
2024-03-28 13:46:28 +11:00
Matthew Waters
55b4de779c
tttocea708: add support for writing 608 compatibility bytes
...
608 compatibility bytes are generated using the same functionality as
tttocea608.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1406 >
2024-03-28 13:46:28 +11:00
Matthew Waters
9db4290d2d
tttocea608: move functionality to a separate object
...
Will be used by tttocea708 later.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1406 >
2024-03-28 13:46:28 +11:00