Closed Bug 1318083 Opened 8 years ago Closed 7 years ago

[Nightly] GPU video decoding prevents YouTube from playing HTML5 videos

Categories

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

53 Branch
x86_64
Windows 10
defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla53
Tracking Status
firefox50 --- unaffected
firefox51 --- unaffected
firefox52 --- disabled
firefox53 + fixed

People

(Reporter: rhazorzor, Assigned: mattwoodrow)

References

Details

(Keywords: 64bit, nightly-community, regression, Whiteboard: platform-rel)

Attachments

(1 file)

User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:49.0) Gecko/20100101 Firefox/49.0
Build ID: 20161019084923

Steps to reproduce:

Enable Hardware Acceleration.


Actual results:

On Nightly if you have Hardware Acceleration enabled, YouTube videos (HTML5 player) won't play, it gives the TV static noise video with error message "An error occurred. Please try again later."

But if you disable acceleration, then it works.

But again, if you disable acceleration, the font rendering becomes messed up, the browser doesn't render correctly many major fonts like Arial or Verdana with acceleration off. So I need Hardware Acceleration setting ON.

I have no addons installed.


Expected results:

Should play YouTube videos on HTML5 player with no problems.

Not to mention it works fine on normal Firefox version (latest 50.0 as of now, but Nightly is 53)
OS: Unspecified → Windows 10
Hardware: Unspecified → x86_64
Component: Untriaged → Audio/Video: Playback
Product: Firefox → Core
how do you enable hardware acceleration ? Or how do you disable it for that matter?
Can you please use the mozregression tool to find out which version introduced the regression?

https://mozilla.github.io/mozregression/

