hardware:en-decoder

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
hardware:en-decoder [2020/11/16 18:22] – [Intel] derpeterhardware:en-decoder [2026/07/26 22:17] (current) – external edit 127.0.0.1
Line 1: Line 1:
-Video Acceleration +Video Acceleration
   * https://en.wikipedia.org/wiki/Category:Video_acceleration   * https://en.wikipedia.org/wiki/Category:Video_acceleration
   * https://en.wikipedia.org/wiki/Category:Video_compression_and_decompression_ASIC   * https://en.wikipedia.org/wiki/Category:Video_compression_and_decompression_ASIC
   * https://wiki.archlinux.org/index.php/Hardware_video_acceleration   * https://wiki.archlinux.org/index.php/Hardware_video_acceleration
  
-APIs+APIs
  
-== VAAPI+## VAAPI
 VAAPI was specified by intel but can be used with hardware of different vendors. It is well supported in gstreamer and ffmpeg. In most cases this is you best option. Only for some hardware / driver combinations you may get better results with one of the more proprietary APIs / drivers.  VAAPI was specified by intel but can be used with hardware of different vendors. It is well supported in gstreamer and ffmpeg. In most cases this is you best option. Only for some hardware / driver combinations you may get better results with one of the more proprietary APIs / drivers. 
  
Line 13: Line 12:
   * https://freedesktop.org/wiki/Software/vaapi/   * https://freedesktop.org/wiki/Software/vaapi/
  
-The tool ''vainfo'' from the libva-utils repository ( https://github.com/intel/libva-utils/tree/master/vainfo ) can give you an overview what is supported on you system. The results differ depending on lib, cpu and driver version. vainfo is also packaged in many linux distributions. Output on a kabylake microarchitecture based CPU will e.g. look like this:+The tool ''vainfo'' from the libva-utils repository ( https://github.com/intel/libva-utils/tree/master/vainfo ) can give you an overview what is supported on you system. The results differ depending on lib, cpu and driver version. vainfo is also packaged in many linuxdistributions.  
 + 
 +Vainfo can be forced to use a specific render device  
 +<code> 
 +vainfo --display drm --device /dev/dri/renderD129 
 +</code> 
 + 
 +Also the driver to use can be choosen 
 +<code> 
 +LIBVA_DRIVER_NAME=iHD 
 +</code> 
 + 
 +Output on a kabylake microarchitecture based CPU will e.g. look like this:
  
 <code> <code>
Line 56: Line 67:
  
  
-== VDPAU+## VDPAU
   * https://en.wikipedia.org/wiki/VDPAU   * https://en.wikipedia.org/wiki/VDPAU
  
-== OMX / OpenMAX+## OMX / OpenMAX
   * https://en.wikipedia.org/wiki/OpenMAX   * https://en.wikipedia.org/wiki/OpenMAX
  
-Hardware+Hardware
 Hardware en/decoder can be found in a number of chips. The probably most common type are GPUs or GPU components of CPUs and SOCs. Hardware en/decoder can be found in a number of chips. The probably most common type are GPUs or GPU components of CPUs and SOCs.
 Besides that there are also some dedicated de/encoder cards available. You probably can also use FPGAs but we didn't look into that (yet) Besides that there are also some dedicated de/encoder cards available. You probably can also use FPGAs but we didn't look into that (yet)
  
-== Intel+## Intel
 Intel implement the video acceleration in the GPU parts of their CPUs. Its mostly available in Desktop and Tablet CPUs but also in some Xeon Server CPUs. Intel implement the video acceleration in the GPU parts of their CPUs. Its mostly available in Desktop and Tablet CPUs but also in some Xeon Server CPUs.
 The hardware feature is called QuickSync an can be used via different APIs / Libs. Intel makes it not easy to user to figure out which CPU/GPU can do what, The hardware feature is called QuickSync an can be used via different APIs / Libs. Intel makes it not easy to user to figure out which CPU/GPU can do what,
Line 94: Line 105:
 To see the load of your GPU, which also will tell you how much headroom you have for more streams, you can use intels <code>intel_gpu_top</code> which is packaged e.g. on debian with '''intel-gpu-tools'''. To see the load of your GPU, which also will tell you how much headroom you have for more streams, you can use intels <code>intel_gpu_top</code> which is packaged e.g. on debian with '''intel-gpu-tools'''.
  
-== Nvidia+## Nvidia
 As usual NVIDIA provides the worst user experience possible by limiting the feature not based on hardware capabilities but on the price of the card. As usual NVIDIA provides the worst user experience possible by limiting the feature not based on hardware capabilities but on the price of the card.
 This means you will not be able to en- / decode much stream in parallel if you don't pay a an absurd amount of money. But never the less you might already own a card .... This means you will not be able to en- / decode much stream in parallel if you don't pay a an absurd amount of money. But never the less you might already own a card ....
Line 116: Line 127:
 To see the load of your GPU use nvidia's To see the load of your GPU use nvidia's
 <code>nvidia-smi pmon</code> <code>nvidia-smi pmon</code>
-== AMD / ATI +## AMD / ATI 
-=== Radeon+### Radeon
 The AMD stand alone GPUs provide also video en/ decoder capabilities. With recent Linux Kernels e.g. the NAVI Gpus (Radeon GT 5xxx) can be used without binary drivers. The AMD stand alone GPUs provide also video en/ decoder capabilities. With recent Linux Kernels e.g. the NAVI Gpus (Radeon GT 5xxx) can be used without binary drivers.
 The first AMD/ATI GPU with video accelerator was R600 architecture from 2007. AMD developed different accelerator suites over time: The first AMD/ATI GPU with video accelerator was R600 architecture from 2007. AMD developed different accelerator suites over time:
Line 158: Line 169:
  
 while gstreamer seems not support the usage jet. while gstreamer seems not support the usage jet.
-== Broadcom +## Broadcom 
-=== Christal HD+### Christal HD
 Broadcoms Christal HD cards where mostly used for decoding video on devices not capably to to it in CPU. It can only do decoding so it is not that relevant here. Broadcoms Christal HD cards where mostly used for decoding video on devices not capably to to it in CPU. It can only do decoding so it is not that relevant here.
 * https://en.wikipedia.org/wiki/Broadcom_Crystal_HD * https://en.wikipedia.org/wiki/Broadcom_Crystal_HD
  
-=== Raspberry Pi 1-4+### Raspberry Pi 1-4
 The SOCs used in the raspberrypis can be used for de/encoding of video. It can be accessed with OMX api which is present in gstreamer and ffmpeg The SOCs used in the raspberrypis can be used for de/encoding of video. It can be accessed with OMX api which is present in gstreamer and ffmpeg
   * https://wiki.matthiasbock.net/index.php/Hardware-accelerated_video_playback_on_the_Raspberry_Pi   * https://wiki.matthiasbock.net/index.php/Hardware-accelerated_video_playback_on_the_Raspberry_Pi
Line 182: Line 193:
   omxhdmiaudiosink: OpenMAX HDMI Audio Sink   omxhdmiaudiosink: OpenMAX HDMI Audio Sink
 </code> </code>
-Software +Software
  
-== FFMPEG+## FFMPEG
   * https://trac.ffmpeg.org/wiki/HWAccelIntro   * https://trac.ffmpeg.org/wiki/HWAccelIntro
   * https://trac.ffmpeg.org/wiki/Hardware/VAAPI,   * https://trac.ffmpeg.org/wiki/Hardware/VAAPI,
  
-== Gstreamer+## Gstreamer
 To see which de/encoder gstreamer can use on your system you can run e.g.: To see which de/encoder gstreamer can use on your system you can run e.g.:
 <code>sudo gst-inspect-1.0 vaapi </code> <code>sudo gst-inspect-1.0 vaapi </code>
 gstreamer1.0-vaapi needs to be installed for this to work. Replace vaapi with the API you want to use e.g. omx. gstreamer1.0-vaapi needs to be installed for this to work. Replace vaapi with the API you want to use e.g. omx.
 +There are some envirement variables that can be set to change gstreamers behavior / driver usage
 +
 +<code>
 +LIBVA_DRIVER_NAME=iHD DRI_PRIME=/dev/dri/renderD128 GST_VAAPI_ALL_DRIVERS=1
 +</code>
 +where the first one is in most cases enough.
 +
 +
 The output will look like: The output will look like:
  
Line 223: Line 242:
 </code> </code>
  
 +  * https://blogs.igalia.com/vjaquez/2018/03/28/gstreamer-va-api-troubleshooting/ <= trouble shooting guide
   * https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-vaapi-plugins/html/ch01.html   * https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-vaapi-plugins/html/ch01.html
   * https://gstreamer.freedesktop.org/documentation/tutorials/playback/hardware-accelerated-video-decoding.html   * https://gstreamer.freedesktop.org/documentation/tutorials/playback/hardware-accelerated-video-decoding.html
  • hardware/en-decoder.1605550933.txt.gz
  • Last modified: 2020/11/16 18:22
  • by derpeter