This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/AM4379:视频捕获问题

Guru**** 2603695 points
Other Parts Discussed in Thread: AM4379

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/637218/linux-am4379-video-capture-issue

器件型号:AM4379

工具/软件:Linux

我的客户设计了一个定制板、它使用 AM4379处理器从 Techwell TW9906视频解码器捕获视频。

TW9906有8条数据线路通过 CAM_7连接到 CAM_0、解码器的 PCLK、VSYNC 和 HSYNC 也连接到 AM4379上各自的引脚。 在此设计中、解码器的 I2C 信号路由到 AM4379的 I2C2_SDA 和 I2C2_SCL 引脚。

我已根据“Linux Core VPFE 用户指南”和“Linux Core DSS 用户指南”的“内核配置选项”部分中包含的信息配置内核。

在 DTB 中、我将 ti、AM437X-VPFE-interface 设置为等于<1>;在驱动程序中、我将以下格式设置默认为:

format->width = 640;
格式->高度= 480;
format->code = media_BUS_FMT_UYVY8_2X8;
format->field = V4L2_field_none;
format->colorspace = V4L2_colorspace_SMPTE170M;

使用这些设置,我能够以黑白方式显示640x480图像,但其他每行都丢失了。

我想显示每一行、并以全彩色显示图像。

如果我更改了格式->field = V4L2_field_interlansced;我将看到一个空白屏幕。

如果我更改格式->code = media_BUS_FMT_YUYV8_2X8,图像将以紫色和绿色阴影显示。

如何配置 DTB 和驱动程序以捕获 ITU-R 656兼容 YCbCr (4:2:2)隔行扫描视频数据并将其显示为完整的640x480全彩色图像?

