Closed Bug 1417973 Opened 7 years ago Closed 7 years ago

100% CPU when playing 1080p 60fps videos on Youtube

Categories

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

57 Branch
defect

Tracking

()

RESOLVED FIXED
mozilla59
Tracking Status
firefox57 --- wontfix
firefox58 --- wontfix
firefox59 --- fixed

People

(Reporter: zer0bot, Assigned: jya, NeedInfo)

Details

(Keywords: perf)

Attachments

(1 file)

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

Steps to reproduce:

Play a 1080p video in Youtube.

W10, CPU Core 2 Quad Q6700, GPU ATI Radeon HD 4600 Series.

Fresh Firefox 57.0 install, tried with all the addons disabled.


Actual results:

The video lags and hangs, CPU usage goes up to 100%.


Expected results:

The video shouldn't lag or hang, just like with any previous version of Firefox and other browsers.
By the way the problem gets worse if I put the mouse pointer on top of the video.
The problem occurs only with 60fps videos.
Component: Untriaged → Audio/Video: Playback
Keywords: perf
Product: Firefox → Core
Please provide a copy of about:support 

Thank you.

Did you enable VP9 content by any chance, it's a quite old CPU, it would struggle playing vp9 properly,
Priority: -- → P2
Yes it's a pretty old computer but I've never had any problem with 60 fps videos.

I haven't enabled anything, it's a fresh install of Firefox. I don't know what VP9 is or how to enable it.

Here is the copy of about:support



Application Basics
------------------

Name: Firefox
Version: 57.0
Build ID: 20171112125346
Update Channel: release
User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0
OS: Windows_NT 10.0
Multiprocess Windows: 1/1 (Enabled by default)
Web Content Processes: 5/4
Stylo: true (enabled by default)
Google Key: Found
Mozilla Location Service Key: Found
Safe Mode: false

Crash Reports for the Last 3 Days
---------------------------------

All Crash Reports

Firefox Features
----------------

Name: Activity Stream
Version: 2017.11.07.1100-7f4e3634
ID: activity-stream@mozilla.org

Name: Application Update Service Helper
Version: 2.0
ID: aushelper@mozilla.org

Name: Firefox Screenshots
Version: 19.2.0
ID: screenshots@mozilla.org

Name: Follow-on Search Telemetry
Version: 0.9.6
ID: followonsearch@mozilla.com

Name: Form Autofill
Version: 1.0
ID: formautofill@mozilla.org

Name: Multi-process staged rollout
Version: 3.05
ID: e10srollout@mozilla.org

Name: Photon onboarding
Version: 1.0
ID: onboarding@mozilla.org

Name: Pocket
Version: 1.0.5
ID: firefox@getpocket.com

Name: Shield Recipe Client
Version: 76.1
ID: shield-recipe-client@mozilla.org

Name: Web Compat
Version: 1.1
ID: webcompat@mozilla.org

Extensions
----------

Name: Adblock Plus
Version: 3.0.1
Enabled: true
ID: {d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}

Name: Video DownloadHelper
Version: 7.0.0
Enabled: true
ID: {b9db16a4-6edc-47ec-a1f4-b86292ed211d}

Name: Auto Reload
Version: 1.22
Enabled: false
ID: autoreload@yz.com

Name: DoubleClick Save Picture
Version: 1.1.140101.1-signed.1-signed
Enabled: false
ID: doubleclick-picture@windpr.tw

Name: Redirector
Version: 3.1.0
Enabled: false
ID: redirector@einaregilsson.com

Name: Selected Search
Version: 0.4.160328
Enabled: false
ID: {a3b1e8b3-ba2c-4280-9768-198db1817b5d}

Name: Send to Kodi
Version: 3.0.0
Enabled: false
ID: jid0-YCM0p5WlCGjvBJcZhAusQ5h26wM@jetpack

Name: Tab Mix Plus
Version: 0.5.0.4
Enabled: false
ID: {dc572301-7619-498c-a57d-39143191b318}

Name: Tab Set Saver
Version: 1.0.1-signed.1-signed
Enabled: false
ID: tabsetsaver@rgsinc.38911bytes.com

Name: Text Link
Version: 6.0.1
Enabled: false
ID: {54BB9F3F-07E5-486c-9B39-C7398B99391C}

Graphics
--------

