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

站长云网 2024-02-28 5iter.com 站长云网

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

请求注释"代码将VP9库代码移植到Rust中,并将RKVDEC和Hantro驱动程序代码转换为使用Rust版本。 

Fluendo的Fluster测试表明,无论是使用Rust还是C版本的代码,结果都是一样的。

Almeida对RFC补丁发表了如下评论:

关于驱动程序,我们在不同场合已经说了很多,我觉得目前的共识是等待。这就是为什么我提出一种不同的方法:将我们的编解码器库移植到Rust中。

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

关于代码的第一件事是它不包含任何绑定层。

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

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

他在补丁封面信中继续补充道:

最后,请注意这段代码只是一个概念验证,如果反响良好,我们可以推出一个正式的补丁(包括所有相关内容)"

感兴趣的人可以在内核邮件列表中找到这些RFC补丁,同时等待其他Linux内核上游利益相关者的反馈。

责任编辑:站长云网