MicrosoftEdge / MicrosoftEdge/WebView2Feedback
Problem with decoding VP9 stream with HW accelerator
@LiangTheDev is already working on this.
Since Jun 15, 2023.
- Dominant language
- PowerShell
- Stars
- 526
- Forks
- 67
- PR merge metrics
- No merged PRs in 30d
Description
Description
User joins WebRTC call using Microsoft Edge browser.
HW accelerator is enabled.
The VP9 codec is used on the remote end that is going to share the window.
The remote participant starts the window share. There is no SVC for window share so the stream has only one layer(resolution does not matter). When the stream is received by default ExternalDecoder (VDAVideoDecoder or D3D11VideoDecoder) is selected.
Then it shows only the first frame and after that stream is fluctuating by reducing the frame size by two and going back to the original size. After some time the fluctuating goes away and the Microsoft Edge browser eventually freezes for up to 2 minutes.
After that, it falls back to libvpx.
Logs
[24348:7212:0518/222106.292:INFO:generic_decoder.cc(256)] Decoder implementation: DecoderInfo { prefers_late_decoding = implementation_name = 'ExternalDecoder (D3D11VideoDecoder)', is_hardware_accelerated = true }
[24348:7212:0518/222106.389:WARNING:video_decoder_software_fallback_wrapper.cc(126)] Decoder falling back to software decoding.
[24348:7212:0518/222106.389:INFO:generic_decoder.cc(293)] Changed decoder implementation to: DecoderInfo { prefers_late_decoding = implementation_name = 'libvpx (fallback from: ExternalDecoder (D3D11VideoDecoder))', is_hardware_accelerated = false }
Observation
There is no issue if HW accelerator is disabled.
In the case of two layers, it falls back to libvpx immediately.
There is no such issue on Chrome, Safari, and Microsoft Edge on macOS.
Version
SDK: v111, v112, v113, v114,
Runtime:
Framework:
OS: Win10, Win11
Repro Steps
Screenshots
Additional context
The expectation is to properly decode the stream or fall back to libvpx immediately.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.