The original awstranscribe element has grown too complex when
integrating translations for reasons that in retrospect were wrong:
As awstranscribe outputs words one by one, I decided we wanted to
perform translations there with larger sentences if available, but an
alternative design where a separate translation element is composed
downstream is also possible, as long as that element accumulates words
and enough latency is set on the transcriber.
An important difference is that the new elements do not expose unsynced
pads, this use case is instead now served by simple messages on the bus.
The elements should otherwise be at feature parity with the original
element.
A higher-level bin is also provided for convenience (and usage within
transcriberbin): translationbin.
A transcriber element can be provided to this bin, which exposes an
always audio sink pad, and an always text sink pad (for the
transcripts).
Additional source pads can be requested for translations, for now the
bin always uses `awstranslate` as the translator, but this can be made
configurable.
This element is usable as a transcriber in `transcriberbin`.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2055>
Currently, the typefind logic for cdg can cause errors on files
with all conditions below:
- size multiple of NB_WINDOWS * CDG_PACKET_SIZE (8 * 24) = 192
- size less than TYPEFIND_SEARCH_WINDOW (28800)
- extension different than .cdg
With those conditions, the cdg typefind function may be the last one to
execute and cause gsttypefindhelper.c::helper_find_peek to return
GST_FLOW_EOS, and if it's the final call will then be turned to
GST_FLOW_ERROR in typefind.
That is because cdg's typefind will perform a last call to
typefind.peek(len, CDG_PACKET_SIZE) which is outside the range of typefind
(from 0 to len - 1).
Reproducer with file from cdg tests:
```
head -n 28608 BrotherJohn.cdg > BrotherJohn_short.bit
gst-play-1.0 BrotherJohn_short.bit
```
Fix this by correcting the loop bounds in the cdg typefind
logic. Perhaps the typefind helper logic should be rewritten to avoid
such cases too.
Then the example above works and unrelated files aren't affected by this
in typefind anymore.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2056>
For the MPEG-TS case, we depend on cros-codecs for parsing SPS to get
the relevant information for building codec strings. Do not compile it
for non-linux platforms. Users needing MPEG-TS on non-linux platform
need to set codec string manually as a workaround.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1515>
This adds support for direct encoding of common formats into ISO base media file
format.
There are unit tests for formats that are not completely supported, to
check that those functions work correctly, and to ease future extension.
End-to-end testing currently requires use of gpac to validate files.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1990>
The frames of a non-fragmented payload would contain
an extra two bytes before the frame sync and then
missing two bytes at the end which which would cause
decoding errors on the last block and/or frame crc
check failures.
This happened because we didn't take into account
the 2-byte packet payload header when creating output
sub-buffers, as the offsets we were using were in
relation to the payload data after the headers.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/645
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2044>
Brings support for multiple streams of each kind to fallbacksrc.
Usage past 1video/1audio stream now requires using the stream selection
API.
fallbacksrc will expose its own collection of streams, which will be
mapped to streams from the main and fallback source automatically.
This mapping can be changed via the map-streams signal.
The amount of streams being exposed by fallbacksrc is dictated by the
main source.
CustomSource has been updated to also support multi-stream scenarios,
both for stream-aware elements and for simple bins without such
functionality.
Co-authored-by: Sebastian Dröge <sebastian@centricular.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1832>
Instead of trying to figure out which global tag is meant to go into
the MVHD or such the solution now is to set the MVHD matrix to
identity and only set the TKHD matrix to either stream scope matrix if
available or global matrix (which is always available, maybe as
identity).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1975>
The language tag is purely a stream specific tag and the orientation
tag can be both, stream or global scope at the same time.
Language tags in global scope are considered to be stream scope and
orientation tags set either the mvhd box transformation matrix if
global scope or tkhd if stream scope.
And switched to GStreamer API for image orientation tag storage and
handling and added the flip transformations.
Fixes#631
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1975>