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
Matthew Waters
df30d2fbd3
transcriberbin: add support for generating cea708 captions
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1406 >
2024-03-28 13:46:28 +11:00
Matthew Waters
b0cf7e5c81
cea708mux: add element muxing multiple 708 caption services together
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1406 >
2024-03-28 13:46:28 +11:00
Matthew Waters
756abbf807
tttocea708: add element converting from text to cea708 captions
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1406 >
2024-03-28 13:46:28 +11:00
Philippe Normand
be12c0a5f7
Fix clippy warnings after upgrade to Rust 1.77
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1512 >
2024-03-21 17:33:32 +00:00
Seungha Yang
237f22d131
sccparse: Ignore invalid timecode during seek as well
...
sccparse holds last timecode in order to ignore invalid timecode
and fallback to the previous timecode. That should happen
when sccparse is handling seek event too. Otherwise single invalid
timecode before the target seek position will cause flow error.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1485 >
2024-03-06 11:12:04 +00:00
Sebastian Dröge
5df7c01cb5
closedcaption: Port from nom to winnow
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1475 >
2024-02-26 14:00:08 +02: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
763739e3ae
Update for Buffer
/ Memory
API changes
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1409 >
2023-12-17 14:07:12 +02:00
Matthew Waters
d644bcd79a
closedcaption: update to cea708-types 0.3
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1398 >
2023-11-22 10:07:45 +11:00
Matthew Waters
5739a3d86f
cea608tocea708: create service's as requested
...
Allows the ability to push multiple Service blocks of the same service
into the same packet if necessary (unlikely but possible).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1398 >
2023-11-22 00:12:50 +11:00
Matthew Waters
ded4261971
closedcaption: move some textstyle helpers to shared files
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1398 >
2023-11-21 23:33:09 +11:00
Matthew Waters
fb9b511e15
closedcaption: move 708 service writing to shared file
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1398 >
2023-11-21 23:33:09 +11:00
Matthew Waters
4333e90220
tttocea608: use crate defined is_* functions instead of reeimplementing them
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1398 >
2023-11-21 23:33:09 +11:00
Sebastian Dröge
a33f29365a
sccparse: Fix leading spaces between the tab and caption data
...
CCExtractor is creating files like this.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1378 >
2023-11-02 21:59:02 +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
Sebastian Dröge
d468e1e4a6
Clean up usage of pad probes
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1361 >
2023-10-17 08:44:06 +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
Seungha Yang
516c623df5
transcriberbin: Configure audioresample in front of transcriber
...
Allows any samplerate and make it negotiable. Fixing a scenario
where transcriberbin is configured with passthrough enabled,
(and negotiated samplerate is not supported by transcriber)
and then setting passthrough=false later during playback.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1287 >
2023-07-24 22:51:07 +09: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
Sebastian Dröge
bbd3d9ffe0
Remove unnecessary mut
everywhere
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1273 >
2023-07-11 10:09:35 +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
Seungha Yang
02c77d2e44
mccparse: Map timecode to PTS directly without offset
...
Assumes that caption stream's timeline starts from zero,
and maps timecode time_since_daily_jam() to PTS directly without
subtracting the first seen timecode.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1246 >
2023-06-16 01:06:26 +09: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