Features
Compositing: Direct3D 11 (Advanced Layers)
Asynchronous Pan/Zoom: wheel input enabled; scrollbar drag enabled; keyboard enabled; autoscroll enabled
WebGL 1 Driver WSI Info: EGL_VENDOR: Google Inc. (adapter LUID: 0000000000009cf4) EGL_VERSION: 1.4 (ANGLE 2.1.0.dec065540d5f) EGL_EXTENSIONS: EGL_EXT_create_context_robustness EGL_ANGLE_d3d_share_handle_client_buffer EGL_ANGLE_d3d_texture_client_buffer EGL_ANGLE_surface_d3d_texture_2d_share_handle EGL_ANGLE_query_surface_pointer EGL_ANGLE_window_fixed_size EGL_ANGLE_keyed_mutex EGL_ANGLE_surface_orientation EGL_ANGLE_direct_composition EGL_NV_post_sub_buffer EGL_KHR_create_context EGL_EXT_device_query EGL_KHR_image EGL_KHR_image_base EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image EGL_KHR_get_all_proc_addresses EGL_KHR_stream EGL_KHR_stream_consumer_gltexture EGL_NV_stream_consumer_gltexture_yuv EGL_ANGLE_flexible_surface_compatibility EGL_ANGLE_create_context_webgl_compatibility EGL_CHROMIUM_create_context_bind_generates_resource EGL_EXTENSIONS(nullptr): EGL_EXT_client_extensions EGL_EXT_platform_base EGL_EXT_platform_device EGL_ANGLE_platform_angle EGL_ANGLE_platform_angle_d3d EGL_ANGLE_device_creation EGL_ANGLE_device_creation_d3d11 EGL_ANGLE_experimental_present_path EGL_KHR_client_get_all_proc_addresses
WebGL 1 Driver Renderer: Google Inc. -- ANGLE (ATI Radeon HD 4600 Series Direct3D11 vs_4_1 ps_4_1)
WebGL 1 Driver Version: OpenGL ES 2.0 (ANGLE 2.1.0.dec065540d5f)
WebGL 1 Driver Extensions: GL_ANGLE_depth_texture GL_ANGLE_framebuffer_blit GL_ANGLE_framebuffer_multisample GL_ANGLE_instanced_arrays GL_ANGLE_lossy_etc_decode GL_ANGLE_pack_reverse_row_order GL_ANGLE_request_extension GL_ANGLE_robust_client_memory GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_ANGLE_texture_usage GL_ANGLE_translated_shader_source GL_CHROMIUM_bind_generates_resource GL_CHROMIUM_bind_uniform_location GL_CHROMIUM_copy_compressed_texture GL_CHROMIUM_copy_texture GL_CHROMIUM_sync_query GL_EXT_blend_minmax GL_EXT_color_buffer_half_float GL_EXT_debug_marker GL_EXT_discard_framebuffer GL_EXT_disjoint_timer_query GL_EXT_draw_buffers GL_EXT_frag_depth GL_EXT_map_buffer_range GL_EXT_occlusion_query_boolean GL_EXT_read_format_bgra GL_EXT_robustness GL_EXT_sRGB GL_EXT_shader_texture_lod GL_EXT_texture_compression_dxt1 GL_EXT_texture_filter_anisotropic GL_EXT_texture_format_BGRA8888 GL_EXT_texture_rg GL_EXT_texture_storage GL_EXT_unpack_subimage GL_KHR_debug GL_NV_EGL_stream_consumer_external GL_NV_fence GL_NV_pack_subimage GL_NV_pixel_buffer_object GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth32 GL_OES_element_index_uint GL_OES_get_program_binary GL_OES_mapbuffer GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_texture_float GL_OES_texture_float_linear GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_npot GL_OES_vertex_array_object
WebGL 1 Extensions: ANGLE_instanced_arrays EXT_blend_minmax EXT_color_buffer_half_float EXT_frag_depth EXT_shader_texture_lod EXT_texture_filter_anisotropic EXT_disjoint_timer_query OES_element_index_uint OES_standard_derivatives OES_texture_float OES_texture_float_linear OES_texture_half_float OES_texture_half_float_linear OES_vertex_array_object WEBGL_color_buffer_float WEBGL_compressed_texture_s3tc WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_depth_texture WEBGL_draw_buffers WEBGL_lose_context MOZ_WEBGL_lose_context MOZ_WEBGL_compressed_texture_s3tc MOZ_WEBGL_depth_texture
WebGL 2 Driver WSI Info: EGL_VENDOR: Google Inc. (adapter LUID: 0000000000009cf4) EGL_VERSION: 1.4 (ANGLE 2.1.0.dec065540d5f) EGL_EXTENSIONS: EGL_EXT_create_context_robustness EGL_ANGLE_d3d_share_handle_client_buffer EGL_ANGLE_d3d_texture_client_buffer EGL_ANGLE_surface_d3d_texture_2d_share_handle EGL_ANGLE_query_surface_pointer EGL_ANGLE_window_fixed_size EGL_ANGLE_keyed_mutex EGL_ANGLE_surface_orientation EGL_ANGLE_direct_composition EGL_NV_post_sub_buffer EGL_KHR_create_context EGL_EXT_device_query EGL_KHR_image EGL_KHR_image_base EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image EGL_KHR_get_all_proc_addresses EGL_KHR_stream EGL_KHR_stream_consumer_gltexture EGL_NV_stream_consumer_gltexture_yuv EGL_ANGLE_flexible_surface_compatibility EGL_ANGLE_create_context_webgl_compatibility EGL_CHROMIUM_create_context_bind_generates_resource EGL_EXTENSIONS(nullptr): EGL_EXT_client_extensions EGL_EXT_platform_base EGL_EXT_platform_device EGL_ANGLE_platform_angle EGL_ANGLE_platform_angle_d3d EGL_ANGLE_device_creation EGL_ANGLE_device_creation_d3d11 EGL_ANGLE_experimental_present_path EGL_KHR_client_get_all_proc_addresses
WebGL 2 Driver Renderer: Google Inc. -- ANGLE (ATI Radeon HD 4600 Series Direct3D11 vs_4_1 ps_4_1)
WebGL 2 Driver Version: OpenGL ES 3.0 (ANGLE 2.1.0.dec065540d5f)
WebGL 2 Driver Extensions: GL_ANGLE_depth_texture GL_ANGLE_framebuffer_blit GL_ANGLE_framebuffer_multisample GL_ANGLE_instanced_arrays GL_ANGLE_lossy_etc_decode GL_ANGLE_pack_reverse_row_order GL_ANGLE_request_extension GL_ANGLE_robust_client_memory GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_ANGLE_texture_usage GL_ANGLE_translated_shader_source GL_CHROMIUM_bind_generates_resource GL_CHROMIUM_bind_uniform_location GL_CHROMIUM_copy_compressed_texture GL_CHROMIUM_copy_texture GL_CHROMIUM_sync_query GL_EXT_blend_minmax GL_EXT_color_buffer_float GL_EXT_color_buffer_half_float GL_EXT_debug_marker GL_EXT_discard_framebuffer GL_EXT_disjoint_timer_query GL_EXT_draw_buffers GL_EXT_frag_depth GL_EXT_map_buffer_range GL_EXT_occlusion_query_boolean GL_EXT_read_format_bgra GL_EXT_robustness GL_EXT_sRGB GL_EXT_shader_texture_lod GL_EXT_texture_compression_dxt1 GL_EXT_texture_filter_anisotropic GL_EXT_texture_format_BGRA8888 GL_EXT_texture_norm16 GL_EXT_texture_rg GL_EXT_texture_storage GL_EXT_unpack_subimage GL_KHR_debug GL_NV_EGL_stream_consumer_external GL_NV_fence GL_NV_pack_subimage GL_NV_pixel_buffer_object GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_image_external_essl3 GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth32 GL_OES_element_index_uint GL_OES_get_program_binary GL_OES_mapbuffer GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_texture_float GL_OES_texture_float_linear GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_npot GL_OES_vertex_array_object
WebGL 2 Extensions: EXT_color_buffer_float EXT_texture_filter_anisotropic EXT_disjoint_timer_query OES_texture_float_linear WEBGL_compressed_texture_s3tc WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_lose_context MOZ_WEBGL_lose_context MOZ_WEBGL_compressed_texture_s3tc
Direct2D: true
DirectWrite: true (10.0.15063.674)
GPU #1
Active: Yes
Description: ATI Radeon HD 4600 Series
Vendor ID: 0x1002
Device ID: 0x9490
Driver Version: 8.970.100.9001
Driver Date: 1-13-2015
Drivers: aticfx64 aticfx64 aticfx32 aticfx32 atiumd64 atidxx64 atiumdag atidxx32 atiumdva atiumd6a atitmm64
Subsys ID: 20091787
RAM: 1024

