基于 EM2860 的视频转换器捕获损坏的帧(如何调试?)

基于 EM2860 的视频转换器捕获损坏的帧(如何调试?)

我设计了自己的模拟视频到 USB 转换器。此转换器基于 TI TVP5150AM 和 Empia EM2860。简而言之,转换器的工作原理如下图所示。

         +---------+ ITU-R  +--------+
Analog   |         | BT.656 |        |
Video +--+ TVP5150 +--------+ EM2860 +---+  USB
         |         |        |        |
         +---------+        +--------+

由于我使用的是内核版本为 4.4 的 Linux mint,因此已包含两种芯片的驱动程序。好消息是硬件已被识别,我可以从中获取数据。然而,数据并不像预期的那样。

我放入了一张模拟测试图像。我能捕捉到的帧如下:原始捕获帧

我用来捕获这些原始帧的命令是:

$ ffmpeg -y -i /dev/video0 -frames:v:0 100 -c:v:0 ppm frame%03d.ppm

(请注意,我只需打开设备即可获得相同类型的帧mplayer。此命令仅用于捕获单独的帧)

问题是我真的不知道如何调试这个问题。看起来数据正在进入,但以某种方式被破坏了。

我已经弄清楚了以下事情:

  • 硬件似乎运行良好。TVP5150 由驱动程序按预期配置。ITU-R BT.656 接口的信号非常好。在早期的硬件版本中,我遇到了此接口反射问题。当时没有捕获任何帧。
  • mplayer丢掉很多帧。ffmpeg表示有很多重复帧。两者的比例大致相同(4/5 的帧被丢掉或表示为重复)

有人可以指出我调试这个问题的方向吗?

编辑1:

看起来 TVP5150 的设置不正确。我发现一个寄存器设置使我能够获得颜色:带有颜色的原始捕获帧

编辑2:

我必须将驱动程序明确设置为 NTSC 并使用非常奇怪的分辨率 (640x320),但现在可以以正确的方式捕获帧。

相关内容