Matthew Waters
a8b46f1bf4
closedcaption: add cea608tocea708 element
...
Implement an element that can take an input 608 caption stream and
generate a valid 708 caption stream by parsing the 608 data and
generating the equivalent DTVCCPackets and Service blocks.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1112 >
2023-04-05 13:00:32 +10:00
Matthew Waters
c0dc6eb35c
cea608utils: track last channel for characters without channel embedded
...
If a basicna character is received, it will always have a channel of 0
even if it's directed at a different data channel. Fix by keeping track
of the last channel from other commands and using that when producing
text in the basicna subset.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1112 >
2023-04-05 12:18:15 +10:00
Matthew Waters
9a5e5db271
closedcaption: move 608 utility functions to a separate file
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1112 >
2023-04-05 12:18:15 +10:00
Tim-Philipp Müller
8845f6a4c6
git: replace LICENSE file symlinks with copies
...
Git will de-duplicate the contents for us anyway, and
symlinks can cause problems with some versions of git
and also on Windows.
https://github.com/mesonbuild/meson/issues/11646
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4326
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1157 >
2023-04-04 14:26:37 +01:00
Seungha Yang
8576af247b
transcriberbin: Set start-time-selection=first to cea608mux
...
We don't want to modify running time of caption stream
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1155 >
2023-04-03 13:32:55 +00:00
Mathieu Duponchelle
8cb328b6f2
transcriberbin: add support for translations
...
With this, if the transcriber element in use supports "translation_src_"
request source pads, the user can now specify what languages to
translate to and how to map them to 608 channels (only CC1 and CC3 are
supported).
For instance, translation-languages="languages, CC3=transcript, CC1=fr"
will cause the original transcript to be muxed into the CC3 channel, and
the French translation to be muxed into the CC1 channel.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1149 >
2023-03-29 01:58:37 +02:00
Mathieu Duponchelle
002e22510f
transcriberbin: fix deadlock on construction error
...
Don't post an error message on the bus while holding the state lock
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1148 >
2023-03-24 23:36:30 +01:00
Mathieu Duponchelle
93f61483b5
tttocea608: fix disappearing text after special character in non-popon
...
To avoid special characters getting de-duplicated by the decoder, we
insert no-op control commands after those. The no-op command must be
picked according to the mode we're in however, inserting
"resume_caption_loading" commands in roll-up mode caused obvious issues.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1147 >
2023-03-24 21:41:21 +01:00
Mathieu Duponchelle
82ccba4267
tttocea608: fix pushing unfixed caps downstream
...
Allowed downstream caps might hold multiple structures, simply fixating
the first structure is not enough, tttocea608 must also create caps with
a single structure from there (or remove the remaining structures, but
new caps seems cleaner)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1146 >
2023-03-24 17:51:01 +01:00
Mathieu Duponchelle
9e3110988c
transcriberbin: fix initial transcription bin setup
...
When passthrough=false at construction and the transcription bin
is linked after receiving video caps (and not on state change),
there could be a race where transcription-bin was linked with
tee but state change of the transcription-bin was not finished.
If upstream pushed a buffer at that point, it got a flushing flow
return and stopped streaming.
This is the same issue and the same fix as 558656deb5
for the initial passthrough=false case.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1142 >
2023-03-22 23:39:32 +01:00
Carlo Cabrera
825fe9a4e2
gtk4: Fix compilation on macOS
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/332
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1138 >
2023-03-18 16:05:30 +02:00
Sebastian Dröge
f7c8940ff2
gtk4: Update for glib::Priority
API changes
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1132 >
2023-03-12 10:27:16 +02:00
Sebastian Dröge
82f1789589
Fix indentation broken by cargo clippy --fix
...
... and another clippy warning.
2023-03-09 17:38:41 +02:00
Sebastian Dröge
b025d068f2
Update for remaining gst::Element::link_many()
and related API generalization
...
Specifically, get rid of now unneeded `&`.
2023-03-09 17:30:57 +02:00
Sebastian Dröge
fc5ed15af5
Update for gst::Element::link_many()
and related API generalization
...
Specifically, get rid of now unneeded `&`.
2023-03-09 16:46:52 +02:00
Sebastian Dröge
3ef8a48ded
Fix a few new clippy warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1120 >
2023-03-07 08:47:01 +00:00
Sebastian Dröge
bca4af0c79
gtk4: Set sync point on the video frame after mapping it
...
Otherwise it is not always ready for use yet in GTK even after waiting
on the sync point, and a fully transparent texture is rendered instead.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/320
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1103 >
2023-02-24 11:52:28 +02:00
Jordan Petridis
90455a8111
video/gtk4: Add a flatpak snippet example in the README
...
Close #155
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1102 >
2023-02-22 22:15:40 +02:00
Sebastian Dröge
ce1faa6020
gtk4: Attach channel receiver to the default main context from the main thread
...
It requires acquiring the main context for thread-safety reasons and
that is only possible from the main thread itself.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/319
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1099 >
2023-02-22 10:02:45 +02:00
Sebastian Dröge
f08b65ece1
gtk4: Don't unnecessarily set the sink to READY to retrieve the context
...
That's not needed and will cause the GL context messages to be not
distributed inside the pipeline.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1099 >
2023-02-21 21:36:45 +02:00
Sebastian Dröge
8aa5125d5b
gtk4: Refactor and simplify GL context handling
...
Create a single, global GDK GL context and the corresponding GStreamer
GL display and wrapped GStreamer GL context when initializing the first
sink and continue using that for all further sinks.
Additionally, don't create a full GStreamer GL context inside the sink
but only distribute the wrapped GL context in the pipeline so that
elements that actually need a full GL context can create one that is
sharing with that one. The sink itself does not need a full GStreamer GL
context.
Then inside the sink check that any GL memory that arrives was created
by a GL context that can share with the wrapped GDK GL context and only
then use it.
And lastly, use the correct GL contexts for a) creating a sync point and
b) actually waiting on it.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/318
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1099 >
2023-02-21 21:36:45 +02:00
Sebastian Dröge
9fc1404415
Update minimum supported Rust version to 1.66
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1096 >
2023-02-20 11:09:01 +02:00
Sebastian Dröge
04e101c605
Optimize various error message / debug message formatting
...
Directly make use of format strings instead of formatting a string
beforehand and then passing it to the macros.
2023-02-13 11:50:57 +02:00
Sebastian Dröge
1e13dbb99c
Update versions to 0.11.0-alpha.1
2023-02-10 00:23:56 +02:00
Sebastian Dröge
44405e0cd7
dav1ddec: Make sure to call get_picture()
twice in a row when draining
...
The first time might return `EAGAIN` if there are pending frames but
there is no decoded frame available yet. The second time it will
actually wait for frames to become available and only start returning
`EAGAIN` again once no more frames are left.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1080 >
2023-02-08 11:26:25 +02:00
Sebastian Dröge
5c2de6aeb6
gtk4: Update for GLDisplay
object lock requirements
2023-02-06 11:10:02 +02:00
Sebastian Dröge
c7209dbd4f
Return exit code from gio::Application::run()
from main()
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1065 >
2023-01-27 18:50:01 +00:00
Sebastian Dröge
62bfc545d3
gtk4: Fix compilation after gst_gl::Display
API changes
2023-01-27 20:46:22 +02:00
Sebastian Dröge
3b4c48d9f5
Fix various new clippy warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1062 >
2023-01-25 10:31:19 +02:00
Sebastian Dröge
e0e63dd4da
dav1d: Don't treat any kind of bitstream error immediately as fatal
...
Instead use the videodecoder error handling to allow up to max-errors
consecutive decoding errors, i.e. infinite by default in 1.22 and newer.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1057 >
2023-01-23 10:46:38 +02:00
Sebastian Dröge
037294b077
dav1d: Get rid of some unnecessary unwrap()
s
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1055 >
2023-01-22 00:32:52 +02:00
Sebastian Dröge
f62d07633d
dav1d: Remove unnecessary frame dropping loop
...
After flushing there are no frames left anymore that could be dropped.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1055 >
2023-01-22 00:28:15 +02:00
Sebastian Dröge
c5a625ae28
dav1d: Don't flush the decoder when draining
...
This directly discards all frames and it won't be possible to output
them anymore.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1055 >
2023-01-22 00:27:22 +02:00
Sebastian Dröge
d110977580
dav1d: Only drain at most one decoded frame per input frame unless the decoder requires more before accepting new data
...
This works around a race condition in dav1d where the decoder deadlocks
if multiple threads are used, and also is generally beneficial as it
allows for proper frame threading.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1055 >
2023-01-22 00:25:23 +02:00
Sebastian Dröge
458b2386ed
Update for glib API changes
2023-01-21 18:13:48 +02:00
Sebastian Dröge
b6af64b970
gtk4: Only provide a buffer pool to upstream if it requested one
2023-01-19 16:37:02 +02:00
Sebastian Dröge
d1196c3e28
gtk4: Update for allocation query caps API changes
...
And make no caps into a non-error.
2023-01-19 16:36:37 +02:00
Sebastian Dröge
03df4f253c
gtk4: Asynchronously flush frames from GDK
...
There is no need to wait until the frames are flushed as the textures
will be kept alive until GDK is finished with them, and doing so can
cause deadlocks.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/287
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1052 >
2023-01-19 13:53:21 +02:00
Sebastian Dröge
b161f56a5c
gtk4: Keep GstGLMemory
alive as long as it is used inside GDK
...
Otherwise the texture might be released in the meantime and GDK would
use an invalid GL texture ID.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/287
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1052 >
2023-01-19 13:51:57 +02:00
Sebastian Dröge
4464bf2eaa
Update for gtk::Application
constructor API changes
2023-01-16 11:51:10 +02:00
Sebastian Dröge
6132788b02
Update for caps/structure-related string API changes
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1048 >
2023-01-15 22:58:44 +02:00
Sebastian Dröge
1a06f5e671
rav1e: Enable threading support
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1039 >
2023-01-09 14:04:13 +02:00
Sebastian Dröge
58c21d9868
gtk4: Propagate the GL display to the remainder of the pipeline
...
This allows sharing it with other parts of the pipeline and avoids
creating different, incompatible displays/contexts in different parts of
the pipeline.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1037 >
2023-01-07 12:42:42 +02:00
Sebastian Dröge
27435ad82e
Update for API changes
2023-01-05 12:33:54 +02:00
Sebastian Dröge
de23ea7f29
video: Fix compilation after API changes
2023-01-04 13:39:14 +02:00
Sebastian Dröge
439ada614c
gtk4: Rename a variable to make more sense
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1032 >
2022-12-29 11:13:25 +02:00
Sebastian Dröge
f72540f5c2
gtk4: Handle more GL context creation failures gracefully
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1032 >
2022-12-29 11:13:25 +02:00
Sebastian Dröge
9ec06199b1
gtk4: Reset app context and display if GL context creation fails
...
No need to keep them around and that way we either have all 3 values set
or none of them.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1032 >
2022-12-29 11:13:25 +02:00
Sebastian Dröge
4ee70913bd
gtk4: Reduce number of unwraps during GL context creation and query handling
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1032 >
2022-12-29 11:13:25 +02:00
Jordan Petridis
cf0ba40115
video/gtk4: Fix typo in info logs
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1030 >
2022-12-29 02:59:26 +00:00