"if changes... never" will NOT create the pipeline if *any* of the
changes are in these files, which is not what we want. Flip the logic,
so that the pipeline is created when any Rust file is changed, or
Cargo.toml/Cargo.lock is changed.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2121>
Input captions on multiple input pads can be bursty and may overflow an
individual output packet if naively put into an output packet leading to a
potential panic of WouldOverflow(1).
Fix by actively tracking the free space of what a generated packet would produce
and delaying output of everything that would overflow. This is in addition to
the already existing service overflow detection.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2183>
As the text to translate in span-based mode looks like:
<span>the</span> <span>year</span>
We may receive back from the service when translating to French:
<span>l'</span> <span>année</span>
Which in turn means we'll push out two items. It makes more sense to
push those as a single item, as this will prevent downstream elements
from inserting a space.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2126>
This improves the test time from ~30 seconds to ~5 seconds, mainly
because of the AV1 encoding. However reduction in the uncompressed
tests is also worth while because there are a lot of them, and
will likely be more as the number of formats supported on both
encode side and in qtdemux for round-trip.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2130>
Even if videometa is not supported downstream we can avoid copying if
the strides/offsets are matching the default ones, which often enough
they do.
This avoids copying when e.g. using fakesink after the decoder most of
the time.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2134>
Browsers send back SDP with vad=on (default) stripped, so our caps end up incompatible.
Let's re-add the explicit vad=on variant for compatibility.
Tested with Chrome, Safari and Firefox, audiolevel correctly shows up browser-side.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2116>
ESLint no longer supports the old type of config, it was automatically
migrated.
jsdoc/no-undefined-types has been raised to an error since it's been
found to hide other issues that only show up once that warning is
disabled.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2049>
This lib was only being built for direct usage as a <script>, and so it
refused to work under any module-based approach, e.g. in a React
project.
Webpack will now build an ESM bundle alongside the old browser-only one.
This ensures broader compatibility, and has been tested in an Angular
project where this lib wasn't easily usable previously.
As a sidenote, the 'browser' field was broken because the string is
never interpolated. That was breaking build e.g. when trying to use our
lib with Angular. This has been replaced with a hardcoded string under
the 'module' field (because we don't ship separate browser/non-browser
bundles, the 'browser' field isn't necessary).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2049>
* Moves some parts of the docs around to make them better parseable by
JSDoc (e.g. @classdesc moved to the constructor gets rid of duplicated
doc page for the entire class)
* Gets rid of unnecessary manual assignment of methods/properties
example: @method GstWebRTCAPI#createConsumerSession
Due to a bug in JSDoc, it doesn't automatically pick up docs in classes
marked with 'export default class ...'. Just making the export separate
is enough to fix this. I suppose this bug was why every documented part
was manually assigned to each class, and this is no longer necessary.
* Removes forced GstWebRTCAPI namespace from docs
I'm not sure why things were left this way, but at least since
563eff1193 our classes aren't actually in
any namespace (well, maybe apart from SessionState?), you can import
them one by one and no such namespace is present anywhere. I removed
that, kind of as a byproduct of the point above.
* Removes external: from type references
This is problematic because JSDoc handles this fine, but any IDE I've
tried couldn't parse those references correctly from the JSDocs, and
neither could the TypeScript compiler when autogenerating type
definitions. After removing the external: prefix, all tooling is picking
those types up fine, but JSDoc's docs end up losing links when refering
to said types. I left the definitions in index.js, so that they still
show up in the sidebar and can be easily referred to.
* Adds TypeScript type definitions (d.ts)
Those are autogenerated by running `npx tsc` in the main dir and then
manually corrected by 1) removing all undocumented ('private') functions
and 2) writing definitions for the Listener interfaces which TS can't
automatically infer from JSDocs. This makes it much easier to use our
library in TypeScript-based projects.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2049>