Linux 的 V4L2 VP9 编解码器内核代码用 Rust 重写以提高内存安全性

Collabora 的 Daniel Almeida 发布了 Linux 内核视频 4 Linux 2 (V4L2) 子系统中重写的 VP9 编解码器库代码。由于使用了 Rust 而不是现有的 C 代码,这应该会产生更好的内存安全性,并能更好地抵御现有代码中的潜在问题。

请求注释代码将 VP9 库代码移植到 Rust 中,并将 RKVDEC 和 Hantro 驱动程序代码转换为使用 Rust 版本。Fluendo 的 Fluster 测试表明,无论是使用 Rust 还是 C 版本的代码,结果都是一样的。

Linux 的 V4L2 VP9 编解码器内核代码用 Rust 重写以提高内存安全性

Almeida 对 RFC 补丁发表了评论:

“关于驱动程序,我们已经在不同场合谈了很多,我认为目前的共识是等待。因此,我提出了一种不同的方法:将我们的编解码器库移植到 Rust 中。

在我看来,这些组件可以从 Rust 中受益匪浅,因为它们实现了复杂的算法,同时还通过 V4L2 控件处理从用户空间接收到的数据。这些算法使用从用户空间接收的数据来索引大量数组,从而受益于 Rust 的内存安全性。

代码的第一点是它不包含任何绑定层。由于需要与 C 代码保持同步,这一点多次被指出是一个障碍。

这里的 Rust 代码还为 C 驱动程序提供了一个 C API。这个 C API 是由 cbindgen 自动生成的,我已经提供了如何生成的说明。由于 ABI 相同,我们甚至可以同时使用 C 库和 Rust 库中的函数。

上述功能非常有用,因为它意味着我们可以在必要时逐段转换指定的代码库。C 驱动程序将通过 C API 正常工作,而任何新的 Rust 驱动程序都将受益于本地 Rust 接口。“

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论