在Raspberry-Pi代码中,有一个s5p-jpeg
编解码器驱动程序。
drivers/media/platform/s5p-jpeg/jpeg-core.c
可以sombody请告诉我在哪里可以找到如何使用它的示例? 或者任何其他v4l2编解码器驱动程序?
我已经google了,但我找不到任何使用v4l2编解码器驱动程序的例子。
答案 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流的应用程序,必须添加代码来解码SQ905C
或MJPEG
中的帧或者什么样的编解码器(每个应用程序添加它们自己的错误实现集)< / p>
相反,智能人员创建了一个库,可以解压缩捕获设备提供的帧,并以标准方式提供这些帧:libv4l2。
顺便说一句,如果您坚持编写自己的代码,libv4l2
是一个很好的参考实现。
哦,如果你在考虑将模块加载到内核空间中的编码/解码(例如你有网络摄像头“foo”,它以“XYZ”格式提供图像,但是你希望它能够提供图像在格式“ABC”中通过添加内核模块,然后你运气不好。
Linus T.已经非常清楚[缺少参考]编解码器转换代码不能在内核空间中运行。
答案 2 :(得分:0)