Gary

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。

    请发布您使用的 Linux 版本。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Biser、

    Linux 版本为:4.9.40

    Gary
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您是否在解码器驱动程序中添加了支持  

    [引用 user="Gary Teravskis"]如何配置 DTB 和驱动程序以捕获 ITU-R 656兼容 YCbCr (4:2:2)隔行扫描视频数据并将其显示为完整的640x480全彩色图像?

    您是否希望以 ITU-601或 ITU-R 656格式进行采集? 后面是嵌入式同步格式、不需要 HSYNC、VSYNC 信号。 此外、PLSDK 4.1中现有的 TW9906驱动程序不支持 DT 或 v4l2 subdev 异步注册框架。 您自己是否添加了这些支持?

    要使用 ITU-601或基本离散同步,对于原始接口,“ti、AM437X-VPFE-interface”应设置为0。 当将“ti、AM437X-VPFE-interface”设置为1时,它期望视频流使用嵌入式同步(即 ITU-656)。

    子设备驱动程序必须正确报告使用的字段类型为 V4L2_FIELD_NONE、V4L2_FIELD_隔 行扫描或 V4L2_FIELD_SEQ_TB。

    另一个需要考虑的问题是数据引脚的连接方式。 如果 TW9006同时支持8位和10位输出模式、并且如果它被设置为8位模式、那么它实际上将在引脚2-9而非0-7上输出数据。 如果连接不正确(连接针脚0-7而不是2-9),则可能会出现色彩退化。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Manisha、

    我已为 ITU-610配置了 TW9906器件、并已修改解码器驱动程序以在 v4l2框架中注册。

    当我设置 ti、AM437X-VPFE-interface = 0时、我得到一个640x480的图像、上半部分为纯绿色、下半部分以紫色和绿色阴影显示摄像头视频。

    如果我将字段类型设置为除 V4L2_FIELD_NONE 之外的任何内容、则 LCD 上不会显示任何内容。

    如果我设置 ti、AM437X-VPFE-interface = 1且 format->field = V4L2_field_none;则液晶屏上会显示640x480的黑白视频图像、每隔一行都丢失。

    我正在尝试调和您的建议,将八个 tw9906输出引脚连接到引脚2-9,而不是《AM437x ARM Cortex-A9处理器技术参考手册》中所述的建议。 2146页14.3.1.1节的表14-5显示了连接到 VPFE 信号引脚0-7的八个器件输出引脚。

    请帮助我更好地理解这一点。

    Gary
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Techwell 解码器和 VIP 都应配置为接收相同的帧类型。 请检查 解码器报告的字段类型- V4L2_FIELD_NONE、V4L2_FIELD_隔 行或 V4L2_FIELD_SEQ_TBI。 VIP 驱动程序未编程为以交错帧格式捕获交错数据。 您需要对射野的宽度和高度进行编程、而不是对帧进行编程。

    [引用 user="Gary Teravskus"]我正在尝试协调您的建议,将八个 tw9906输出引脚连接到引脚2-9,而不是《AM437x ARM Cortex-A9处理器技术参考手册》中所述的内容。 2146页14.3.1.1节的表14-5显示了连接到 VPFE 信号引脚0-7的八个器件输出引脚。[/QUERP]

    我打算将 t tw9906输出引脚2-9连接到 VPFE 引脚0-7。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Manisha、

    我通过在内核源代码构建中禁用 OMAP DRM 驱动程序并启用 OMAP FB 驱动程序来解决交叉连接问题。

    借助 TW9906视频驱动程序中的<<ti,AM437X-VPFE-interface = 3>>和<<format->field = V4L2_field_interlaved >>,我现在能够在显示屏上显示稳定的640x480黑白视频图像。 我对视频图像质量非常满意、除了黑白图像。 我的客户端需要全彩色图像。

    以下是我在驱动程序中使用的设置:

    format->code = media_BUS_FMT_YUYV8_2X8;
    format->field = V4L2_field_interl隔 行;
    format->colorspace = V4L2_colorspace_JPEG;

    如何设置驱动程序、以便<< >>显示全彩色图像?

    感谢你的帮助。

    Gary
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、看起来您说的问题是显示屏侧、而不是捕捉侧。 请澄清您的要求-您是否想要捕获隔行输入、去除隔行输入、然后在监视器上显示逐行(逐行)内容? 因此、对于 VGA 输出、这意味着捕获640x240分辨率字段、将反交错反交错到640x480分辨率、然后在640x480逐行监视器上显示。 请澄清这是否是正确的要求。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是正确的;但是、我发现了以下解决方案:

    1) 1)在 DTB 中设置<< ti、AM437X-VPFE-interface = 3 >>

    2)忽略“Linux Core DSS 用户指南”的“内核配置选项”部分,并在内核配置中禁用 OMAP DRM 驱动程序。 而是在内核配置和参考:(processors.wiki.ti.com/.../Dual_Frame_Buffer_on_OMAP35x)中启用 OMAP FB 内核驱动 程序、以正确设置新帧缓冲区的 uboot bootargs。

    3)在修改的 Techwell TW9906视频解码器驱动程序集中:
    format->code = media_BUS_FMT_UYVY8_2X8;
    format->field = V4L2_field_interl隔 行;
    format->colorspace = V4L2_colorspace_SMPTE170M;

    4) 4)使用以下 gstreamer 流水线:
    <<</bin/gst-launch-0.10 -EV v4l2src device=/dev/video0! VIDEO/x-RAWE-YUV、FORMAT=\(fourcc\) UYVY! 超赞的色彩空间! fbdevsink 设备=/dev/fb0

    现在、我能够在显示屏上显示稳定的640x480逐行全彩色视频图像。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果格式字段设置为隔行(format->field = V4L2_field_隔 行;)、并且 TW9906解码器正在流媒体隔行视频、并且 gstreamer 流水线中没有引擎进行隔行处理、则会出现错误。 这是因为 DSS 驱动程序不支持隔行显示、您会看到良好的输出。

    我想、如果您将 TW9906解码器设置为流式传输视频或在 gstreamer 流水线中插入去隔行插件、您应该可以使用 DRM 驱动程序看到良好的输出。 这是我们建议使用的驱动程序。 fbdev 驱动程序是 OMAP DRM 驱动程序中的仿真、功能非常有限、我们不支持它。