Diagnostics
AzureCanvasAccelerated: 0
AzureCanvasBackend: Direct2D 1.1
AzureCanvasBackend (UI Process): skia
AzureContentBackend: Direct2D 1.1
AzureContentBackend (UI Process): skia
AzureFallbackCanvasBackend (UI Process): cairo
GPUProcessPid: 13736
Decision Log
HW_COMPOSITING:
force_enabled by user: Force-enabled by pref
WEBRENDER:
opt-in by default: WebRender is an opt-in feature
unavailable by runtime: Build doesn't include WebRender




Media
-----

Audio Backend: wasapi
Max Channels: 6
Preferred Channel Layout: undefined
Preferred Sample Rate: 48000
Output Devices
Name: Group
Headphones (RTC) (IDT High Definition Audio CODEC): HDAUDIO\FUNC_01&VEN_8384&DEV_7627&SUBSYS_80862504&REV_1002\4&2b91f791&0&0201
Audio digital (HDMI) (Dispositivo de High Definition Audio): HDAUDIO\FUNC_01&VEN_1002&DEV_AA01&SUBSYS_00AA0100&REV_1001\5&390516ed&0&0001
Speakers / HP (IDT High Definition Audio CODEC): HDAUDIO\FUNC_01&VEN_8384&DEV_7627&SUBSYS_80862504&REV_1002\4&2b91f791&0&0201
SPDIF-Out (Rear) (IDT High Definition Audio CODEC): HDAUDIO\FUNC_01&VEN_8384&DEV_7627&SUBSYS_80862504&REV_1002\4&2b91f791&0&0201
Input Devices
Name: Group
Micrófono posterior (IDT High Definition Audio CODEC): HDAUDIO\FUNC_01&VEN_8384&DEV_7627&SUBSYS_80862504&REV_1002\4&2b91f791&0&0201
Conector AUX interno (Dispositivo de High Definition Audio): HDAUDIO\FUNC_01&VEN_1002&DEV_AA01&SUBSYS_00AA0100&REV_1001\5&390516ed&0&0001
Speakers / HP (IDT High Definition Audio CODEC): HDAUDIO\FUNC_01&VEN_8384&DEV_7627&SUBSYS_80862504&REV_1002\4&2b91f791&0&0201
Línea de entrada (IDT High Definition Audio CODEC): HDAUDIO\FUNC_01&VEN_8384&DEV_7627&SUBSYS_80862504&REV_1002\4&2b91f791&0&0201
Mezcla estéreo (IDT High Definition Audio CODEC): HDAUDIO\FUNC_01&VEN_8384&DEV_7627&SUBSYS_80862504&REV_1002\4&2b91f791&0&0201
Micrófono delantero (IDT High Definition Audio CODEC): HDAUDIO\FUNC_01&VEN_8384&DEV_7627&SUBSYS_80862504&REV_1002\4&2b91f791&0&0201

