FFmpeg hardware transcoding

driesm.michiels at gmail.com driesm.michiels at gmail.com
Tue Feb 26 19:35:46 UTC 2019

Hi Multimedia mailing list,

Here I am again with a follow-up question to this.
I was wondering if hardware acceleration is possible even if I am building
all ports with X11 unset (off).
I noticed that when building ports related to hardware acceleration, more
specifically, libva-utils to check if driver etc is detected with vainfo, it
fails with this;

[~]$ vainfo
ld-elf.so.1: Shared object "libva-x11.so.2" not found, required by "vainfo"

This fails because I build libva without X11 support. Is vainfo only
supported to work on platforms that are running an X11 server?
When I reinstall libva with X11 support vainfo works, although it does say
its not detecting X11 server (which I'm not interested in).
I am interested however in the capabilities of the detected driver and if it
is detected at all.

Output of vainfo:
[~]$ vainfo
error: XDG_RUNTIME_DIR not set in the environment.
error: can't connect to X server!
vainfo: VA-API version: 1.4 (libva 2.4.0)
vainfo: Driver version: Intel i965 driver for Intel(R) Skylake - 2.3.0
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Simple            : VAEntrypointEncSlice
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
      VAProfileH264ConstrainedBaseline: VAEntrypointFEI
      VAProfileH264ConstrainedBaseline: VAEntrypointStats
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSlice
      VAProfileH264Main               : VAEntrypointEncSliceLP
      VAProfileH264Main               : VAEntrypointFEI
      VAProfileH264Main               : VAEntrypointStats
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointEncSlice
      VAProfileH264High               : VAEntrypointEncSliceLP
      VAProfileH264High               : VAEntrypointFEI
      VAProfileH264High               : VAEntrypointStats
      VAProfileH264MultiviewHigh      : VAEntrypointVLD
      VAProfileH264MultiviewHigh      : VAEntrypointEncSlice
      VAProfileH264StereoHigh         : VAEntrypointVLD
      VAProfileH264StereoHigh         : VAEntrypointEncSlice
      VAProfileVC1Simple              : VAEntrypointVLD
      VAProfileVC1Main                : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD
      VAProfileNone                   : VAEntrypointVideoProc
      VAProfileJPEGBaseline           : VAEntrypointVLD
      VAProfileJPEGBaseline           : VAEntrypointEncPicture
      VAProfileVP8Version0_3          : VAEntrypointVLD
      VAProfileVP8Version0_3          : VAEntrypointEncSlice
      VAProfileHEVCMain               : VAEntrypointVLD
      VAProfileHEVCMain               : VAEntrypointEncSlice

Possible solution (although I'm really just guessing here and are probably
not correct in many ways);
- Try build vainfo without linking against libva-x11.so
- Remove X11 option from libva and always enable it (only a few extra
libraries that get pulled in by this)


> -----Original Message-----
> From: Jan Beich <jbeich at FreeBSD.org>
> Sent: woensdag 20 februari 2019 23:57
> To: driesm.michiels at gmail.com
> Cc: freebsd-multimedia at freebsd.org
> Subject: Re: FFmpeg hardware transcoding
> <driesm.michiels at gmail.com> writes:
> > What is the minimum requirements for being able to utilize quick sync
> > on my intel chip for ffmpeg hardware transcoding?
> I don't configure my system(s) daily to remember such things. ;)
> Quick Sync Video is exposed via MediaSDK (high-level) and libva
> MediaSDK hasn't been ported yet but media-driver (its backend) has.
> FFmpeg and GStreamer support both MediaSDK and libva.
> > 1.	DRM module loaded
> > 2.	Correct permission for the application on /dev/dri/renderD128
> > 3.	FFmpeg build with libva support (VAAPI on)
>   4.    Either libva-intel-driver or libva-intel-media-driver
> > Are there any more I am missing?
> Probably not. Try and report your issues.
> > I saw another driver in ports as "multimedia/libva-intel-media-driver"?
> Try both. ;) Some examples from
> https://trac.ffmpeg.org/wiki/Hardware/VAAPI
> don't work on iHD e.g., "Burn subtitles into the video while transcoding".
> i965 (libva-intel-driver) advantages:
> - VP8 encoding on Skylake
> - Partial VP8 encoding on Haswell/Broadwell
> - Partial VP9 decoding on Haswell/Broadwell/Skylake
> - H264 encoding profiles for Multiview and Stereo
> iHD (libva-intel-media-driver) advantages:
> - Decoding on console framebuffer (e.g, mpv --gpu-context=drm)
> - Better encoding performance (even without MediaSDK)
> - FEI (Flexible Encoding Infrastructure) for HEVC
> - JIT (Just-In-Time) compilation of media kernels (needs intel-graphics-
> compiler)
> - Icelake support (and maybe Xe in future)
> - Actively developed upstream

More information about the freebsd-multimedia mailing list