1

我想使用主机上的 linux/xorg 将两个完整的高清流从我的笔记本电脑实时编码/流式传输到远程位置。

VA API

为此,我一直在使用 VA API,但 5.59 fps 的性能非常糟糕(请参阅下面的粘贴)。

FFMPEG

使用带有 CPU 编码的 ffmpeg,我得到大约 200 fps,但随后我的 Intel(R) Core(TM) i7-3520M CPU @ 2.90GHz 的所有内核都处于忙碌状态并且风扇打开。

未来的计划

我希望 GPU 支持编码,然后将其集成到流式传输虚拟 xorg“屏幕”的程序中,有关我的计划的更多详细信息,请参阅https://lastlog.de/wiki/index.php/Raspberry_PI_virtual_screen

也许 h264 甚至不是我想要的?因此,如果有人对不同的实施提出建议,我会欢迎。

除了VA API似乎还有QuickSync但我还没有尝试过它,因为它还没有打包在 NixOS 上。

注意:我需要一个库才能顺利集成到代码中。

h264encode -w 1920 -h 1080 --profile MPSource 帧为 1920x1080,并将裁剪编码为 1920x1088

输入:尝试编码 H264...
输入:分辨率:1920x1080,60 帧
输入:帧率:30
输入:比特率:14929920
输入:切片:1
输入:期内:30
输入:IDR期间:60
输入:IpPeriod:1
输入:初始 QP:26
输入:最小 QP:0
输入:源 YUV:自动生成
输入:编码剪辑:/tmp/test.264
INPUT: Rec Clip : 不保存重建的帧


libva 信息​​:VA-API 版本 0.38.1
libva 信息​​:va_getDriverName() 返回 0
libva 信息​​:试图打开 /run/opengl-driver/lib/dri/i965_drv_video.so
libva 信息​​:找到初始化函数 __vaDriverInit_0_38
libva 信息​​:va_openDriver() 返回 0
使用配置文件 VAProfileH264Main
支持速率控制模式(0x12):CBR CQP
速率控制模式:CQP
支持 VAConfigAttribEncPackedHeaders
支持打包的序列头
支持打包的图片头
支持打包的切片头
支持打包的杂项标头
支持1个RefPicList0和1个RefPicList1
将数据加载到表面 15 .....完成表面加载
      \00000059(054456 字节编码)

性能:帧速率:5.59 fps(60 帧,10730 毫秒(每帧 178.83 毫秒))
性能:压缩比:51:1
性能:上传图片:10467 毫秒(174.45,97.55%)
性能:vaBeginPicture:0 毫秒(0.00,0.00% 百分比)
性能:vaRenderHeader:1 毫秒(0.02,0.01%)
性能:vaEndPicture:42 毫秒(0.70,0.39%)
性能:vaSyncSurface:244 毫秒(4.07,2.27%)
性能:SavePicture:7 毫秒(0.12,0.07%)
性能:其他:-31 毫秒(71582787.75、40027653.91% 百分比)
(开启多线程,时间仅供参考)

我已经看到了https://www.reddit.com/r/linux/comments/1qk1yu/is_there_currently_opensource_software_to_encode/但我不确定如何处理它。

4

1 回答 1

2

您现在可以使用(或同时使用)FFmpeg 和 libav 来实现相同的目的。

我写了一篇文章,使您能够在 ffmpeg 和 libav 上部署和使用基于 VAAPI 的硬件编码,此外,还提供了关于您可能遇到的任何编码器限制的参考,具体取决于您的硬件。

供您参考,这里是一个示例构建,截至今天启用了所有 VAAPI 编码器,根据需要进行修改以满足您的要求:

在 Skylake 验证测试平台上构建支持 VP8/9 解码和编码硬件加速的支持 VAAPI 的 FFmpeg 二进制文件:

构建平台:Ubuntu 16.04LTS。

第一件事:

首先构建依赖链。

  1. 厘米

这是用于英特尔 G45 和高清显卡系列的媒体运行时 GPU 内核管理器的 C。这是构建intel-hybrid-driver软件包的先决条件。

git clone https://github.com/01org/cmrt
cd cmrt
./autogen.sh
./configure
time make -j$(nproc) VERBOSE=1
sudo make -j$(nproc) install
sudo ldconfig -vvvv
  1. 英特尔混合驱动程序

此包提供对 WebM 项目 VPx 编解码器的支持。GPU 加速是通过在英特尔 GEN GPU 上执行的媒体内核提供的。混合驱动程序提供 CPU 绑定熵(例如,CPBAC)解码并管理 GEN GPU 媒体内核参数和缓冲区。

