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
Last revisionBoth sides next revision
general:firefox [2020/11/18 06:54] sunkangeneral:firefox [2022/02/05 07:33] 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> 
 + 
 +===== 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.txt · Last modified: 2022/02/05 07:39 by sunkan

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