WmfMedia: switching webcam format during playback stalls after MESessionStopped (UE 5.8.3)

Summary

Changing a playing webcam stream from NV12 1920x1080 at 30 FPS to an advertised NV12 1280x720 at 30 FPS returns true from UMediaPlayer::SetTrackFormat, but playback stops and does not resume during a 20-second observation window. This reproduces in a standalone C++ project using stock WmfMedia.

Tested environment: UE 5.8.3, changelist 58210709; Windows 11, Win64, D3D12 / SM6. USB camera supports both NV12 formats above and initially opens at 1080p30. Original engine WmfMedia; no project plugin override.

What Type of Bug are you experiencing?

Other

Steps to Reproduce

  1. Extract WmfFormatRepro-Source.zip and build WmfFormatReproEditor against UE 5.8.3.
  2. From the extracted project directory, launch the matching engine’s UnrealEditor.exe as below (use its full executable path if needed). Replace the camera display name and absolute output path as needed.
  3. The harness opens the camera, verifies initial 1080p30 playback, waits ten seconds, then requests 720p. Observe the JSON report and WMF log.

Command: UnrealEditor.exe "WmfFormatRepro.uproject" -game -d3d12 -sm6 -Scenario=Active -CameraName="Integrated Camera" -ReportPath="C:/Temp/WmfFormatRepro.json" -LogCmds="LogWmfMedia Verbose"

The harness records scalar diagnostics only, not camera images or video.

Expected Result

The requested format becomes active and video playback continues or resumes.

Observed Result

SetTrackFormat returns true, followed by a playback-suspended event without a subsequent playback-resumed event. After 20 seconds, the report records format-transition-timeout and isPlayingAtReport=false; texture dimensions remain 1920x1080. The log shows a successful Session Stopped event followed by CommitTopology remaining in state 2 (ReadyNeedsRestart).

Affects Versions

5.8

Platform(s)

Windows

Additional Notes

Source observation (UE 5.8.3): Engine/Plugins/Media/WmfMedia/Source/WmfMedia/Private/Wmf/WmfMediaSession.cpp. CommitTopology calls Stop and enters ReadyNeedsRestart (lines 1343–1359). That state waits for MESessionTopologySet (1371–1375), but the replacement ClearTopologies/SetTopology calls are below this branch (1400/1410) and are not reached. The operation waits for completion of a submission it has not made.

The affected session sources are identical in the checked ue5-main snapshot 3bf857c10e9af19f7199ab54f14a81f8ffe3f5b6 (5.9 development). This is a source comparison only; runtime reproduction was performed on 5.8.3, not 5.9.

Similar public report: Changing the format in a Media Player freezes the playback. Similar symptom only; an identical root cause has not been established.

Attached: WmfMedia-BugReport-Minimal-Attachments.zip (9.7 KB; minimal C++ project/configuration, sanitized stock-active JSON report, narrowly selected sanitized topology log excerpt, and SHA-256 manifest). No engine source, patched plugin, binaries, camera recordings, device URLs, or personal filesystem paths are included. No production-ready fix is claimed.