Version details from the affected install (Proton Experimental 11.0, game 2300840, SteamLinuxRuntime_4 / pressure-vessel sniper 3.0.20260805.254768):
The gst plugins in the failing path are bundled in Proton itself: files/lib/x86_64-linux-gnu/gstreamer-1.0/ (GStreamer 1.22). libgstlibav.so links libavformat.so.58 / libavcodec.so.58 / libavutil.so.56, which resolve from the Steam client runtime (ubuntu12_64); its libavcodec.so.58 is dated 2023-12-20, FFmpeg 4.x generation. The sniper platform manifest itself contains no gstreamer packages.
The same files decode fine under GE-Proton11-6, whose winedmo path bundles libavcodec.so.62 (Lavc62.28.102, FFmpeg 7.1 generation).
A community report also claims the GE switch fixes the ROTTEN ending trigger, a separate symptom in the same save flow; unverified by me.
I did not determine why avdec_h264 refuses the caps; the caps themselves look valid (byte-stream, streamheader with SPS/PPS, parsed=true, alignment=au).
Follow-up with a separate root cause for one-shot (non-looping) clips. This is not the winegstreamer caps issue above.
The game opens its end-of-game cinematic with the playback rate already 0 (Electra/Media Foundation opens paused), then sets rate 1 when the clip should play. The clip renders to its end but MESessionEnded is never delivered, so the game never advances past the ending. We reproduced this without the game, on the same mp4 through a plain IMFMediaSession:
In the failing case +mfplat shows zero MEStreamSinkRequestSample and zero ProcessSample on the audio renderer, against 585/194 in the pause-after-Start case. The session just polls the clock until it is killed.
Cause is in dlls/mf/sar.c (mainline, current master):
So a session started while paused never gets its first sample request. The source is never pumped to EOF, MEEndOfPresentation never fires, and MESessionEnded never arrives. Any app that opens a non-looping clip paused and unpauses later hits this; Unreal Engine Electra does this on every one-shot clip.
Tested on wine-11.0 (GE-Proton11-6, Staging) with the winedmo path, and the same code is present in mainline master. Test source and traces available on request; I plan to file this on WineHQ Bugzilla with the repro attached.
games that use h264 codec need to have codec support unlocked for it, If you runt his in your terminal once, videos should play on upstream proton steam steam://unlockh264/
ge-proton11-6x3 2026-09proton experimentalx2 2026-09DXVK_FILTER_DEVICE_NAMEx1 2026-09WINEDEBUG="+winedmo,+mfsrcsnk,+mfplat,+mfmediaengine,+mfplay,+mfreadwrite"x1 2026-090x80004002x1 2026-090xc00d3e85x1 2026-09
Subliminal (appid 2300840, UE 5.7) shows white/blank TVs wherever the game plays video (Basement, Playplace, side rooms). TV audio still plays, so it's easy to miss, but progression is gated on a TV video — the ROTTEN ending reportedly never triggers without it. ProtonDB has the same report ("videos and TV screens would fail to play").
Setup: Proton Experimental 11.0-20260903b, RTX 5090, Debian, KDE Wayland. The game's TV player is UE's Electra player opening file:// mp4s (H.264/AAC) through Media Foundation.
DXVK_FILTER_DEVICE_NAMEwas set to avoid the separate UE adapter-selection white screen; it isn't related to this.WINEDEBUG="+winedmo,+mfsrcsnk,+mfplat,+mfmediaengine,+mfplay,+mfreadwrite" while walking to a TV — h264parse emits sane caps and avdec_h264 refuses them, for every TV open:
Later in the same open:
The game's own log shows Electra's IMediaPlayer::Open(file://...) running, but no video ever arrives and the TV stays white.
Under GE-Proton11-6 the same videos play. Its MF stack has no winegstreamer at all: it removed gstreamer entirely and runs everything through winedmo -> FFmpeg. The game's logs corroborate: 10+ "Open Media Latent: Media player is closed" failures for TV/generator videos under Proton Experimental, zero under GE-Proton11-6, and the Basement TV confirmed playing on GE.
I don't know the exact reason avdec_h264 refuses the caps — they look acceptable, so it's either winegstreamer's wg_transform caps construction (byte-stream with a streamheader attached?) or the gst-libav version in the Steam runtime. Either way, Valve's build currently decodes Media Foundation video through winegstreamer -> the runtime's gst-libav, and that path fails here, while winedmo -> FFmpeg works.
Suggestion: prefer winedmo for Media Foundation decode in Proton, the way GE's video rework already does; it demonstrably fixes this title.
Workaround today: run the game on GE-Proton 11-x.