Important Modified Preferences
------------------------------

accessibility.typeaheadfind.flashBar: 0
browser.cache.disk.capacity: 358400
browser.cache.disk.filesystem_reported: 1
browser.cache.disk.smart_size.first_run: false
browser.cache.frecency_experiment: 3
browser.download.useDownloadDir: false
browser.link.open_newwindow.override.external: 3
browser.places.smartBookmarksVersion: 8
browser.search.openintab: true
browser.search.useDBForOrder: true
browser.sessionstore.upgradeBackup.latestBuildID: 20171112125346
browser.startup.homepage: https://www.google.com/ncr
browser.startup.homepage_override.buildID: 20171112125346
browser.startup.homepage_override.mstone: 57.0
browser.tabs.closeWindowWithLastTab: false
browser.tabs.insertRelatedAfterCurrent: false
browser.tabs.loadDivertedInBackground: true
browser.tabs.remote.autostart.2: true
browser.urlbar.lastSuggestionsPromptDate: 20171115
browser.urlbar.timesBeforeHidingSuggestionsHint: 0
dom.ipc.processCount.web: 4
dom.push.userAgentID: 7c31c0d9dc9f49209f7e54b2c342b1cb
extensions.lastAppVersion: 57.0
general.useragent.locale: en-US
layers.acceleration.force-enabled: true
layers.mlgpu.sanity-test-failed: false
media.benchmark.vp9.fps: 110
media.benchmark.vp9.versioncheck: 2
media.gmp-gmpopenh264.abi: x86_64-msvc-x64
media.gmp-gmpopenh264.lastUpdate: 1510753772
media.gmp-gmpopenh264.version: 1.7.1
media.gmp-manager.buildID: 20171112125346
media.gmp-manager.lastCheck: 1510843798
media.gmp-widevinecdm.abi: x86_64-msvc-x64
media.gmp-widevinecdm.lastUpdate: 1510753777
media.gmp-widevinecdm.version: 1.4.8.1008
media.gmp.storage.version.observed: 1
media.hardware-video-decoding.failed: false
network.cookie.prefsMigrated: true
network.predictor.cleaned-up: true
places.database.lastMaintenance: 1510755319
places.history.expiration.transient_current_max_pages: 49865
plugin.disable_full_page_plugin_for_types: application/pdf
privacy.donottrackheader.enabled: true
privacy.sanitize.timeSpan: 0
security.sandbox.content.tempDirSuffix: {116de83c-b026-4c84-a802-21099e0f0b59}
services.sync.declinedEngines: history,forms
services.sync.engine.history: false
services.sync.engine.prefs.modified: false
services.sync.lastPing: 1510930427
services.sync.lastSync: Fri Nov 17 2017 15:15:10 GMT-0600
storage.vacuum.last.index: 1
storage.vacuum.last.places.sqlite: 1510755319
ui.osk.debug.keyboardDisplayReason: IKPOS: Touch screen not found.