it's very simple to use.. Enter the version that works, and the one that doesn't.. post the result here.. it shouldn't take long
(In reply to Jean-Yves Avenard [:jya] from comment #1)
> how do you enable hardware acceleration ? Or how do you disable it for that
> matter?

you go to settings Advanced -> General -> tick Use hardware acceleration when available
(In reply to Jean-Yves Avenard [:jya] from comment #2)
> Can you please use the mozregression tool to find out which version
> introduced the regression?
> 
> https://mozilla.github.io/mozregression/
> 
> it's very simple to use.. Enter the version that works, and the one that
> doesn't.. post the result here.. it shouldn't take long

My installed nightly version is 53.0a1 and does not work and same 53.0a1 version on the mozregression does work. both with hardware acceleration setting on.
Looks like the same issue you mentioned earlier today on #developer
Flags: needinfo?(ryanvm)
(In reply to Jean-Yves Avenard [:jya] from comment #5)
> Looks like the same issue you mentioned earlier today on #developer

Must've been someone else with same problems, but I did mention that yesterday on #firefox and #nightly (nobody responded though) i never was on #developer
I've had at least three Nightly users report this same issue in #firefox.

All of them reported that setting media.gpu-process-decoder to false and restarting the browser fixed the problem.
So if that got enabled recently that looks like your culprit.

I spoke with someone on Windows with Nightly for whom youtube did work fine, so it does not seem to be for everyone. Maybe just some GPUs.

I got Graphics section info for 2 out of the 3 reporters:
(the second was in Russian and kindly provided the JSON)

=========================
Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0 ID:20161116030212 CSet: 79feeed4293336089590320a9f30a813fade8e3c

Youtube fails unless media.hardware-video-decoding.enabled is set to false

Graphics
--------

Features
Compositing: Direct3D 11
Asynchronous Pan/Zoom: wheel input enabled; touch input enabled
WebGL Renderer: Google Inc. -- ANGLE (NVIDIA GeForce GTX 970 Direct3D11 vs_5_0 ps_5_0)
WebGL2 Renderer: Google Inc. -- ANGLE (NVIDIA GeForce GTX 970 Direct3D11 vs_5_0 ps_5_0)
Hardware H264 Decoding: Yes; Failed to create D3D11 device for decoder; Using D3D9 API
Audio Backend: wasapi
Direct2D: true
DirectWrite: true (10.0.14393.351)
GPU #1
Active: Yes
Description: NVIDIA GeForce GTX 970
Vendor ID: 0x10de
Device ID: 0x13c2
Driver Version: 21.21.13.7570
Driver Date: 10-25-2016
Drivers: C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_848dea456d3c865e\nvd3dumx,C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_848dea456d3c865e\nvwgf2umx,C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_848dea456d3c865e\nvwgf2umx,C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_848dea456d3c865e\nvwgf2umx C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_848dea456d3c865e\nvd3dum,C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_848dea456d3c865e\nvwgf2um,C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_848dea456d3c865e\nvwgf2um,C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_848dea456d3c865e\nvwgf2um
Subsys ID: 39753842
RAM: 4096

Diagnostics
ClearType Parameters: Gamma: 2.2 Pixel Structure: RGB ClearType Level: 0 Enhanced Contrast: 200
AzureCanvasAccelerated: 0
AzureCanvasBackend: skia
AzureContentBackend: skia
AzureFallbackCanvasBackend: cairo
GPUProcessPid: 15612
GPUProcess: Terminate GPU Process
ClearType Parameters: Gamma: 2.2 Pixel Structure: RGB ClearType Level: 0 Enhanced Contrast: 200
Decision Log
D3D9_COMPOSITING:
disabled by default: Disabled by default

===========================================

"graphics": {
  "numTotalWindows": 1,
  "numAcceleratedWindows": 0,
  "windowLayerManagerType": "Basic",
  "windowLayerManagerRemote": true,
  "supportsHardwareH264": "No; Hardware video decoding disabled or blacklisted",
  "currentAudioBackend": "wasapi",
  "numAcceleratedWindowsMessage": [
    ""
  ],
  "adapterDescription": "NVIDIA GeForce GTX 970",
  "adapterVendorID": "0x10de",
  "adapterDeviceID": "0x13c2",
  "adapterSubsysID": "113110de",
  "adapterRAM": "4096",
  "adapterDrivers": "C:\\WINDOWS\\System32\\DriverStore\\FileRepository\\nv_desktop_ref4i.inf_amd64_4e2b0b43129add43\\nvd3dumx,C:\\WINDOWS\\System32\\DriverStore\\FileRepository\\nv_desktop_ref4i.inf_amd64_4e2b0b43129add43\\nvwgf2umx,C:\\WINDOWS\\System32\\DriverStore\\FileRepository\\nv_desktop_ref4i.inf_amd64_4e2b0b43129add43\\nvwgf2umx,C:\\WINDOWS\\System32\\DriverStore\\FileRepository\\nv_desktop_ref4i.inf_amd64_4e2b0b43129add43\\nvwgf2umx C:\\WINDOWS\\System32\\DriverStore\\FileRepository\\nv_desktop_ref4i.inf_amd64_4e2b0b43129add43\\nvd3dum,C:\\WINDOWS\\System32\\DriverStore\\FileRepository\\nv_desktop_ref4i.inf_amd64_4e2b0b43129add43\\nvwgf2um,C:\\WINDOWS\\System32\\DriverStore\\FileRepository\\nv_desktop_ref4i.inf_amd64_4e2b0b43129add43\\nvwgf2um,C:\\WINDOWS\\System32\\DriverStore\\FileRepository\\nv_desktop_ref4i.inf_amd64_4e2b0b43129add43\\nvwgf2um",
  "driverVersion": "21.21.13.7586",
  "driverDate": "11-10-2016",
  "adapterDescription2": "",
  "adapterVendorID2": "",
  "adapterDeviceID2": "",
  "adapterSubsysID2": "",
  "adapterRAM2": "",
  "adapterDrivers2": "",
  "driverVersion2": "",
  "driverDate2": "",
  "isGPU2Active": false,
  "direct2DEnabled": false,
  "directWriteEnabled": true,
  "directWriteVersion": "10.0.14965.1001",
  "direct2DEnabledMessage": [
    ""
  ],
  "webglRenderer": "Google Inc. -- ANGLE (NVIDIA GeForce GTX 970 Direct3D9Ex vs_3_0 ps_3_0)",
  "webgl2Renderer": "WebGL creation failed: \n* Error during ANGLE OpenGL init.\n* Error during ANGLE OpenGL init.\n* Error during ANGLE OpenGL init.\n* Error during ANGLE OpenGL init.\n* Error during ANGLE OpenGL init.\n* Exhausted GL driver caps.",
  "info": {
    "AzureCanvasBackend": "skia",
    "AzureCanvasAccelerated": 0,
    "AzureFallbackCanvasBackend": "cairo",
    "AzureContentBackend": "skia",
    "ApzWheelInput": 1,
    "ApzTouchInput": 1
  },
  "featureLog": {
    "features": [
      {
        "name": "HW_COMPOSITING",
        "description": "Compositing",
        "status": "disabled",
        "log": [
          {
            "type": "default",
            "status": "available"
          },
          {
            "type": "user",
            "status": "disabled",
            "message": "Disabled by pref"
          }
        ]
      },
      {
        "name": "D3D11_COMPOSITING",
        "description": "Direct3D11 Compositing",
        "status": "unavailable",
        "log": [
          {
            "type": "default",
            "status": "unavailable",
            "message": "Hardware compositing is disabled"
          }
        ]
      },
      {
        "name": "D3D9_COMPOSITING",
        "description": "Direct3D9 Compositing",
        "status": "unavailable",
        "log": [
          {
            "type": "default",
            "status": "unavailable",
            "message": "Hardware compositing is disabled"
          }
        ]
      },
      {
        "name": "DIRECT2D",
        "description": "Direct2D",
        "status": "unavailable",
        "log": [
          {
            "type": "default",
            "status": "unavailable",
            "message": "Direct2D requires Direct3D 11 compositing"
          }
        ]
      },
      {
        "name": "D3D11_HW_ANGLE",
        "description": "Direct3D11 hardware ANGLE",
        "status": "disabled",
        "log": [
          {
            "type": "default",
            "status": "unavailable",
            "message": "D3D11 compositing is disabled"
          },
          {
            "type": "env",
            "status": "disabled",
            "message": "D3D11 compositing is disabled"
          }
        ]
      },
      {
        "name": "GPU_PROCESS",
        "description": "GPU Process",
        "status": "unavailable",
        "log": [
          {
            "type": "default",
            "status": "available"
          },
          {
            "type": "env",
            "status": "unavailable",
            "message": "Not using GPU Process since D3D11 is unavailable"
          }
        ]
      }
    ],
Status: UNCONFIRMED → NEW
Ever confirmed: true
matas, can you copy here the "graphics" sectio from about:upport, please.
Flags: needinfo?(rhazorzor)
Can confirm that media.hardware-video-decoding.enabled is set to false fixed it.

Anyway:

===================================================================================================

Features
Compositing	Direct3D 11
Asynchronous Pan/Zoom	wheel input enabled; touch input enabled
WebGL Renderer	Google Inc. -- ANGLE (NVIDIA GeForce GTX 650 Direct3D11 vs_5_0 ps_5_0)
WebGL2 Renderer	Google Inc. -- ANGLE (NVIDIA GeForce GTX 650 Direct3D11 vs_5_0 ps_5_0)
Hardware H264 Decoding	No; Hardware video decoding disabled or blacklisted
Audio Backend	wasapi
Direct2D	true
DirectWrite	true (10.0.14393.0)
GPU #1
Active	Yes
Description	NVIDIA GeForce GTX 650
Vendor ID	0x10de
Device ID	0x0fc6
Driver Version	21.21.13.7270
Driver Date	8-25-2016
Drivers	C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_d3851cb7c8216f9e\nvd3dumx,C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_d3851cb7c8216f9e\nvwgf2umx,C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_d3851cb7c8216f9e\nvwgf2umx,C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_d3851cb7c8216f9e\nvwgf2umx C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_d3851cb7c8216f9e\nvd3dum,C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_d3851cb7c8216f9e\nvwgf2um,C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_d3851cb7c8216f9e\nvwgf2um,C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_d3851cb7c8216f9e\nvwgf2um
Subsys ID	00000000
RAM	1024
Diagnostics
ClearType Parameters	DISPLAY1 [ Gamma: 2,2 Pixel Structure: RGB ClearType Level: 100 Enhanced Contrast: 100 ] DISPLAY5 [ Gamma: 2,2 Pixel Structure: RGB ClearType Level: 100 Enhanced Contrast: 50 ]
AzureCanvasAccelerated	0
AzureCanvasBackend	skia
AzureContentBackend	skia
AzureFallbackCanvasBackend	cairo
GPUProcessPid	7820
GPUProcess	
ClearType Parameters	DISPLAY1 [ Gamma: 2,2 Pixel Structure: RGB ClearType Level: 100 Enhanced Contrast: 100 ] DISPLAY5 [ Gamma: 2,2 Pixel Structure: RGB ClearType Level: 100 Enhanced Contrast: 50 ]
[Tracking Requested - why for this release]: Can't play videos on Youtube.

For some reason, I can only reproduce this with my regular profile. If I create a new one, it doesn't reproduce even with the same build. That said, I was able to use my dirty profile with mozregression to confirm that this does indeed bisect to bug 1315141 as the culprit.

As expected, Aurora52 nightlies don't reproduce since this change is still ifdeffed Nightly-only.

Matt, I can probably create a stripped-down version of my profile to send you if it helps debug. Let me know.


Graphics
--------
Features
Compositing: Direct3D 11
Asynchronous Pan/Zoom: wheel input enabled; touch input enabled
WebGL Renderer: Google Inc. -- ANGLE (Intel(R) HD Graphics P530 Direct3D11 vs_5_0 ps_5_0)
WebGL2 Renderer: Google Inc. -- ANGLE (Intel(R) HD Graphics P530 Direct3D11 vs_5_0 ps_5_0)
Hardware H264 Decoding: Yes; Failed to create D3D11 device for decoder; Using D3D9 API
Audio Backend: wasapi
Direct2D: true
DirectWrite: true (10.0.14393.351)
GPU #1
Active: Yes
Description: Intel(R) HD Graphics P530
Vendor ID: 0x8086
Device ID: 0x191d
Driver Version: 21.20.16.4542
Driver Date: 10-24-2016
Drivers: igdumdim64 igd10iumd64 igd10iumd64 igd12umd64 igdumdim32 igd10iumd32 igd10iumd32 igd12umd32
Subsys ID: 06d91028
RAM: Unknown
GPU #2
Active: No
Description: NVIDIA Quadro M1000M
Vendor ID: 0x10de
Device ID: 0x13b1
Driver Version: 21.21.13.7563
Driver Date: 10-21-2016
Drivers: C:\WINDOWS\System32\DriverStore\FileRepository\nvdmwi.inf_amd64_c2a31e8d3f813a51\nvd3dumx,C:\WINDOWS\System32\DriverStore\FileRepository\nvdmwi.inf_amd64_c2a31e8d3f813a51\nvwgf2umx,C:\WINDOWS\System32\DriverStore\FileRepository\nvdmwi.inf_amd64_c2a31e8d3f813a51\nvwgf2umx,C:\WINDOWS\System32\DriverStore\FileRepository\nvdmwi.inf_amd64_c2a31e8d3f813a51\nvwgf2umx C:\WINDOWS\System32\DriverStore\FileRepository\nvdmwi.inf_amd64_c2a31e8d3f813a51\nvd3dum,C:\WINDOWS\System32\DriverStore\FileRepository\nvdmwi.inf_amd64_c2a31e8d3f813a51\nvwgf2um,C:\WINDOWS\System32\DriverStore\FileRepository\nvdmwi.inf_amd64_c2a31e8d3f813a51\nvwgf2um,C:\WINDOWS\System32\DriverStore\FileRepository\nvdmwi.inf_amd64_c2a31e8d3f813a51\nvwgf2um
Subsys ID: 06d91028
RAM: 2048
Diagnostics
AzureCanvasAccelerated: 0
AzureCanvasBackend: skia
AzureContentBackend: skia
AzureFallbackCanvasBackend: cairo
GPUProcessPid: 13420
GPUProcess: Terminate GPU Process
failures: CP+[GFX1]: Potential driver version mismatch ignored due to missing DLLs 0.0.0.0 and 0.0.0.0
Decision Log
D3D9_COMPOSITING:
disabled by default: Disabled by default


Failure Log
(#0): CP+[GFX1]: Potential driver version mismatch ignored due to missing DLLs 0.0.0.0 and 0.0.0.0
(#1): CP+[GFX1]: Potential driver version mismatch ignored due to missing DLLs 0.0.0.0 and 0.0.0.0
(#2): CP+[GFX1]: Potential driver version mismatch ignored due to missing DLLs 0.0.0.0 and 0.0.0.0
(#3): CP+[GFX1]: Potential driver version mismatch ignored due to missing DLLs 0.0.0.0 and 0.0.0.0
(#4): CP+[GFX1]: Potential driver version mismatch ignored due to missing DLLs 0.0.0.0 and 0.0.0.0
(#5): CP+[GFX1]: Potential driver version mismatch ignored due to missing DLLs 0.0.0.0 and 0.0.0.0
(#6): CP+[GFX1]: Potential driver version mismatch ignored due to missing DLLs 0.0.0.0 and 0.0.0.0
(#7): CP+[GFX1]: Potential driver version mismatch ignored due to missing DLLs 0.0.0.0 and 0.0.0.0
(#8): CP+[GFX1]: Potential driver version mismatch ignored due to missing DLLs 0.0.0.0 and 0.0.0.0
Blocks: 1315141
Flags: needinfo?(ryanvm) → needinfo?(matt.woodrow)
Keywords: regression
Whiteboard: platform-rel
Interesting Ryan. Yours is the first with this issue that I've seen that's not a GTX card.
If I noted properly all the other GPUs listed here are GTX which connect it to bug 1318235 (a dependency of bug 1288618 ).

In the end is seems that the new video decoding process could break VP8/VP9 Webm decoding for some GPUs.
It's a GM107 GPU in case that helps.
Tracking 53+ for this regression which affects youtube.
Summary: [Nightly] Hardware acceleration on Nightly 53 prevents YouTube from playing HTML5 videos → [Nightly] GPU video decoding prevents YouTube from playing HTML5 videos
Can someone please test this build and see if it fixes the issue:

https://treeherder.mozilla.org/#/jobs?repo=try&revision=385e822dc4e27f3d24f1d2bc3ab57e13435222f6
Still reproduces for me.
it hasn't finished building yet, so which build did you try?
The Taskcluster builds are usable.
I have this issue with an AMD HD7870, which I asked reddit about a few days ago https://www.reddit.com/r/firefox/comments/5deni5/following_todays_update_to_nightly_youtube_seems/

Graphics
--------

Features
Compositing: Direct3D 11
Asynchronous Pan/Zoom: wheel input enabled; touch input enabled
WebGL Renderer: WebGL is currently disabled.
WebGL2 Renderer: WebGL is currently disabled.
Hardware H264 Decoding: Yes; Failed to create D3D11 device for decoder; Using D3D9 API
Audio Backend: wasapi
Direct2D: true
DirectWrite: true (10.0.14393.351)
GPU #1
Active: Yes
Description: AMD Radeon HD 7800 Series
Vendor ID: 0x1002
Device ID: 0x6818
Driver Version: 21.19.160.769
Driver Date: 11-8-2016
Drivers: aticfx64 aticfx64 aticfx64 amdxc64 aticfx32 aticfx32 aticfx32 amdxc32 atiumd64 atidxx64 atidxx64 atiumdag atidxx32 atidxx32 atiumdva atiumd6a atitmm64
Subsys ID: 25541458
RAM: 2048

Diagnostics
ClearType Parameters: Gamma: 2.2 Pixel Structure: RGB ClearType Level: 100 Enhanced Contrast: 200
AzureCanvasAccelerated: 0
AzureCanvasBackend: skia
AzureContentBackend: skia
AzureFallbackCanvasBackend: cairo
GPUProcessPid: 1996
GPUProcess: Terminate GPU Process
ClearType Parameters: Gamma: 2.2 Pixel Structure: RGB ClearType Level: 100 Enhanced Contrast: 200
Decision Log
D3D9_COMPOSITING:
disabled by default: Disabled by default
Tried the build mentioned above by Matt Woodrow, still fails for me.
Previously, creating a RemoteVideoDecoder was infallible (as long as IPC was still up), and we did the CreateVideoDecoder work as part of Init.

This moves the CreateVideoDecoder work to the constructor, and makes it sync, so that failures are reported immediately.

The previous approach (making SupportsMimeType more accurate) didn't work, because WMFVideoMFTManager rejects VP8/9 streams if we failed to negotiate a hardware decoder [1]. This is hard/impossible to detect in SupportsMimeType since it will depend on the resolution/fps.

[1] http://searchfox.org/mozilla-central/source/dom/media/platforms/wmf/WMFVideoMFTManager.cpp#474
Assignee: nobody → matt.woodrow
Flags: needinfo?(matt.woodrow)
Attachment #8812635 - Flags: review?(jyavenard)
Attachment #8812635 - Flags: review?(dvander)
Comment on attachment 8812635 [details] [diff] [review]
Make PVideoDecoder's ctor sync and fail if CreateVideoDecoder

Review of attachment 8812635 [details] [diff] [review]:
-----------------------------------------------------------------

Any possibility of a regression test getting included with this?
Comment on attachment 8812635 [details] [diff] [review]
Make PVideoDecoder's ctor sync and fail if CreateVideoDecoder

Review of attachment 8812635 [details] [diff] [review]:
-----------------------------------------------------------------

I don't know much about ipdl, but the logic behind it is right.

It does make me wonder if we shouldn't simply combine Init and CreateDecoder into a single asynchronous API.
So that when you call CreateDecoder you're given a promise, and the decoder returned would always be initialised and usable immediately.
Attachment #8812635 - Flags: review?(jyavenard) → review+
Attachment #8812635 - Flags: review?(dvander) → review+
Pushed by mwoodrow@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/bcba1adaeb51
Make PVideoDecoder's ctor sync and fail if CreateVideoDecoder fails on the GPU process side. r=jya,dvander
https://hg.mozilla.org/mozilla-central/rev/bcba1adaeb51
Status: NEW → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla53
I can still reproduce on a fresh build off m-c tip :(. Setting media.gpu-process-decoder back to false results in functional playback again.
Status: RESOLVED → REOPENED
Flags: needinfo?(matt.woodrow)
Resolution: FIXED → ---
Target Milestone: mozilla53 → ---
I take that back, I think my build got messed up during packaging. I just rebuilt and retested and things appear to be working with media.gpu-process-decoder set to true!
Status: REOPENED → RESOLVED
Closed: 7 years ago7 years ago
Flags: needinfo?(matt.woodrow)
Resolution: --- → FIXED
Target Milestone: --- → mozilla53
Blocks: 1315699
See Also: 1315699
Flags: needinfo?(rhazorzor)
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: