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/AM5728:VPE 交叉点问题

Guru**** 2933120 points

Other Parts Discussed in Thread: TVP5158

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/666961/linux-am5728-vpe-interlace-issue

器件型号:AM5728
主题中讨论的其他器件:TVP5158

工具/软件:Linux

您好!

在我的旧主题中: https://e2e.ti.com/support/arm/sitara_arm/f/791/t/660340#pi316653=1 

我们的板是从 TVP5158捕获的 PAL (576i)。我们需要 VPE 进行交叉连接、以便我们可以运行自己的算法。

我正在使用 omapdrmtest 中的 captuprepedisplay 演示。

我发现 VPE 输出 A buf (V4L2 dqbuf) 和显示 buf 之间几乎没有时间。

Blow 是我在 Capturrevedisplay 演示中调试的内容:  

索引= VPE_OUTPUT (VPE);

testbuf = VPE->disp_bufs[index];  //在结构缓冲区中添加一个 cmem buf, 尝试将 cmem buf 传输到我们的算法(OpenCV)

usleep(2000);   //如果此延迟超过2ms。有时它将显示原始图像(隔行)。

display_buffer (VPE、index);

我尝试使用延迟来替换算法。我发现如果延迟超过大约2ms、"去花边"将不稳定。

这是由硬件功能造成的吗?

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

    您在这里使用的是 PSDK 版本?

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

    您好!

    有人可以帮助我们吗?

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

    您好!

    您是否可以尝试使用-fps 选项。 当前、由于参数数量是固定的、因此未为 capturrevpedisplay 启用–fps、但您可以在主函数中更改以尊重用户的 fps 选项。
    您可以根据您的要求在源代码中硬编码 fps、也可以修改参数列表以解释–fps 选项。
    您可以参考其他应用、如 viddec3test、filevpedisplay。

    BR
    玛格丽塔

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

    您好!
    我已经完成了将--fps 添加到 capturrevpedisplay demo 中的操作:

    if (argc!= 11){
    printf (
    "使用情况: "
    " "
    " -s : \n");

    //返回1;

    对吗?

    如果是、我应该配置该参数的内容是什么?

    如果我将 fps 配置为25 (PAL),它将显示交叉视频?

    显示稳定、超过60。

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

    您好!

    接下来该怎么做?

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

    很抱歉、我是 ooo、因为我的延迟。
    这似乎是正确的。 请确保尊重–fps 选项、例如–fps 10、您会看到播放速度缓慢。

    BR
    玛格丽塔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    感谢您的回复
    不幸的是、当我将-fps 配置为10时、我得到了一个隔行数据流。(原始 src 代码未更改、-fps 除外)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    请 将参数中的隔行字段设置为2。

    BR
    玛格丽塔

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

    您好!

    感谢您的回复。

    Blow 是我使用的命令:

    /capturrevpedisplay 704 288 yuyv 704 576 bgr24 2 3 s 31:1920x1080 -fps 25

    我的图片不正确:

    因此、我使用控制 C 停止该应用程序、系统崩溃。

    [653.283060] CPU:1 PID:1150 Comm:capturrevpedispl 被污染:G W O 4.9.59-ga75d8e9305 #2
    [653.292055]硬件名称:通用 DRA74X (平展器件树)
    [653.298172]回溯:
    [653.300644][ ](dump_backtrace)从[ ](show_stack+0x18/0x1c)
    [653.308248] r7:00000009 R6:600e0093 R5:00000000 R4:c1022668
    [653.313935][ ](show_stack)从[ ](dump_stack+0x8c/0xa0)
    [653.321191][ ](dump_stack)从[ ](_warn+0xec/0x104)
    [653.328184] r7:00000009 r6:c0bf902c r5:00000000 r4:00000000
    [653.333869][ ](__warn)从[ ](WARN_RASPEK_NULL_0x28/0x30)
    [653.341473] R9:ed141350 R8:00000007 r7:d54422c8 R6:d1f3fa00 R5:00000007 R4:200e0013
    [653.349252][ ](warn_slowpath_null)、来自[ ](Vb2_buffer_done + 0x160/0x184)
    [653.357825][ ](vb2_buffer_done)、来自[ ](VPE_RETURE_ALL_BUFFER+0x154/0x1c4 [ti_VPE])
    [653.367522] R9:ed141350 R8:a00e0013 r7:00000000 R6:d0711600 R5:00000007 R4:200e0013
    [653.375311] ](vpe_return_all_buffers [ti_vpe])、来自[ ](VPE_STOP_STREGUSE+0x44/0x48 [ti_VPE])
    [653.385879] R9:ed141350 R8:00000000 r7:d54422c8 R6:ed549810 R5:d54422c8 R4:d0711600
    [653.393665][ ](VPE_STOP_STREGUSK [ti_VPE])、来自[ ](__B2_queue_cancel+0x30/0x188)
    [653.403185] r7:d54422c8 r6:ed549bac R5:d5442304 r4:d54422c8
    [653.408872][ ](_vb2_queue_cancel)从[ ](vb2_core_queue_release+0x20/0x40)
    [653.417871] R9:ed141350 R8:00000000 r7:ee8f5710 R6:ed549bac R5:d5442304 R4:d54422c8
    [653.425650][ ](vb2_core_queue_release)从[ ](vb2_queue_release+0x10/0x14)
    [653.434559] R5:ed549810 R4:d5442000
    [653.438154][ ](vb2_queue_release)从[ ](v4l2_M2M_ctx_release+0x24/0x30)
    [653.446897][ ](v4l2_M2M_ctx_release)从[ ](VPE_RELEAS+0x74/b0 [ti_VPE])
    [653.455892] R5:ed549810 R4:d0711600
    [653.459490][ ](VPE_RELEASE [ti_VPE])、来自[ ](v4l2_release+0x40/0x7c)
    [653.467788] r7:ee8f5710 r6:eccb3880 r5:ed549868 r4:dfbce40
    [653.473477][ ](v4l2_release)从[ ](_fput + 0x8c/0x1dc)
    [653.480640] R5:ed141350 R4:dfbce40
    [653.484233][ ](__fput)从[ ](___fput + 0x10/0x14)
    [653.490963] R10:cf0bc504 R9:cf0a857c R8:dfbce300 r7:cf0b0640 R6:cf0b0b20 R5:c10527e4
    [653.498825] R4:cf0b0b04
    [653.501372][ ](___fput)、来自[ ](task_work 运行+0xc4/0xe4)
    [653.508716][ ](task_work 运行)从[ ](do_exit+0x318/0x9f0)
    [653.516145] R9:cf0a857c R8:c1003050 r7:ee8a7e40 R6:ffe000 R5:cf0b0b1c R4:cf0b0640
    [653.52394][ ](do _exit)从[ ](do_group_exit+0x48/0xc4)
    [653.531175] r7:ee8a7edc
    [653.533722][ ](do _group_exit)从[ ](GET_SIGNAL +0x22c/0x5b4)
    [653.541411] r7:ee8a7edc R6:00418004 R5:ee8a6000 R4:08430000
    [653.547097][ ](get_signal)从[ ](do_signal +0x6c/0x3c0)
    [653.554352] R10:00000000 R9:ee8a6000 R8:b512b116 r7:fffe00 R6:ee8a7ec8 R5:b512b114
    [653.562212] R4:ee8a7fb0
    [653.564758][ ](DO 信号)从[ ](do_work _挂起+0xa8/0xc0)
    [653.572351] R10:00000000 R9:ee8a6000 R8:c0207d84 r7:00000036 R6:ee8a7fb0 R5:c0207d84
    [653.580222] R4:ee8a6000
    [653.582770][ ](Do_Work_Pending)、来自[ ](SLOW_work 挂起+ 0xc/0x20)
    [653.590983] r7:00000036 R6:00000004 R5:bea0da58 R4:000a94c8
    [653.596665]--[结束线迹 a6872446aa038c5d ]--

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Margarita
    您的意思是、如果我们想将50个字段设置为25帧(而不是50帧)、我只需要设置"capturrevpedisplay 704 288 yuyv 704 576 bgr24 2 3 s 31:1920x108"
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您现在可以尝试设置-fps 50吗? 这是否显示正确的结果?

    BR
    玛格丽塔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Margarita
    我尝试的命令是:capturrevpedisplay 704 288 yuyv 704 576 yuv 2 3 -s 31:1920x1080 (结果如上)
    我还尝试了显示相同图片的-fps 50。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我想知道 gstreamer 的行为是什么?
    您试过吗?

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

    您好、Margarita

    首先、我尝试:

    gst-launch-1.0 v4l2src device=/dev/video1 num-buffers=1000 io-mode=4! 'video/x-raw、format=(string) YUY2、width=(int) 704、height=(int) 288'! VPE num-input-buffers=8! 排队! 陆上接收机

    它工作正常、这意味着 v4l2src 正常。

    然后:

    gst-launch-1.0 v4l2src device=/dev/video1 num-buffers=1000 io-mode=4! 'video/x-raw、format=(string) YUY2、width=(int) 704、height=(int) 288、 framerate=(fraction) 50/1、 隔行模式=隔行! VPE! 'video/x-raw、format=(string) YUY2、width=(int) 704、height=(int) 576、framerate=(fraction) 25/1、 隔行模式=渐进的! 排队! 陆上接收机

    管道处于活动状态,不需要 PREROLL...
    错误:来自元素/GstPipeline:流水 线0/GstV4l2Src:v4l2src0:内部数据流错误。

    因此,我尝试使用:

    gst-launch-1.0 v4l2src device=/dev/video1 num-buffers=500 io-mode=4! 'video/x-raw、format=(string) YUY2、width=(int) 704、height=(int) 288'! VPE! 'video/x-raw、format=(string) NV12、width=(int) 704、height=(int) 576、framerate=(fraction) 25/1、 隔行模式=渐进的! 排队! ducatimpeg4enc bitrate = 6000! 排队! 太棒了! 真棒! 文件链接位置= x.mp4

    输出如下: /cfs-file/__key/communityserver-discussions-components-files/791/6710.x.mp4

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

    我看到这里也在讨论这个问题:
    e2e.ti.com/.../660340
    请勿针对同一问题打开两个线程。
    我要关闭这个。

    BR
    玛格丽塔