Skip to content

Conversation

@asurdej-comcast
Copy link

@asurdej-comcast asurdej-comcast commented Nov 21, 2025

GStreamerQuirksManager verifies each quirk with isPlatformSupported() that usually relies on gst elements presense in the registry. Calling this without gst_init called fails for every gst element and rejects all quirks.

The problem exists for apps that don't use any of canPlayType() or isTypeSupported() that handle gst_init

In the case I was analyzing, with audio only live stream playback, the gst_init was called in MediaPlayerPrivateGStreamer constructor, just after isHolePunchRenderingEnabled() that initialized gst quirks singleton:

#if USE(TEXTURE_MAPPER_GL) && USE(NICOSIA)
    m_nicosiaLayer = Nicosia::ContentLayer::create(Nicosia::ContentLayerTextureMapperImpl::createFactory(*this,
        [&]() -> Ref<TextureMapperPlatformLayerProxy> {
            if (isHolePunchRenderingEnabled())
                return adoptRef(*new TextureMapperPlatformLayerProxyGL);

#if USE(TEXTURE_MAPPER_DMABUF)
            if (webKitDMABufVideoSinkIsEnabled() && webKitDMABufVideoSinkProbePlatform())
                return adoptRef(*new TextureMapperPlatformLayerProxyDMABuf);
#endif
            return adoptRef(*new TextureMapperPlatformLayerProxyGL);
        }()));
#endif

    ensureGStreamerInitialized();
    m_audioSink = createAudioSink();

internally
60d9e16

Build-Tests Layout-Tests
✅ 🛠 wpe-238-amd64-build ✅ 🧪 wpe-238-amd64-layout
✅ 🛠 wpe-238-arm32-build ✅ 🧪 wpe-238-arm32-layout

GStreamerQuirksManager verifies each quirk with isPlatformSupported()
that usually relies on gst elements presense in the registry.
Calling this without gst_init called fails for every gst element
and rejects all quirks.

The problem exists for apps that don't use any of canPlayType()
or isTypeSupported() that handle gst_init internally
@asurdej-comcast
Copy link
Author

It is related to #1488

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

Labels

Development

Successfully merging this pull request may close these issues.

2 participants