Important Locked Preferences
----------------------------

Places Database
---------------

JavaScript
----------

Incremental GC: true

Accessibility
-------------

Activated: false
Prevent Accessibility: 0
Accessible Handler Used: true
Accessibility Instantiator:

Library Versions
----------------

NSPR
Expected minimum version: 4.17
Version in use: 4.17

NSS
Expected minimum version: 3.33
Version in use: 3.33

NSSSMIME
Expected minimum version: 3.33
Version in use: 3.33

NSSSSL
Expected minimum version: 3.33
Version in use: 3.33

NSSUTIL
Expected minimum version: 3.33
Version in use: 3.33

Experimental Features
---------------------

Sandbox
-------

Content Process Sandbox Level: 3
Effective Content Process Sandbox Level: 3
Thank you for this...
So it's not what I first thought, your machine doesn't have VP9 support.

I see that you've modified (or something else did) layers.acceleration.force-enabled which is surprising.

My guess is that somehow the hardware decoder isn't available on your box. The ATI 4600 was the first graphic card of this brand to support h264 hardware decoder, but it may not be available under windows 10.
Hpw does playback perform on that box with Chrome or Edge?

The last bit of information that would help, would be to install the media devtools extension (https://addons.mozilla.org/en-US/firefox/addon/devtools-media-panel/) and go into the media tab when one of those videos giving issue is playing. Press the Refresh button and copy/paste the text here.

Thank you for your help in diagnosing the issue.
It was me who modified layers.acceleration.force-enabled trying to troubleshoot the issue, I forgot to set it back, my bad :)

Under Chrome and Edge the 60fps videos play smooth, in fact they also played perfectly under the previous version of Firefox.

Here is the media infoo tool output:

Media Info : [

    0 : {
        url : "https://www.youtube.com/watch?v=fRj34o4hN4I"
        mediaElements : [...] 1 item
    }

]