这是使用所需配置构建libva的先决条件,因此我们可以在支持的硬件配置上访问 VPX 系列混合解码功能。

git clone https://github.com/01org/intel-hybrid-driver
cd intel-hybrid-driver
./autogen.sh
./configure
time make -j$(nproc) VERBOSE=1
sudo make -j$(nproc) install
sudo ldconfig -vvv
  1. 英特尔 vaapi 驱动程序

此软件包为英特尔 GEN 显卡系列 SKU 提供 VA-API(视频加速 API)用户模式驱动程序。当前的视频驱动程序后端通过打包缓冲区和要发送到 i915 驱动程序的命令来为 GEN GPU 提供桥梁,以执行视频解码、编码和处理的硬件和着色器功能。当被调用以处理支持的硬件上的 VP8/9 混合解码任务时,它还为intel-hybrid-driver提供了一个包装器(必须使用该--enable-hybrid-codec选项进行配置)。

git clone https://github.com/01org/intel-vaapi-driver
cd intel-vaapi-driver
./autogen.sh
./configure --enable-hybrid-codec
time make -j$(nproc) VERBOSE=1
sudo make -j$(nproc) install
sudo ldconfig -vvvv

Libva 是 VA-API(视频加速 API)的实现

VA-API 是一个开源库和 API 规范,它提供了对视频处理的图形硬件加速能力的访问。它由每个支持的硬件供应商的主库和驱动程序特定的加速后端组成。

git clone https://github.com/01org/libva
cd libva
./autogen.sh
./configure
time make -j$(nproc) VERBOSE=1
sudo make -j$(nproc) install
sudo ldconfig -vvvv

完成后,通过运行vainfo测试 VAAPI 支持的功能集:

vainfo

我当前测试平台上的输出是:

libva info: VA-API version 0.40.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/local/lib/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_40
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.40 (libva 1.7.3)
vainfo: Driver version: Intel i965 driver for Intel(R) Skylake - 1.8.3.pre1 (glk-alpha-58-g5a984ae)
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Simple            : VAEntrypointEncSlice
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSlice
      VAProfileH264Main               : VAEntrypointEncSliceLP
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointEncSlice
      VAProfileH264High               : VAEntrypointEncSliceLP
      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
      VAProfileVP9Profile0            : VAEntrypointVLD

制作一个可用的 FFmpeg 构建来测试编码器:

现在,我们将构建一个 FFmpeg 二进制文件,它可以利用 VAAPI 来测试 Skylake 上的编码和解码功能,使用自定义前缀,因为我们通过测试平台上的环境模块系统加载 FFmpeg。

首先准备目标目录:

sudo mkdir -p /apps/ffmpeg/dyn
sudo chown -Rc $USER:$USER /apps/ffmpeg/dyn
mkdir -p ~/ffmpeg_sources

根据需要包括额外的组件:

(一个)。构建和部署 nasm: Nasm是用于 x264 和 FFmpeg 使用的 x86 优化的汇编程序。强烈推荐,否则您生成的构建可能会非常慢。

请注意,我们现在已经从 Yasm 切换到 nasm,因为这是 x265、x264 等正在采用的当前汇编程序。

cd ~/ffmpeg_sources
wget wget http://www.nasm.us/pub/nasm/releasebuilds/2.14rc0/nasm-2.14rc0.tar.gz
tar xzvf nasm-2.14rc0.tar.gz
cd nasm-2.14rc0
./configure --prefix="/apps/ffmpeg/dyn" --bindir="/apps/ffmpeg/dyn/bin"
make -j$(nproc) VERBOSE=1
make -j$(nproc) install
make -j$(nproc) distclean

(b)。静态构建和部署 libx264: 该库提供 H.264 视频编码器。有关更多信息和使用示例,请参阅H.264 编码指南。这需要使用--enable-gpl --enable-libx264配置 ffmpeg 。

cd ~/ffmpeg_sources
wget http://download.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
tar xjvf last_x264.tar.bz2
cd x264-snapshot*
PATH="/apps/ffmpeg/dyn/bin:$PATH" ./configure --prefix="/apps/ffmpeg/dyn" --bindir="/apps/ffmpeg/dyn/bin" --enable-static --disable-opencl
PATH="/apps/ffmpeg/dyn/bin:$PATH" make -j$(nproc) VERBOSE=1
make -j$(nproc) install VERBOSE=1
make -j$(nproc) distclean

