Bug 249865

Summary: [GStreamer][1.22] MSE: Playback broken
Product: WebKit Reporter: Philippe Normand <philn>
Component: PlatformAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: bugs-noreply
Priority: P2    
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
gst log none

Description Philippe Normand 2022-12-24 06:13:51 PST
With GStreamer 1.21 (1.22 due very soon now), MSE is broken, the MR that broken it for us is:

https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3601

In our pipeline urisourcebin creates one parsebin per stream, because the source element pads have no caps configured yet. After this MR was merged urisourcebin now lets the first stream setup correctly, but for the second, it emits an error "Adaptive demuxer is not streams-aware, check your installation" which arguably in our pipeline is a bit weird, the adaptive demuxer in this case is the second parsebin, which hasn't had the chance to receive a stream collection yet.

When our MSE src exposes its pads the caps are already known, but we push the CAPS events too late, after exposing the pads, so they're not stick'ed on the pads yet at the moment urisourcebin calls get_pad_get_current_caps() in order to decide whether or not it should create a parsebin for the new stream...
Comment 1 Philippe Normand 2022-12-24 07:26:12 PST
Tracking issue for GStreamer: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1675
Comment 2 Philippe Normand 2022-12-24 07:40:53 PST
Created attachment 464192 [details]
gst log
Comment 3 Philippe Normand 2022-12-30 02:33:09 PST
Workaround proposed -> https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3658