我在哪里可以找到使用v4l2编解码器驱动程序的例子

时间:2013-12-07 01:52:28

标签: v4l2

在Raspberry-Pi代码中,有一个s5p-jpeg编解码器驱动程序。

drivers/media/platform/s5p-jpeg/jpeg-core.c

可以sombody请告诉我在哪里可以找到如何使用它的示例? 或者任何其他v4l2编解码器驱动程序?

我已经google了,但我找不到任何使用v4l2编解码器驱动程序的例子。

3 个答案:

答案 0 :(得分:2)

(添加另一个答案,因为它完全不同: - ))

V4L2规范中的“编解码器”API指的是硬件编解码器。 这样的编解码器是具有以下功能的设备:

  • 硬件编解码器显示为/dev/videoX设备

  • 它有一个视频输入,用户名应用程序可以在其中发送视频流 - 例如包含JPEG编码的视频帧 - 因此它具有V4L2_CAP_VIDEO_OUTPUT能力和

  • 它有一个视频输出,用户名应用程序可以读取视频流 - 例如包含未压缩的帧 - 来自,因此它也具有V4L2_CAP_VIDEO_CAPTURE能力。

有许多应用程序可以将视频写入v4l2 OUTPUT设备,这里有一些我所知道的:

afaik,这些应用程序没有任何特定的代码来处理“v4l2编解码器设备”,但可以写入/读取v4l2设备,这就是你应该需要的。

同时检查v4l-utils.git:查看utils / v4l2-ctl / v4l2-ctl-streaming.cpp

答案 1 :(得分:1)

v4l2在格式方面非常自由:例如捕获设备几乎可以以任何格式提供帧。

因此,如果您正在编写用户登陆工具(应用程序,库,......;而不是内核驱动程序),那么虽然不会使用编解码器(如果可以避免它) )。 想象一下,世界上每个想要读取v4l2流的应用程序,必须添加代码来解码SQ905CMJPEG中的帧或者什么样的编解码器(每个应用程序添加它们自己的错误实现集)< / p>

相反,智能人员创建了一个库,可以解压缩捕获设备提供的帧,并以标准方式提供这些帧:libv4l2

顺便说一句,如果您坚持编写自己的代码,libv4l2是一个很好的参考实现。

哦,如果你在考虑将模块加载到内核空间中的编码/解码(例如你有网络摄像头“foo”,它以“XYZ”格式提供图像,但是你希望它能够提供图像在格式“ABC”中通过添加内核模块,然后你运气不好。

Linus T.已经非常清楚[缺少参考]编解码器转换代码不能在内核空间中运行。

答案 2 :(得分:0)

代码 here 访问 v4l2 编解码器驱动程序

它确实检查了 V4L2_CAP_VIDEO_M2M 上限

它基于 kernel capture example 但有一些额外的代码