[
  {
    "url": "https://www.youtube.com/watch?v=fRj34o4hN4I",
    "mediaElements": [
      {
        "currentSrc": "blob:https://www.youtube.com/c055db36-c2df-4fc4-ae1f-08ecc288005d",
        "currentTime": 8.626208,
        "readyState": 3,
        "videoPlaybackQuality": {
          "ratio": "16%",
          "droppedVideoFrames": 311,
          "corruptedVideoFrames": 0
        },
        "bufferedRanges": [
          {
            "start": 0,
            "end": 13.380033
          }
        ],
        "mozMediaSourceObject": [
          {
            "sourceBuffers": [
              {
                "start": 0,
                "end": 15.681
              }
            ]
          },
          {
            "sourceBuffers": [
              {
                "start": 0,
                "end": 13.380033
              }
            ]
          }
        ],
        "debugInfo": {
          "Container Type": "MediaSource",
          "Audio Decoder(audio/opus)": "opus audio decoder",
          "Audio Frames Decoded": "533",
          "Audio State": "ni=0 no=0 wp=0 demuxr=0 demuxq=0 decoder=0 tt=-1,0 tths=-1 in=533 out=533 qs=0 pending=0 wfd=0 eos=0 ds=0 wfk=0 sid=0",
          "Video Decoder(video/avc, 1920x1080 @ 59,94)": "wmf software video decoder (remote)",
          "Hardware Video Decoding": "disabled",
          "Video Frames Decoded": "371 (skipped=0)",
          "Video State": "ni=0 no=1 wp=0 demuxr=0 demuxq=0 decoder=1 tt=-1,0 tths=-1 in=388 out=371 qs=17 pending:0 wfd=0 eos=0 ds=0 wfk=0 sid=1",
          "Dumping Data for Demuxer": "246ff2e6800",
          "Dumping Audio Track Buffer(audio/webm)": "mLastAudioTime=10,661000",
          "Audio Track Buffer Details": "NumSamples=784 Size=433168 Evictable=294459 NextGetSampleIndex=533 NextInsertionIndex=784",
          "Audio Track Buffered": "ranges=[(0,000000, 15,681000)]",
          "Dumping Video Track Buffer(video/mp4)": "mLastVideoTime=6,489822",
          "Video Track Buffer Details": "NumSamples=802 Size=10022939 Evictable=3756418 NextGetSampleIndex=388 NextInsertionIndex=802",
          "Video Track Buffered": "ranges=[(0,000000, 13,380033)]",
          "MediaDecoder State": "channels=2 rate=48000 hasAudio=1 hasVideo=1 mPlayState=PLAYING mdsm=246ff84e000",
          "MediaDecoderStateMachine State": "GetMediaTime=8666666 GetClock=8672083 mMediaSink=246ff9c7ac0 state=DECODING mPlayState=3 mSentFirstFrameLoadedEvent=1 IsPlaying=1 mAudioStatus=idle mVideoStatus=pending mDecodedAudioEndTime=10654500 mDecodedVideoEndTime=6189511mAudioCompleted=0 mVideoCompleted=0mIsPrerolling=0",
          "VideoSink Status": "IsStarted=1 IsPlaying=1 VideoQueue(finished=0 size=0) mVideoFrameEndTime=6189511 mHasVideo=1 mVideoSinkEndRequest.Exists()=0 mEndPromiseHolder.IsEmpty()=0"
        }
      }
    ]
  }
]
Under closer inspection, Edge playback can be smooth but then gets very buggy in parts of the video, Chrome's playback is perfect.
(In reply to Petes from comment #6)
> It was me who modified layers.acceleration.force-enabled trying to
> troubleshoot the issue, I forgot to set it back, my bad :)
> 
> Under Chrome and Edge the 60fps videos play smooth, in fact they also played
> perfectly under the previous version of Firefox.
> 
> Here is the media infoo tool output:
skip
>           "Video Decoder(video/avc, 1920x1080 @ 59,94)": "wmf software video
> decoder (remote)",
>           "Hardware Video Decoding": "disabled",
>           "Video Frames Decoded": "371 (skipped=0)",
Your machine uses software decoder to decode h.264. That's why your CPU usage is high. Then we need to figure out why you machine doesn't use HW decoder.
My guess is that your graphic cards is too old to be supported by Windows 10 for hardware decoding.
When hardware decoding is disabled, Chrome uses ffmpeg which provides much better performance than Windows software decoder.

To verify this install as per instructions here:


http://bluesky23.yukishigure.com/en/DXVAChecker.html

This will list the feature list, something like this :

AMD Radeon(TM) R7 Graphics (Bristol 15W B10)
MPEG2_VLD: DXVA2/D3D11, SD / HD / FHD
MPEG2_IDCT: DXVA2/D3D11, SD / HD / FHD
MPEG2_A: DXVA1, SD / HD / FHD
MPEG2_C: DXVA1, SD / HD / FHD
H264_VLD_NoFGT: DXVA2/D3D11, SD / HD / FHD / 4K
H264_VLD_NoFGT_AMD: DXVA2/D3D11, SD / HD / FHD / 4K
6719B6FB-5CAD-4ACB-B00A-F3BFDEC38727: DXVA2/D3D11
H264_VLD_Multiview_AMD: DXVA2/D3D11, SD / HD / FHD / 4K
HEVC_VLD_Main: DXVA2/D3D11, SD / HD / FHD / 4K
EA72396A-67EC-4781-BEDE-56F498F04EF2: DXVA2/D3D11
C152CA8F-738C-461B-AD89-FC292CF8F162: DXVA2/D3D11
514A356C-7027-4AFF-8A60-AFD2C1F672F1: DXVA2/D3D11
VC1_VLD: DXVA2/D3D11, SD / HD / FHD
CA15D19A-2B48-43D6-979E-7A6E9C802FF8: DXVA2/D3D11
MPEG4pt2_VLD_AdvSimple_AMD: DXVA2/D3D11, SD / HD / FHD
H264_VLD_Stereo_Progressive_NoFGT: DXVA2/D3D11, SD / HD / FHD / 4K
H264_VLD_Stereo_NoFGT: DXVA2/D3D11, SD / HD / FHD / 4K
MPEG4pt2_VLD_AdvSimple_NoGMC: DXVA2/D3D11, SD / HD / FHD
MJPEG_VLD_AMD: DXVA2/D3D11, SD / HD / FHD / 4K / 8K
VP9_VLD_Profile0: DXVA2/D3D11, SD / HD / FHD / 4K
84AD67F6-4C21-419A-9F0B-24F0578906C1: DXVA2/D3D11
725AD240-786C-471E-AD3C-38F739936517: DXVA2/D3D11
95664FF5-9E03-4C74-BB4F-9178D6035E58: DXVA2/D3D11
5EF7D40D-5B96-49E7-B419-23342094A4CF: DXVA2/D3D11
Just found something with the media devtools extension, everytime I set the video to 720p 60fps, 1080p or lower reslutions the "Hardware Video Decoding" section is set to "enabled", but everytime I set the video to 1080p 60fps the section is automatically set to "disabled".