(C)。构建和配置 libx265: 该库提供 H.265/HEVC 视频编码器。有关更多信息和使用示例,请参阅H.265 编码指南

sudo apt-get install cmake mercurial
cd ~/ffmpeg_sources
hg clone https://bitbucket.org/multicoreware/x265
cd ~/ffmpeg_sources/x265/build/linux
PATH="$/apps/ffmpeg/dyn/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="/apps/ffmpeg/dyn" -DENABLE_SHARED:bool=off ../../source
make -j$(nproc) VERBOSE=1
make -j$(nproc) install VERBOSE=1
make -j$(nproc) clean VERBOSE=1

(d)。构建和部署 libfdk-aac 库: 这提供了一个 AAC 音频编码器。有关更多信息和使用示例,请参阅AAC 音频编码指南。这需要使用--enable-libfdk-aac(如果还包括--enable-gpl则--enable-nonfree)配置 ffmpeg。

cd ~/ffmpeg_sources
wget -O fdk-aac.tar.gz https://github.com/mstorsjo/fdk-aac/tarball/master
tar xzvf fdk-aac.tar.gz
cd mstorsjo-fdk-aac*
autoreconf -fiv
./configure --prefix="/apps/ffmpeg/dyn" --disable-shared
make -j$(nproc)
make -j$(nproc) install
make -j$(nproc) distclean

(e)。构建和配置 libvpx

   cd ~/ffmpeg_sources
   git clone https://github.com/webmproject/libvpx/
   cd libvpx
   ./configure --prefix="/apps/ffmpeg/dyn" --enable-runtime-cpu-detect --enable-vp9 --enable-vp8 \
   --enable-postproc --enable-vp9-postproc --enable-multi-res-encoding --enable-webm-io --enable-vp9-highbitdepth --enable-onthefly-bitpacking --enable-realtime-only \
   --cpu=native --as=yasm
   time make -j$(nproc)
   time make -j$(nproc) install
   time make clean -j$(nproc)
   time make distclean

(F)。构建 LibVorbis

   cd ~/ffmpeg_sources
   wget -c -v http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.5.tar.xz
   tar -xvf libvorbis-1.3.5.tar.xz
   cd libvorbis-1.3.5
   ./configure --enable-static --prefix="/apps/ffmpeg/dyn"
   time make -j$(nproc)
   time make -j$(nproc) install
   time make clean -j$(nproc)
   time make distclean

(G)。构建FFmpeg:

cd ~/ffmpeg_sources
git clone https://github.com/FFmpeg/FFmpeg -b master
cd FFmpeg
PATH="/apps/ffmpeg/dyn/bin:$PATH" PKG_CONFIG_PATH="/apps/ffmpeg/dyn/lib/pkgconfig" ./configure \
  --pkg-config-flags="--static" \
  --prefix="/apps/ffmpeg/dyn" \
  --extra-cflags="-I/apps/ffmpeg/dyn/include" \
  --extra-ldflags="-L/apps/ffmpeg/dyn/lib" \
  --bindir="/apps/ffmpeg/dyn/bin" \
  --enable-debug=3 \
  --enable-vaapi \
  --enable-libvorbis \
  --enable-libvpx \
  --enable-gpl \
  --cpu=native \
  --enable-opengl \
  --enable-libfdk-aac \
  --enable-libx264 \
  --enable-libx265 \
  --enable-nonfree 
PATH="/apps/ffmpeg/dyn/bin:$PATH" make -j$(nproc) 
make -j$(nproc) install 
make -j$(nproc) distclean 
hash -r

注意:要获取调试版本,请省略该distclean步骤,您将ffmpeg_g在源子目录下找到二进制文件。

当出现问题并且可能需要 gdb 跟踪以进行调试时,我们通常希望进行调试构建。

FFmpeg 的 environment-modules 文件(如果您的前缀不同,则根据需要进行编辑,并在需要时添加冲突):

less /usr/share/modules/modulefiles/ffmpeg/vaapi


#%Module1.0#####################################################################
##
## ffmpeg media transcoder modulefile
## By Dennis Mungai <dmngaie@gmail.com>
## February, 2016
##

# for Tcl script use only
set     appname         ffmpeg
set     version         dyn
set     prefix          /apps/${appname}/${version}
set     exec_prefix     ${prefix}/bin

conflict        ffmpeg/git

prepend-path    PATH            ${exec_prefix}
prepend-path    LD_LIBRARY_PATH ${prefix}/lib

要加载和测试,请运行:

module load ffmpeg/vaapi

通过以下方式确认一切正常:

which ffmpeg

预期输出:

/apps/ffmpeg/dyn/bin/ffmpeg

测试新编码器的示例片段:

确认 VAAPI 编码器已成功构建:

ffmpeg  -hide_banner -encoders | grep vaapi 

 V..... h264_vaapi           H.264/AVC (VAAPI) (codec h264)
 V..... hevc_vaapi           H.265/HEVC (VAAPI) (codec hevc)
 V..... mjpeg_vaapi          MJPEG (VAAPI) (codec mjpeg)
 V..... mpeg2_vaapi          MPEG-2 (VAAPI) (codec mpeg2video)
 V..... vp8_vaapi            VP8 (VAAPI) (codec vp8)

请参阅每个相关编码器的帮助文档:

ffmpeg -hide_banner -h encoder='encoder name'

测试编码器;

使用 GNU 并行,我们将使用以下示例将系统上 ~/src 路径上的一些 mp4 文件(4k H.264 测试样本,每个 40 分钟,AAC 6 通道音频)编码为 VP8 和 HEVC。请注意,我已经调整了编码器以适合我的用例,并启用了重新缩放到 1080p。根据需要进行调整。

在作业控制上,您可以使用 gnu-parallel 启动多个 VAAPI 加速作业,如下例所示:

对于 VP8,同时启动 10 个编码作业:

parallel -j 10 --verbose '/apps/ffmpeg/dyn/bin/ffmpeg -loglevel debug -threads 4 -hwaccel vaapi -i "{}"  -vaapi_device /dev/dri/renderD129 -c:v vp8_vaapi -loop_filter_level:v 63 -loop_filter_sharpness:v 15 -b:v 4500k -maxrate:v 7500k -vf 'format=nv12,hwupload,scale_vaapi=w=1920:h=1080' -c:a libvorbis -b:a 384k -ac 6 -f webm "{.}.webm"' ::: $(find . -type f -name '*.mp4')

使用 GNU Parallel 的 HEVC:

对于 HEVC Main Profile,同时启动 10 个编码作业:

parallel -j 4 --verbose '/apps/ffmpeg/dyn/bin/ffmpeg -loglevel debug -threads 4 -hwaccel vaapi -i "{}"  -vaapi_device /dev/dri/renderD129 -c:v hevc_vaapi -qp:v 19 -b:v 2100k -maxrate:v 3500k -vf 'format=nv12,hwupload,scale_vaapi=w=1920:h=1080' -c:a libvorbis -b:a 384k -ac 6 -f matroska "{.}.mkv"' ::: $(find . -type f -name '*.mp4')

一些注意事项:

  1. 英特尔的 QuickSync 非常高效。在此处查看同时运行 10 个编码的功耗跟踪和平均系统负载。
  2. Skylake 的 HEVC 编码器非常慢,我怀疑在我的硬件上,可能比基于软件的 x265 编码器和 kvazaar 的 HEVC 编码器慢。然而,经过良好调整,其质量明显优于其他基于硬件的编码器,例如 Maxwell GM200 系列 SKU 上的 Nvidia NVENC HEVC 编码器。然而,Pascal 上的 NVENC 编码器比 Intel 的 Skylake HEVC 编码器实现更快、更出色。
  3. 与 Nvidia 的 NVENC 不同,消费者 SKU 没有同步编码限制。我能够使用 VAAPI 同时运行 10 个编码会话,而使用 NVENC,我在测试台上的 GeForce GTX 系列 GPU 上最多只能同时进行两个编码。干得好,英特尔。

到今天为止,VP9 硬件加速编码现在可用于 FFmpeg。但是,您需要基于Intel Kabylake的集成 GPU 才能利用此功能。

现在,有了新的 vp9_vaapi 编码器,这就是我们得到的。

编码器选项现在可用:

ffmpeg -h vp9_vaapi

输出:

Encoder vp9_vaapi [VP9 (VAAPI)]:
    General capabilities: delay 
    Threading capabilities: none
    Supported pixel formats: vaapi_vld
vp9_vaapi AVOptions:
  -loop_filter_level <int>        E..V.... Loop filter level (from 0 to 63) (default 16)
  -loop_filter_sharpness <int>        E..V.... Loop filter sharpness (from 0 to 15) (default 4)

当您尝试在不受支持的硬件上实现这一点时会发生什么,比如 Skylake?

请参阅下面的示例输出:

[Parsed_format_0 @ 0x42cb500] compat: called with args=[nv12]
[Parsed_format_0 @ 0x42cb500] Setting 'pix_fmts' to value 'nv12'
[Parsed_scale_vaapi_2 @ 0x42cc300] Setting 'w' to value '1920'
[Parsed_scale_vaapi_2 @ 0x42cc300] Setting 'h' to value '1080'
[graph 0 input from stream 0:0 @ 0x42cce00] Setting 'video_size' to value '3840x2026'
[graph 0 input from stream 0:0 @ 0x42cce00] Setting 'pix_fmt' to value '0'
[graph 0 input from stream 0:0 @ 0x42cce00] Setting 'time_base' to value '1/1000'
[graph 0 input from stream 0:0 @ 0x42cce00] Setting 'pixel_aspect' to value '1/1'
[graph 0 input from stream 0:0 @ 0x42cce00] Setting 'sws_param' to value 'flags=2'
[graph 0 input from stream 0:0 @ 0x42cce00] Setting 'frame_rate' to value '24000/1001'
[graph 0 input from stream 0:0 @ 0x42cce00] w:3840 h:2026 pixfmt:yuv420p tb:1/1000 fr:24000/1001 sar:1/1 sws_param:flags=2
[format @ 0x42cba40] compat: called with args=[vaapi_vld]
[format @ 0x42cba40] Setting 'pix_fmts' to value 'vaapi_vld'
[auto_scaler_0 @ 0x42cd580] Setting 'flags' to value 'bicubic'
[auto_scaler_0 @ 0x42cd580] w:iw h:ih flags:'bicubic' interl:0
[Parsed_format_0 @ 0x42cb500] auto-inserting filter 'auto_scaler_0' between the filter 'graph 0 input from stream 0:0' and the filter 'Parsed_format_0'
[AVFilterGraph @ 0x42ca360] query_formats: 6 queried, 4 merged, 1 already done, 0 delayed
[auto_scaler_0 @ 0x42cd580] w:3840 h:2026 fmt:yuv420p sar:1/1 -> w:3840 h:2026 fmt:nv12 sar:1/1 flags:0x4
[hwupload @ 0x42cbcc0] Surface format is nv12.
[AVHWFramesContext @ 0x42ccbc0] Created surface 0x4000000.
[AVHWFramesContext @ 0x42ccbc0] Direct mapping possible.
[AVHWFramesContext @ 0x42c3e40] Created surface 0x4000001.
[AVHWFramesContext @ 0x42c3e40] Direct mapping possible.
[AVHWFramesContext @ 0x42c3e40] Created surface 0x4000002.
[AVHWFramesContext @ 0x42c3e40] Created surface 0x4000003.
[AVHWFramesContext @ 0x42c3e40] Created surface 0x4000004.
[AVHWFramesContext @ 0x42c3e40] Created surface 0x4000005.
[AVHWFramesContext @ 0x42c3e40] Created surface 0x4000006.
[AVHWFramesContext @ 0x42c3e40] Created surface 0x4000007.
[AVHWFramesContext @ 0x42c3e40] Created surface 0x4000008.
[AVHWFramesContext @ 0x42c3e40] Created surface 0x4000009.
[AVHWFramesContext @ 0x42c3e40] Created surface 0x400000a.
[vp9_vaapi @ 0x409da40] Encoding entrypoint not found (19 / 6).
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
[AVIOContext @ 0x40fdac0] Statistics: 0 seeks, 0 writeouts
[aac @ 0x40fcb00] Qavg: -nan
[AVIOContext @ 0x409f820] Statistics: 32768 bytes read, 0 seeks
Conversion failed!

有趣的是这个特定平台上没有 VP9 编码的入口点警告,正如 vainfo 的输出所证实的那样:

libva info: VA-API version 0.40.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/local/lib/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_40
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.40 (libva 1.7.3)
vainfo: Driver version: Intel i965 driver for Intel(R) Skylake - 1.8.4.pre1 (glk-alpha-71-gc3110dc)
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Simple            : VAEntrypointEncSlice
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSlice
      VAProfileH264Main               : VAEntrypointEncSliceLP
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointEncSlice
      VAProfileH264High               : VAEntrypointEncSliceLP
      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
      VAProfileVP9Profile0            : VAEntrypointVLD

VP9 配置文件 0 的 VLD(用于可变长度解码)入口点是 Skylake 在 VP9 硬件加速方面达到的最远距离。

这些带有 Kabylake 测试台,运行这些编码测试并报告:-)

于 2016-06-30T21:03:46.520 回答