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/TMS320DM368:从相机 OV5640捕获720p-30 YUV422。

Guru**** 2551110 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/596939/linux-tms320dm368-capture-720p-30-yuv422-from-camera-ov5640

器件型号:TMS320DM368

工具/软件:Linux

你好!  

我正在尝试使用 H264编解码器的后续压缩在720p-30 (YUV 422)模式下从摄像头捕获视频帧、但帧捕获发生在一半时间的频率、即15Hz。

我的设置:

Camera (OV5640 720p-30 YUV 422)--> LEOPARDBOARD (DM368 ARM 432 MHz DDR:340 MHz)--> Linux DVSDK 4.02.00.06-->程序捕获编码(来自 DVSDK)显示视频输出关闭。

编码日志:

ARM 负载:2%视频 fps:15fps 演示:编码显示:720p 60Hz 视频编解码器:H.264 HP 分辨率:不适用音频编解码器:不适用采样频率:不适用 
一 ARM 负载:0%视频 fps:15fps 演示:编码显示:720p 60Hz 视频编解码器:H.264 HP 分辨率:不适用音频编解码器:不适用 采样频率:不适用 ARM 负载:0%视频 fps:15fps 演示:编码显示:720p 60Hz 视频编解码器:H.264 HP 分辨率:不适用音频编解码器:不适用采样频率:不适用



在 Capture.c 文件(dmain_2_20_00_15)中: 

/*在 DM365中,捕获驱动程序不支持720p-30,但支持
LSP 可选择将捕获速率降低至一半。 因此、当用户使用时
设置为720p-30、我们将其视为720p-60、但我们设置 LSP 捕获
一半。 *
/*注:请注意支持720p-30*/的 DM368摄像机输入

我尝试强制禁用 halfRateCapture = true;

在状态半字中、RateCapture = false;

因此,不再捕获任何帧.....

编码日志:

ARM 负载:3%视频 fps:0fps 演示:编码显示:720p 60Hz 视频编解码器:H.264 HP 分辨率:不适用音频编解码器:不适用采样频率:不适用 
三、会议的报告 ARM 负载:0%视频 fps:0fps 演示:编码显示:720p 60Hz 视频编解码器:H.264 HP 分辨率:不适用音频编解码器:不适用 采样频率:不适用 ARM 负载:0%视频 fps:0fps 演示:编码显示:720p 60Hz 视频编解码器:H.264 HP 分辨率:不适用音频编解码器:不适用采样频率:不适用


我尝试应用有关优化 DM36x 的建议:

MSTPRI0:0x00550011 (默认值)至0x00440022或0x00440011或0x00220044
DMA_RZA:0x00 (默认值)至0x20或0x40或0x80或0x90

结果与接收到的0帧相同。

我尝试将摄像机的帧速率降低到4-10Hz、结果是捕获的帧数相同。

在不丢失每秒帧的情况下,需要采取哪些措施来捕获帧?
告诉我如何解决此问题?
我出了什么问题?  问题出在哪呢?

我的日志 VPFE 寄存器。

e2e.ti.com/.../11.log




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

    1.您是否尝试将帧速率从 OV 传感器端本身降低到15fps 并恢复标志更改? 在这种情况下、您不会丢失帧、但 fps 将为15。
    2.我不确定基于 v4l2的框架中管道设置的方式/位置。 让我检查一下它,但我想说的是 ISIF_IN->IPEIF->RESZ->Encoder->DDR 流水线,您可以按照它来代替 ISIF_IN->DDR->IPIPE->RSZ->Encoder->DDR 流(尽管我不确定您现在关注的是什么,因为没有日志)。 我没有看到完整的寄存器转储 ISIF 和 IPEIF 初始寄存器丢失。 希望您在流水线运行时进行转储。

    您应该能够使用 DM368 (硬件最高性能)实现1080@30fps、尽管我们已经看到这种情况使用的是 IPNC RDK 封装而不是 DVSDK 封装。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好!

    我将摄像头的帧速率从30Hz 降低到15Hz (甚至从15Hz 降低到7Hz)、结果是相同的。

    如果  halfRateCapture = true、则结果帧捕捉/ 2 -> 15/2 = 7、捕捉正常(存在中断 VPFE)

    如果 halRateCapture = false 、则 结果帧捕捉/ 1 -> 15/1 = 0、无捕捉(无中断 VPFE)。

    输出捕捉并不取决于帧速率、而是取决于 HalfRateCapture 标志的状态。

    我的应用程序 capture.c +转储寄存器 ISIF、IPIPEIF、IPIPE、RSZ 。

    e2e.ti.com/.../Capture.ce2e.ti.com/.../15hz_5F00_to_5F00_7hz.loge2e.ti.com/.../15hz_5F00_to_5F00_0hz.log

     

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

    它看起来像正在使用 ISIF->DDR-IPE->RSZ->DDR->encode。 可以尝试 ISIF->IPEIF->RSZ->DDR->encode。 7Hz 和 halfRateCapture = false 会发生什么情况,它是否起作用?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好!

    我将解决此问题:

    文件:vPSS.c

    /* AEW、RSZ_INT_DMA */

    isp5_write ((isp5_read (0x14)| 0x1f0a0f1f)、0x14);  

    INTSEL3为 VPSS_IN[3]= 0x0F 选择中断-此值已保留!!!??????

    修复:

    isp5_write ((isp5_read (0x14)| 0x1f0a0e1f)、0x14);// 设置 中断= RSZ_INT_LAST_PIX (0x0E)

     

    测试正常(DM365和 DM368)。

    现在,帧将按应有的方式捕获!

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

    恭喜。 感谢您发布您尝试过的解决方案。