So I'm guessing there is something in the code that for some reason disables 1080p 60fps video hardware acceleration. I notice it because I have an old underpowered computer but in other cases people with newer computers don't notice the video is not being accelerated by hardware.

Could that be the issue?
DXVAChecker output:

ATI Radeon HD 4600 Series
MPEG2_IDCT: DXVA2, SD / HD / FHD
MPEG2_A: DXVA1, SD / HD / FHD
MPEG2_C: DXVA1, SD / HD / FHD
H264_VLD_NoFGT: DXVA2, SD / HD / FHD / 4K
H264_VLD_NoFGT_AMD: DXVA2, SD / HD / FHD / 4K
6719B6FB-5CAD-4ACB-B00A-F3BFDEC38727: DXVA2
VC1_VLD: DXVA2, SD / HD / FHD
CA15D19A-2B48-43D6-979E-7A6E9C802FF8: DXVA2
5B23D46D-FA5F-4FDC-B78A-7EB2787942EC: DXVA2
Oh... I remember.
You're falling under this case: 
https://searchfox.org/mozilla-central/rev/9bab9dc5a9472e3c163ab279847d2249322c206e/dom/media/platforms/wmf/DXVA2Manager.cpp#1250

Those graphic cards are known to not work well with 60fps videos. Returning corrupted frames, and sometimes even crashing. We had a bug in 56 and 55 were we incorrectly detected the frame rate, and so the hardware decoder was always used.
It's likely what you are seeing in Edge.

