Closed Bug 1322234 Opened 4 years ago Closed 2 years ago

VP9 yuv444p decoding broken with hwaccel enabled


(Core :: Audio/Video: Playback, defect, P3)

53 Branch
Windows 10



Tracking Status
firefox64 --- fixed


(Reporter: alloy45224, Assigned: jya)



(Keywords: qawanted)


(9 files)

Attached image screenshot.png
User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:53.0) Gecko/20100101 Firefox/53.0
Build ID: 20161205030204

Steps to reproduce:

1. Run Firefox 53.0a1 (2016-12-05) (64-bit).
2. Visit page with vp9 video encoded with yuv444p color format (example:

Actual results:

1. Video with yuv444p profile output is corrupt.

Expected results:

1. Video with yuv444p should display normally.
Please provide this video samples on Web or attachments.
Component: Untriaged → Audio/Video: Playback
Flags: needinfo?(alloy45224)
OS: Unspecified → Windows 10
Product: Firefox → Core
Hardware: Unspecified → x86
(In reply to YF (Yang) from comment #1)
> Please provide this video samples on Web or attachments.
(In reply to alloy45224 from comment #2)
> (In reply to YF (Yang) from comment #1)
> > Please provide this video samples on Web or attachments.

Uh, I understand now, I have to manually modify it, because the Dropbox asked me to download the html file.
Flags: needinfo?(alloy45224)
Oh, sorry about that. They must have changed how they serve html files recently.
Attached file testcase with videos
WFM in 53.0a1 (2016-12-05) (32-bit) & 53.0a1 (2016-12-05) (64-bit) with clean profile on Win10 1607.
I'll go ahead and delete the Dropbox repo since I see you've added an attachment. Thank you!
Please go to the Help menu > Troubleshooting Information, use the button to copy it and save it to a text file and attach it to this bug. Furthermore, tell us the CPU model of the computer, please. Thank you.
Flags: needinfo?(alloy45224)
CPU is Intel Core i5-6200. Computer model is Lenovo ThinkPad Yoga 260. I'll attach the troubleshooting information.
Flags: needinfo?(alloy45224)
I did some testing and found that installing the latest Intel graphics driver makes the issue go away. I'll attach a new troubleshooting report (TroubleshootingInfo-ThinkPadYoga260-Working.txt).
Troubleshooting info after updating graphics driver and issue is gone.
Thank you for the information:

>    "driverVersion": "",
>    "driverDate": "11-18-2015",

>    "driverVersion": "",
>    "driverDate": "10-24-2016",

QA: Can you check
A) if you can reproduce the issue on Windows 10
B) what is the first Intel driver version which plays the video from the attached testcase correctly? For this processor, the driver list can be found at
Thank you.
Keywords: qawanted
Not sure if this is related but

This file plays in Chrome, but not in Firefox, Edge or Safari

In Firefox it fails with:

Media resource could not be decoded, error: Error Code: NS_ERROR_DOM_MEDIA_FATAL_ERR (0x806e0005)
Details: auto mozilla::SupportChecker::AddMediaFormatChecker(const mozilla::TrackInfo &)::(anonymous class)::operator()() const: Decoder may not have the capability to handle the requested video format with YUV444 chroma subsampling.

needinfo Jean-Yves about Comment #14
Flags: needinfo?(jyavenard)
(In reply to Karl Dubost :karlcow from comment #14)
> Not sure if this is related but

it is not, this is H264 in MP4, the bug is about the VP9 decoder.

> This file plays in Chrome, but not in Firefox, Edge or Safari 
> attachment?aid=326593&signed_aid=p3vFCkutpOEv8ru525FWHQ==&inline=1
Windows system decoder, nor Apple VideoToolbox has support for YUV444 content.

Chrome can do it thanks to FFmpeg. We could also play it properly on linux assuming ffmpeg is installed, however we made the explicit choice to disable it there too for platforms consistency.

We won't ever be able to play YUV444 H264 content.
Ever confirmed: true
Flags: needinfo?(jyavenard)
We need a fallback from hardware to software decoder should decoding failed.
Assignee: nobody → jyavenard
The behaviour is identical in Edge and Chrome when using a nvidia 1080 (which has VP9 hardware decoder).

The decoder doesn't error, it succeeds but output NV12 black frames.

So we wouldn't be able to fix this case anyway
Can reproduce with an Intel HD 630
Both Edge and Chrome also with the Intel HD 630 shows the same graphic corruption as in the provided screenshot. As with comment 18. Decoding doesn't fail, it just returns a garbage image.
For know will only be used with Windows WMF decoders.
Continuing on the infrastructure provided by bug 1363668 we will now forcibly disable hardware decoding if the first frame failed to decode with a hardware accelerated decoder.

Depends on D7615
The Windows VP9 hardware decoder currently do not support anything else than profile 0 and 2 (YUV420) and return garbage when decoding.

We error on those streams allowing to fall back on the ffvp9 software decoder.

Depends on D7647
See Also: → 1496222
We'll need to handle EnumSet in ipdl at some stage.

Depends on D7648
Pushed by
P1. Add option to disable hardware decoding. r=bryce
P2. When first frame decoding failed with hardware decoder, fall back to software decoding r=bryce
P3. Add method to read a VP9 profile from a VP9 bitstream r=TD-Linux
P4. Don't attempt to use Windows VP9 decoder for profile 1 and 3. r=bryce
P5. Pass the disallow HW decoder flag to remote video decoder. r=mattwoodrow
Duplicate of this bug: 1389297
You need to log in before you can comment on or make changes to this bug.