7个版本

0.0.7 2024年8月2日
0.0.6 2024年1月5日
0.0.5 2023年11月8日
0.0.4 2023年7月26日
0.0.1 2023年1月17日

#41 in 硬件支持

Download history 964/week @ 2024-05-04 1283/week @ 2024-05-11 1156/week @ 2024-05-18 933/week @ 2024-05-25 909/week @ 2024-06-01 1031/week @ 2024-06-08 979/week @ 2024-06-15 1055/week @ 2024-06-22 735/week @ 2024-06-29 1163/week @ 2024-07-06 751/week @ 2024-07-13 873/week @ 2024-07-20 1024/week @ 2024-07-27 842/week @ 2024-08-03 618/week @ 2024-08-10 446/week @ 2024-08-17

3,048 每月下载量
cros-codecs 中使用

BSD-3-Clause

1MB
24K SLoC

Libva Rust 包装器

该crate提供轻量级和(希望)安全的libva抽象,用于在Rust代码中(具有最少的依赖项)。它是为ChromeOS开发的,但没有ChromeOS特定的或依赖项,因此可以在任何地方使用。

依赖项

在链接时需要本机 libva 库,因此请确保已安装您的发行版的 libva-dev 或等效软件包。还需要与您的硬件对应的VA-API驱动程序:对于英特尔硬件,将是 intel-media-driver,而对于AMD硬件,则依赖于 Mesa

查看是否一切正常的一个简单方法是运行与 libva-utils 打包的 vainfo 工具或某些发行版中的独立软件包。 vainfo 将打印VA-API版本、驱动程序字符串以及支持配置文件和端点的列表,即

vainfo: VA-API version: 1.13 (libva 2.13.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 22.2.2 ()
vainfo: Supported profile and entrypoints
      VAProfileNone                   : VAEntrypointVideoProc
      VAProfileNone                   : VAEntrypointStats
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Simple            : VAEntrypointEncSlice
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointEncSlice
      VAProfileH264Main               : VAEntrypointVLD
      etc

对于解码,所需的配置文件必须在 VAEntrypointVLD 下受支持。例如,为了解码VP8媒体,必须在 vainfo 的输出中存在此行

      VAProfileVP8Version0_3          : VAEntrypointVLD

而要解码H264主配置文件媒体,则必须存在此行

      VAProfileH264Main               : VAEntrypointVLD

有关VA-API及其在ChromeOS中的使用的更多信息,请参阅 此指南

使用

该crate的名称为 cros-libva,以突出其源自ChromeOS并且不是官方绑定。为了便于使用,建议在您的 Cargo.toml 中使用以下行将其重命名为 libva

libva = { package = "cros-libva", version = "0.0.1" }

测试

关于如何使用此crate的简要介绍,请参阅位于 src/lib.rs 下的 libva_utils_mpeg2vldemo 测试。您还可以通过运行它来快速测试MPEG2解码。

cargo test -- --ignored libva_utils_mpeg2vldemo

致谢

此crate的第一个版本由Daniel Almeida编写,并在被拆分之前托管在crosvm存储库中。

依赖项

~0.4–1MB
~21K SLoC