I guess we could add a preference allowing the user to override the safety.
But at this stage, all is working as intended
It would be great if you could add the preference. I have hopes it would work since it works with Chrome and it works for me in previous versions of Firefox.
(In reply to Petes from comment #13)
> It would be great if you could add the preference. I have hopes it would
> work since it works with Chrome and it works for me in previous versions of
> Firefox.

what's the cpu usage when using chrome?

can you check if it's using the hardware decoder?

While a video is playing go to chrome://media-internals/

Click the button that's captioned with 'blob' and the video URL. In the table below, look for the value of video_decoder. If it says GpuVideoDecoder, Chrome is using the GPU.
The CPU usage using Chrome is between 45% and 90%

The video_decoder value is "VpxVideoDecoder"

Here is the full output just in case there's something relevant:

render_id: 22
player_id: 36
origin_url: https://www.youtube.com/
frame_url: https://www.youtube.com/watch?v=fRj34o4hN4I
frame_title: What's new, Atlas? - YouTube
url: blob:https://www.youtube.com/b7b9f2fe-ee33-4087-a920-b535a7ebf606
pipeline_state: kPlaying
duration: 54.621
found_video_stream: true
video_codec_name: vp9
found_audio_stream: true
audio_codec_name: opus
audio_dds: false
audio_decoder: FFmpegAudioDecoder
video_dds: false
video_decoder: VpxVideoDecoder
audio_buffering_state: BUFFERING_HAVE_ENOUGH
height: 1080
width: 1920
video_buffering_state: BUFFERING_HAVE_ENOUGH
pipeline_buffering_state: BUFFERING_HAVE_ENOUGH
event: PLAY
info: Selected video track: [1]
seek_target: 0
So you're using vp9 there.
You can make Firefox behave like Chrome by setting media.mediasource.webm.enabled to true. Performance should be better even than Chrome.

But I'd be more interested to see if Chrome behaves with h264 and the hardware decoder.
Thank you that did it, it's so much better now.

I tried a clip from here http://www.h264info.com/clips.html and Chrome works excellent with h264 videos, low CPU and low GPU. 

If you need me to do some test with Chome just ask me.
Including 60fps 1080p H264 videos?
The video I tried was 30fps. If you point me to an 60fps sample I can test it.
here is one:
http://distribution.bbb3d.renderfarming.net/video/mp4/bbb_sunflower_1080p_60fps_normal.mp4

If you want to play with various content (definitions, frame rates, codec etc)
http://bbb3d.renderfarming.net/download.html
Ok, I tried the first video, works better in Chrome, the CPU goes between 20% and 40%, the GPU stays at 26%, the video pauses every few seconds but for less than a second.

Firefox is worse because the video pauses a lot and for many seconds, the CPU goes from 20% to 100%, when it reaches 100% it pauses, then goes down to 20% and up again, then pauses again. The GPU stays a 0% and once in a while goes up to 41% max.

I'd say it's only watchable in Chrome if you don't mind the constant pausing that lasts less than a second but for many people would also be unwatchable.
(In reply to Petes from comment #21)
> Ok, I tried the first video, works better in Chrome, the CPU goes between
> 20% and 40%, the GPU stays at 26%, the video pauses every few seconds but
> for less than a second.
> 
> Firefox is worse because the video pauses a lot and for many seconds, the
> CPU goes from 20% to 100%, when it reaches 100% it pauses, then goes down to
> 20% and up again, then pauses again. The GPU stays a 0% and once in a while
> goes up to 41% max.
> 
> I'd say it's only watchable in Chrome if you don't mind the constant pausing
> that lasts less than a second but for many people would also be unwatchable.

My question was about weither Chrome uses the hardware decoder for that video...

To check using the instructions provided in comment 14.

thank you
Sorry, here you go:

render_id: 9
player_id: 0
origin_url: http://distribution.bbb3d.renderfarming.net/
frame_url: http://distribution.bbb3d.renderfarming.net/video/mp4/bbb_sunflower_1080p_60fps_normal.mp4
frame_title: 
url: http://distribution.bbb3d.renderfarming.net/video/mp4/bbb_sunflower_1080p_60fps_normal.mp4
total_bytes: 355856562
streaming: false
single_origin: true
passed_cors_access_check: false
range_header_supported: true
pipeline_state: kPlaying
info: FFmpegDemuxer: skipping invalid or unsupported audio track
debug: Warning, FFmpegDemuxer failed to create a valid audio decoder configuration from muxed stream
audio_channels_count: 2
audio_codec_name: mp3
audio_sample_format: Signed 16-bit planar
audio_samples_per_second: 48000
bitrate: 4486529
found_audio_stream: true
found_video_stream: true
height: 1080
max_duration: 634.533333
start_time: 0
time_base: 1/60000
video_codec_name: h264
video_format: PIXEL_FORMAT_YV12
video_is_encrypted: false
width: 1920
audio_dds: false
audio_decoder: FFmpegAudioDecoder
video_dds: false
video_decoder: GpuVideoDecoder
audio_buffering_state: BUFFERING_HAVE_ENOUGH
video_buffering_state: BUFFERING_HAVE_ENOUGH
pipeline_buffering_state: BUFFERING_HAVE_ENOUGH
duration: 634.533333
event: PLAY
Ok, I'll remove this limitation of the hardware decoder... it never made much sense to me.

thanks for your help.
Assignee: nobody → jyavenard
Comment on attachment 8931081 [details]
Bug 1417973 - Always use the AMD GPU decoder.

https://reviewboard.mozilla.org/r/202172/#review207536

Code wise this seems fine.

Intent wise, this is your call, but when I wrote this code, we were doing significantly better in software for the machines that I tested on these videos.

It's possible that this has changed (nv12? d3d11 decoder?), or maybe you're testing with different configurations (I used one of the QA machines in the Toronto office).

Not saying you shouldn't do this, but just something to keep an eye on.
Attachment #8931081 - Flags: review?(matt.woodrow) → review+
Yeah, that's why I just didn't remove the code and set a pref.
In this case it's possible to be 32bits vs 64bits. I had that processor a while back and it was significantly worse doing 32 bits code than 64. That was even more telling using ffmpeg. 

Could you test with this installer?
64,bits: https://queue.taskcluster.net/v1/task/JM7uhXaCTli2Uf6zAev4kQ/runs/0/artifacts/public/build/install/sea/target.installer.exe
Flags: needinfo?(zer0bot)
Pushed by jyavenard@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/32e088078b10
Always use the AMD GPU decoder. r=mattwoodrow
https://hg.mozilla.org/mozilla-central/rev/32e088078b10
Status: UNCONFIRMED → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla59
Sounds like something that should ride the trains.
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: