User Tools

Site Tools


general:firefox

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
general:firefox [2020/11/18 06:54] sunkangeneral:firefox [2022/02/05 07:39] (current) sunkan
Line 6: Line 6:
 ====== HW video decoding using VAAPI ====== ====== HW video decoding using VAAPI ======
  
 +===== Update 2022-02-05 =====
 +As of now it seems that it is working with RDD enabled (tested with Firefox 96.0.3)
 +
 +Only these two options need to be set on my AMD machine to enable it.
 <code> <code>
-MOZ_X11_EGL=1 firefox+gfx.x11-egl.force-enabled true 
 +media.ffmpeg.vaapi.enabled true 
 +</code> 
 + 
 +If needed disable av1/av01 codec if there is no HW decode support (YouTube may use this with 1080p otherwise) 
 +This can of course affect media at other sites. 
 +Note that av1/av01 is NOT the same as avc1 
 +[[https://www.youtube.com/playlist?list=PLyqf6gJt7KuHBmeVzZteZUlNUQAVLwrZS|AV1 Beta playlist]] 
 +<code> 
 +media.av1.enabled = false 
 +</code> 
 + 
 +vainfo from AMD Ryzen 7 5700G with Radeon Graphics 
 +<code> 
 +vainfo: VA-API version: 1.10 (libva 2.10.0) 
 +vainfo: Driver version: Mesa Gallium driver 20.3.5 for AMD RENOIR (DRM 3.40.0, 5.10.0-11-amd64, LLVM 11.0.1) 
 +vainfo: Supported profile and entrypoints 
 +      VAProfileMPEG2Simple            : VAEntrypointVLD 
 +      VAProfileMPEG2Main              : VAEntrypointVLD 
 +      VAProfileVC1Simple              : VAEntrypointVLD 
 +      VAProfileVC1Main                : VAEntrypointVLD 
 +      VAProfileVC1Advanced            : VAEntrypointVLD 
 +      VAProfileH264ConstrainedBaseline: VAEntrypointVLD 
 +      VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice 
 +      VAProfileH264Main               : VAEntrypointVLD 
 +      VAProfileH264Main               : VAEntrypointEncSlice 
 +      VAProfileH264High               : VAEntrypointVLD 
 +      VAProfileH264High               : VAEntrypointEncSlice 
 +      VAProfileHEVCMain               : VAEntrypointVLD 
 +      VAProfileHEVCMain               : VAEntrypointEncSlice 
 +      VAProfileHEVCMain10             : VAEntrypointVLD 
 +      VAProfileHEVCMain10             : VAEntrypointEncSlice 
 +      VAProfileJPEGBaseline           : VAEntrypointVLD 
 +      VAProfileVP9Profile0            : VAEntrypointVLD 
 +      VAProfileVP9Profile2            : VAEntrypointVLD 
 +      VAProfileNone                   : VAEntrypointVideoProc 
 +</code> 
 + 
 +==== To check if HW decoding is active ==== 
 +On newer AMD 
 +<code> 
 +while true; do cat /sys/kernel/debug/dri/0/amdgpu_pm_info | grep ^VCN; sleep 1; done 
 +</code> 
 + 
 +On Intel - check for Video engine activity 
 +<code> 
 +intel_gpu_top 
 +</code> 
 + 
 +===== Old information ===== 
 + 
 +https://bugzilla.mozilla.org/show_bug.cgi?id=1683808 
 +https://bugzilla.mozilla.org/show_bug.cgi?id=1610199 
 + 
 + 
 +<code> 
 +MOZ_X11_EGL=1 firefox # Not needed anymore as there is option gfx.x11-egl.force-enabled 
 +gfx.x11-egl.force-enabled = true
 media.ffmpeg.vaapi.enabled = true media.ffmpeg.vaapi.enabled = true
 media.ffvpx.enabled = false media.ffvpx.enabled = false
 gfx.webrender.enabled = true gfx.webrender.enabled = true
 +
 +Possibly disable use of av1/av01 (YouTube uses this with 1080p otherwise)
 +media.av1.enabled = false
 +
 +There are now also new settings for separate rendering process (RDD)
 +Have not fully understood yet what needs to be set.
  
 MOZ_X11_EGL=1 MOZ_LOG="PlatformDecoderModule:5" firefox 2>&1 | grep 'VA-API' MOZ_X11_EGL=1 MOZ_LOG="PlatformDecoderModule:5" firefox 2>&1 | grep 'VA-API'
 +
 +To get better log why VAAPI is disabled run Firefox with:
 +MOZ_LOG="Dmabuf:5, PlatformDecoderModule:5"
 +
 </code> </code>
 +
 +===== Checking if HW decoder is active =====
 +==== AMD ====
 +Check if "uvd" is enabled. UVD stands for Unified Video Decoder
 +<code>
 +watch -n '0.1' cat '/sys/kernel/debug/dri/0/radeon_pm_info'
 +or
 +watch -n '0.1' cat '/sys/kernel/debug/dri/0/amdgpu_pm_info'
 +</code>
 +
 +===== Known problems =====
 +
 +==== Nextcloud talk ====
 +When a screen is shared from remote end only a black screen is shown.
 +
 +Log output from:
 +<code>
 +MOZ_X11_EGL=1 MOZ_LOG="PlatformDecoderModule:5" firefox
 +</code>
 +
 +<code>
 +[Child 145: Unnamed thread 0x7f899b1e8940]: D/PlatformDecoderModule Sandbox decoder rejects requested type
 +[Child 145: MediaPDecoder #1]: D/PlatformDecoderModule Initialising VA-API FFmpeg decoder
 +libva info: VA-API version 1.4.0
 +libva info: va_getDriverName() returns 0
 +libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/r600_drv_video.so
 +libva info: Found init function __vaDriverInit_1_4
 +libva info: va_openDriver() returns 0
 +[AVHWDeviceContext @ 0x7f899adbf440] Format 0x3231564e -> nv12.
 +[AVHWDeviceContext @ 0x7f899adbf440] Format 0x30313050 -> p010le.
 +[AVHWDeviceContext @ 0x7f899adbf440] Format 0x36313050 -> unknown.
 +[AVHWDeviceContext @ 0x7f899adbf440] Format 0x32315659 -> yuv420p.
 +[AVHWDeviceContext @ 0x7f899adbf440] Format 0x56595559 -> unknown.
 +[AVHWDeviceContext @ 0x7f899adbf440] Format 0x59565955 -> uyvy422.
 +[AVHWDeviceContext @ 0x7f899adbf440] Format 0x41524742 -> bgra.
 +[AVHWDeviceContext @ 0x7f899adbf440] Format 0x41424752 -> rgba.
 +[AVHWDeviceContext @ 0x7f899adbf440] Format 0x58524742 -> bgr0.
 +[AVHWDeviceContext @ 0x7f899adbf440] Format 0x58424752 -> rgb0.
 +[AVHWDeviceContext @ 0x7f899adbf440] VAAPI driver: Mesa Gallium driver 18.3.6 for AMD KAVERI (DRM 2.50.0, 4.19.0-12-amd64, LLVM 7.0.1).
 +[AVHWDeviceContext @ 0x7f899adbf440] Driver not found in known nonstandard list, using standard behaviour.
 +[Child 145: MediaPDecoder #1]: D/PlatformDecoderModule VA-API FFmpeg init successful
 +[Child 145: MediaPDecoder #1]: D/PlatformDecoderModule Choosing FFmpeg pixel format for VA-API video decoding.
 +[Child 145: MediaPDecoder #1]: D/PlatformDecoderModule Requesting pixel format VAAPI_VLD
 +[vp8 @ 0x7f899a96c800] Format vaapi_vld chosen by get_format().
 +[vp8 @ 0x7f899a96c800] Format vaapi_vld requires hwaccel initialisation.
 +[vp8 @ 0x7f899a96c800] No support for codec vp8 profile -99.
 +[vp8 @ 0x7f899a96c800] Failed setup for format vaapi_vld: hwaccel initialisation returned error.
 +[vp8 @ 0x7f899a96c800] Format vaapi_vld not usable, retrying get_format() without it.
 +[Child 145: MediaPDecoder #1]: D/PlatformDecoderModule Choosing FFmpeg pixel format for VA-API video decoding.
 +[Child 145: MediaPDecoder #1]: D/PlatformDecoderModule avcodec_send_packet error: -22
 +[Child 145: Unnamed thread 0x7f899b1e8940]: D/PlatformDecoderModule Sandbox decoder rejects requested type
 +[Child 145: MediaPDecoder #1]: D/PlatformDecoderModule Initialising VA-API FFmpeg decoder
 +libva info: VA-API version 1.4.0
 +libva info: va_getDriverName() returns 0
 +libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/r600_drv_video.so
 +libva info: Found init function __vaDriverInit_1_4
 +libva info: va_openDriver() returns 0
 +[AVHWDeviceContext @ 0x7f8999cc3ec0] Format 0x3231564e -> nv12.
 +[AVHWDeviceContext @ 0x7f8999cc3ec0] Format 0x30313050 -> p010le.
 +[AVHWDeviceContext @ 0x7f8999cc3ec0] Format 0x36313050 -> unknown.
 +[AVHWDeviceContext @ 0x7f8999cc3ec0] Format 0x32315659 -> yuv420p.
 +[AVHWDeviceContext @ 0x7f8999cc3ec0] Format 0x56595559 -> unknown.
 +[AVHWDeviceContext @ 0x7f8999cc3ec0] Format 0x59565955 -> uyvy422.
 +[AVHWDeviceContext @ 0x7f8999cc3ec0] Format 0x41524742 -> bgra.
 +[AVHWDeviceContext @ 0x7f8999cc3ec0] Format 0x41424752 -> rgba.
 +[AVHWDeviceContext @ 0x7f8999cc3ec0] Format 0x58524742 -> bgr0.
 +[AVHWDeviceContext @ 0x7f8999cc3ec0] Format 0x58424752 -> rgb0.
 +[AVHWDeviceContext @ 0x7f8999cc3ec0] VAAPI driver: Mesa Gallium driver 18.3.6 for AMD KAVERI (DRM 2.50.0, 4.19.0-12-amd64, LLVM 7.0.1).
 +[AVHWDeviceContext @ 0x7f8999cc3ec0] Driver not found in known nonstandard list, using standard behaviour.
 +[Child 145: MediaPDecoder #1]: D/PlatformDecoderModule VA-API FFmpeg init successful
 +[Child 145: MediaPDecoder #3]: D/PlatformDecoderModule Choosing FFmpeg pixel format for VA-API video decoding.
 +[Child 145: MediaPDecoder #3]: D/PlatformDecoderModule Requesting pixel format VAAPI_VLD
 +[vp8 @ 0x7f8999df7000] Format vaapi_vld chosen by get_format().
 +[vp8 @ 0x7f8999df7000] Format vaapi_vld requires hwaccel initialisation.
 +[vp8 @ 0x7f8999df7000] No support for codec vp8 profile -99.
 +
 +[etc]...
 +</code>
 +
 +=== Tested workaround (as in turning off acceleration) ===
 +media.ffvpx.enabled = true
 +
 +====== Using Telavox web based SIP phone with FF ======
 +===== Need to spoof the user-agent to include "Chrome" =====
 +
 +Install [[https://addons.mozilla.org/en-US/firefox/addon/user-agent-string-switcher/|User-Agent switcher]] \\
 +
 +Then add this to the "Custom Mode" configuration
 +
 +<code ecmascript>
 +{
 +  "app.telavox.com": "${userAgent} Chrome"
 +}
 +</code>
 +
 +===== Now you also need to manually enable accepting calls =====
 +This is due to [[https://stackoverflow.com/questions/59131286/how-to-check-if-the-permission-to-access-microphone-has-been-rejected-by-the-use|microphone permisssion not queryable]]
 +
 +First make sure that you have allowed persistent access to microphone. \\
 +Then add the value registerSoftphone:"true" to the "Local Storage" for https://app.telavox.com
 +
 +If you then go to "Settings | Phone and audio" you should see that "Receive incoming calls" is now enabled.
general/firefox.1605682496.txt.gz · Last modified: 2020/11/18 06:54 by sunkan

Donate Powered by PHP Valid HTML5 Valid CSS Run on Debian Driven by DokuWiki