HW Video Decoding - Das ewige Leid

4nanai

Captain
Registriert
Dez. 2004
Beiträge
3.363
Ich glaube seit gut 10 Jahren muss man sich in der Linux-Welt mit dem Problem herumschlagen, dass HW Video Decoding im Browser entweder gar nicht oder erst durch Umwege funktioniert. Eine Zeit lang war's relativ trivial, doch vor etwa einem halben Jahr gingen die Probleme erneut los. Ich erspare mir an der Stelle die Erzählungen über die Lotterie mit Browser-Flags und manuelle Patches, aber es ist natürlich selbstredend, dass fehlendes HW-Decoding sich vor allem bei der AKkulaufzeit von Laptops bemerkbar macht. Dieser Thread im Arch-Forum spiegelt die Historie dieses Leids wieder: https://bbs.archlinux.org/viewtopic.php?id=244031

Das Problem ist auch relativ tückisch und nicht immer sofort zu erkennen, sondern wird erst offenbart, wenn man tatsächlich ein Video abspielt und die Energie-Aufnahme plötzlich am Rad dreht. Darüber hinaus ist das Problem auch von den verschiedensten Konstellation (Firefox, Chromium, Intel, AMD, Nvidia, X11, Wayland) abhängig.

Beispielsweise bei Chromium-basierten Browsern mit AMD GPU:
chrome://gpu gibt einen vermeintlichen Support von HW-Decoding aus

1701437539665.png


vainfo attestiert ebenfalls ebenfalls einen Support

VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSlice
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSlice
VAProfileHEVCMain : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointEncSlice
VAProfileHEVCMain10 : VAEntrypointVLD
VAProfileHEVCMain10 : VAEntrypointEncSlice

Die Realität unter chrome://media-internals sieht dann aber so aus:

1701437648933.png



FFmpegVideoDecoder ist CPU-basiertes SW-Decoding. VaapiVideoDecoder müsste dort stehen, wenn HW-Decoding genutzt wird.



Aktueller Fix für AMD (Arch only?) im Dezember 2023:

mesa muss manuell gepatcht werden. Merge Request vom Entwickler des Patches: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26165

Code:
# Download mesa-git PKGBUILD
curl "https://aur.archlinux.org/cgit/aur.git/snapshot/mesa-git.tar.gz" -o mesa-git.tar.gz
tar -xvf mesa-git.tar.gz
cd mesa-git

# Extract and patch sources
makepkg -so
cd src/mesa
curl -L "https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26165.patch" | git am

# Build and install package
cd ../..
makepkg -sei

chromium-flags.conf:
Code:
--use-gl=angle
--use-angle=vulkan
--enable-accelerated-video-decode
--enable-features=Vulkan,VulkanFromANGLE,DefaultANGLEVulkan,VaapiIgnoreDriverChecks,VaapiVideoDecoder,PlatformHEVCDecoderSupport,UseMultiPlaneFormatForHardwareVideo


So funktioniert es aktuell wieder bei mir:

1701438068279.png
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: ufopizza, isiprimax, Azghul0815 und 2 andere
Wie schaut man bei Firefox nach was genutzt wird, bei mir behauptet er zumindest Hardware decoding zu nutzen...

Support-Informationen zum Codec unter about:support
Codec-NameSoftware-DekodierungHardware-Dekodierung
H264UnterstütztUnterstützt
VP9UnterstütztUnterstützt
VP8UnterstütztUnterstützt
AV1UnterstütztNicht unterstützt
HEVCNicht unterstütztNicht unterstützt
 
Ich kenne unter FF leider keine direkte Möglichkeit um das zu sehen. Du könntest mit nvtop nachschauen, ob der GPU Decoder genutzt wird.

1701440797735.png
 
  • Gefällt mir
Reaktionen: xCtrl
Zuletzt bearbeitet:
@4nanai Als echter Root geht nur mit Overlayen (oder Privilegierter Container), nicht mit Toolbox da das ein unprivilegierter Container ist.
Ergänzung ()

Overlayed, und jetzt zeigt es eine sehr hohe GPU Last (75%) beim Video Spielen.

PS Funktioniert auch ohne root
 
Zuletzt bearbeitet:
Diese Misere habe ich auch schon durch. Mein Laptop hat eine IGPU und eine AMD GPU. Bei Youtube sah ich dann ab FullHD ein Ruckeln... dann bin ich dem Problem auf die Schliche gekommen.
Mit intel_gpu_top habe ich dann bemerkt, dass der Encoder gar nichts macht.
 
Zurück
Oben