Skip to content

base/video/orc: build with emscripten#60

Open
aslobodeniuk wants to merge 1778 commits into
gst.wasmfrom
RDI-2775
Open

base/video/orc: build with emscripten#60
aslobodeniuk wants to merge 1778 commits into
gst.wasmfrom
RDI-2775

Conversation

@aslobodeniuk

Copy link
Copy Markdown
Contributor

Issue: RDI_2775

thiblahute and others added 30 commits April 24, 2025 01:44
... since produced caps will be different depending on OS and GPU model.
Also adding Y444_16LE format to decoder's GL template caps

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8325>
Since Windows and Linux have different default values,
use empty string when generating plugin docs

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8325>
Also programatically iterate all of the base classes to register them.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8237>
Commit de30de8 added a hook for pad-chain-{pre,post} and
pad-chain-list-{pre,post}. As explained in that commit, hooking the
chain is helpful because it allows you to hook to buffer propagation in
both srcpads (pad-push) and sinkpads (pad-chain).

This patch uses the new hooks to log pad-chain in the log tracer.
Before, only pad-push was logged, so you could only follow the flow of
buffers through the srcpads.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8329>
This adds the data required in AVCDecoderConfigurationRecord for
higher profile (High variants) configurations - everything in the if(...) {...} part
of ISO/IEC 14496-15:2024 Section 5.3.2.1.2. (or 5.3.3.1.2 in the 2019 version).

Resolves an error flagged by ComplianceWarden when muxing this into ISOBMFF.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8308>
This adds the data required in AVCDecoderConfigurationRecord for
higher profile (High variants) configurations - everything in the if(...) {...} part
of ISO/IEC 14496-15:2024 Section 5.3.2.1.2. (or 5.3.3.1.2 in the 2019 version).

Resolves an error flagged by ComplianceWarden when muxing this into ISOBMFF.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8308>
gst_cuda_compositor_upload_frame() returns buffers with increased
refcount already

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8335>
…r the meta

If any of these change then the meta needs to be updated one way or another.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8288>
Simply update the render rectangle according to the scale factor. As only the
render rectangle is changed, the seqnum of the rectangle stays intact and no
additional GPU uploads are necessary.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8288>
Downloading the latest build of GStreamer-rs from its CI job and running a
script to embed the rustoc generated documentation into hotdoc based one.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8317>
Current behavior is too weird as it points to the `libs.html` page
which is empty (as ?language=rust), instead we should stay on the
same page.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8350>
According to https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4162#note_2739338
it was introduced as workaround for tearing issues.
I do not experience any tearing without flushing on both nvidia and AMD
GPU, so I suppose it's no longer needed.

Slightly improve CPU usage according to my tests.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8348>
Fixes spew of:

gst_debug_log_full_valist: assertion 'id != NULL ||
    object == NULL || G_IS_OBJECT (object)' failed

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8345>
If fill buffers are added to compensate for missing samples the input
buffer is pushed as well and has to be added to output samples count.

This ensure that add - drop == out - in.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8358>
If the drain function of the decoder triggered by FLUSH_START
is run while the output loop is running, once the output loop
finished vtdec->downstream_ret will be GST_FLOW_FLUSHING instead
of GST_FLOW_OK, which must not be treated as an error since
the queue is cleaned correctly as well.

Fix #4179

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8328>
Keep 1.0 support around so distros can manage this bump more easily.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8270>
The subproject fails on vs2022 builds with:

[...]agc2/input_volume_stats_reporter.cc(89): error C7555: use of designated initializers requires at least '/std:c++20'

So let's force C++20 in this case.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8270>
rgonzalezfluendo and others added 21 commits May 28, 2025 10:51
Otherwise, linking to this library fails because missing gio symbols
The following error is shown:

gtype.c:2092 Uncaught (in promise) RuntimeError: null function or function signature mismatch
    at codecs-example.wasm.type_iface_ensure_dflt_vtable_Wm (gtype.c:2092:13)
    at codecs-example.wasm.type_iface_vtable_base_init_Wm (gtype.c:2121:3)
    at codecs-example.wasm.type_class_init_Wm (gtype.c:407:31)
    at codecs-example.wasm.g_type_class_ref (gtype.c:3066:5)
    at codecs-example.wasm.gst_element_register (gstelementfactory.c:244:3)
    at codecs-example.wasm.gst_element_register_fakeaudiosink (gstfakeaudiosink.c:142:1)
The emscripten project did a commit replacing copied OpenAL
extensions header alext.h with its own reduced version. [1]

It was done due to incompatibilities BSD licence and MIT licence.

[1] emscripten-core/emscripten@cf8a0d000
The current task implementation makes the thread "active" waiting
on STOP and PAUSED, making it impossible to take control of the
thread for other processes. With this new API new kind of tasks can
exist that doesn't sleep during the execution, but give back the
control to the application.
Currently, GstTaskPools can be set on a pad using the STREAM_STATUS
message, assuming all GstTasks behave the same way. With this we can
set a GstTask on a pad different from the default created, but
only during the start (creation) of a task. Also add API to resume
a pad task. A task can be resumed but it is never possible to do so
if the GstPad API doesn't expose it.
It's not supported yet.

Issue: CS_3298
This allows to correctly build if FFMpeg have been configured
with restricted amount of features, e.g. configuring as

-Dauto_features=disabled
-Dlibav=enabled
-Dlibav:element_groups='viddec,auddec'
-DFFmpeg:h264_decoder=enabled
-DFFmpeg:aac_decoder=enabled
@cfoch

cfoch commented Jul 15, 2025

Copy link
Copy Markdown

Watch out the target branch

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.