0

I've got a task to show video in console mode without X11, captured from a USB camera. I'm totally new to the video capturing/encoding/decoding stuff. I figured out that USB cameras supporting Video4linux can capture video in YUV 4:2:2 format. As far as I understood this is the uncompressed format. So, I'm wondering if I have to compress this video to show it on screen or not?

PS I've got the Odroid XU4 dev board with Mali t628 GPU if it can help somehow..

4

1 回答 1

1

你的理解不正确。USB 相机将以他们的固件非常喜欢的任何格式提供图像数据,无论是开发人员可能想到的任何二进制流。相机驱动程序的工作是将二进制数据转换为 V4L 可以理解的内容,可以是 YUV 4:2:2,但不一定如此。

现在,“你可以在屏幕上显示”是相反的:显卡采用各种图像格式,由驱动程序定义这些格式,并为 X11 和试图显示内容的应用程序提供 API。

显示驱动程序直接支持哪种格式取决于设备和驱动程序。对于嵌入式 GPU,有时甚至可以说“嘿,这是一个 MPEG2 流,在这个和那个矩形中显示”,然后让芯片进行解码、渲染和显示。但是,通常情况下,您只需获得一个您希望在其中显示视频的帧,然后写入应该由软件显示的像素。

现在,通常计算机图形是基于 RGB 的,但许多驱动程序/GPU 也支持一些 YUV 格式。由于历史原因,应用程序可能会使用许多不同的接口来绘制缓冲区——无论是经典的 X11 缓冲区、DRI、opengl 加速访问、opengl 纹理访问、XVideo、供应商特定扩展(VDPAU 等),或者,这对于嵌入式设备来说很典型,只是映射到显示器的内存范围,可以选择性地在屏幕上显示。

于 2015-08-31T13:19:02.600 回答