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:Ducatijpegdec GStreamer 插件添加了8个额外的解码图像行、产生了 VPE 的不兼容问题

Guru**** 2560800 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/610113/linux-am5728-ducatijpegdec-gstreamer-plugin-adds-8-extra-lines-of-decoded-image-produces-incompatibility-issue-with-vpe

器件型号:AM5728

工具/软件:Linux

您好!

我使用 ducatijpegdec Gstreamer 插件已有一段时间、我注意到我认为 VPE 驱动程序存在兼容性问题。  解码1080p 图像(jpeg)时、解码器将经常添加8行额外的图像、其中 GStreamer 和 VPE 驱动程序将其识别为1088行图像。  下面是 GStreamer 中的 CAP 协商过程、以及来自 VPE 驱动程序的一些用于以下 GStreamer 管道的内核调试消息:

发件人管道:  
GST-LAUNCH-1.0视频测试 src! VIDEO/x-RAW、FORMAT=I420、width=1920、height=1080、framerate=30/1! jpegenc! rtpjpegpay MTU = 1472! udpsink host=192.168.1.233多播-iface=enp0s31f6 port=1234

接收器管道(AM572x EVM):
gs-launch-1.0 udpsrc multicast-iface=eth0 port=1234! application/x-rtp、encoding-name=JPEG、PAYLOAD=26! 很棒的酒店! jpegparse! 极好的体验! VPE! VIDEO/x-RAW、FORMAT=NV12、width=1920、height=1080! 应用

GStreamer 电容协商:
/GstPipeline0/GstCapsFilter:capsfilter0.GstPad:src:cap ="application/x-rtp\、\ coding-name\=(string\) JPEG\、\ PAYLOAD\=(int\) 26\、\ media\=(string\) video\、\时钟速率\= 90000"(int)

/GstPipeline0/GstRtpJPEGDepay:rtpjpegdepay0.GstPad:SINK:CAP="application/x-rtp\、\编码名称\=(字符串\) JPEG\、\ PAYLOAD\\=(int\) 26\、\媒体\\\(字符串\)视频、\(字符串\) 90000时钟速率)

(GST-LAUNCH-1.0:1594):Gstreamer-warning **:./../gstreamer-1.6.3/gst/gstpad.c:4943:STORE_STACK_EVENT: 粘滞事件错误排序、在"大写"之前被"封装"
/GstPipeline0/GstRtpJPEGDepay:rtpjppegdepay0.GstPad:src:cap ="image/jpeg、\ framerate\=(frame\) 0/1\、\ width\=(int\) 1920\、\ height\=(int\) 108"

(GST-LAUNCH-1.0:1594):Gstreamer-warning **:./../gstreamer-1.6.3/gst/gstpad.c:4943:STORE_STACK_EVENT: 粘滞事件错误排序、在"大写"之前被"封装"
/GstPipeline0/GstJpegParse:jpegparse0.GstPad:SINK:SINK:CAP="image/jpeg\、\ framerate\=(frame\) 0/1\、\ width\=(int\) 1920\、\ height\=(int\) 108"
/GstPipeline0/GstJpegParse:jpegparse0.GstPad:src:cap ="image/jpeg\、\已解析\=(布尔\) true、\格式\=(string \) I420\、\ width\=(int\)\、\高度\=(1020x) frate\(int\)/framex 1) 102020
/GstPipeline0/GstDucatiJpegDec:ducatijpegdec0.GstPad:src:cap ="VIDEO/x-ray\、\ format\=(string\) NV12\、\ width\=(int\) 1920\、\ height\=(int\) 1088\、\、\(try\) begray\(try\) m\(try\) mes\(try\) m\(try\)布尔值1)
/GstPipeline0/GstVpe:vpe0.GstPad:src:cap ="VIDEO/x-RAW\、\ format\=(string\) NV12\、\ width\=(int\) 1920\、\ height\=(int\) 1080/\、\ framerate\=(frame\) 0/1"
/GstPipeline0/GstCapsFilter:capsfilter1.GstPad:src:cap ="video/x-raw、\ format\=(string\) NV12\、\ width\=(int\) 1920\、\ height\=(int\) 1080/\、\ framerate\=(string\) 1/frapy
/GstPipeline0/GstAppSink:appsink.GstPad:灌电流:cap ="VIDEO/x-RAW\、\ format\=(string\) NV12\、\ width\=(int\) 1920\、\ height\=(int\) 1080/\、\ framerate\=(string\) 1/frame\
/GstPipeline0/GstCapsFilter:capsfilter1.GstPad:SINK:SINK:CAPs ="VIDEO/x-RAW\、\ format\=(string\) NV12\、\ width\=(int\) 1920\、\ height\=(int\) 1080/\、\ framerate\=(string\) 1/fraper\
/GstPipeline0/GstVpe:vpe0.GstPad:SINK:SINK:SINK:CAPs ="VIDEO/x-RAW\、\ FORMAT\=(STRING\) NV12\、\ width\=(int\) 1920\、\ height\=(int\) 1088\、\、\ framerate\\(frame\=(frame\) m\(try\) m\(try\) m\(try\) 1) me/boolean
/GstPipeline0/GstDucatiJpegDec:ducatijpegdec0.GstPad:灌电流:cap ="image/jpeg、\\=(已解析\) true\、\格式\\(string \) I420\、\宽\=\(int\) 1920\、\高度= 1) 1080 (布尔值/帧速率1)
/GstPipeline0/GstDucatiJpegDec:ducatijpegdec0.GstPad:src:cap ="VIDEO/x-ray\、\ format\=(string\) NV12\、\ width\=(int\) 1920\、\ height\=(int\) 1088\、\、\(try\) me-ref1 (try\) mes\(try\(try\) mes\(try\) mes\(try\) begray\(try\) m\
/GstPipeline0/GstVpe:vpe0.GstPad:src:cap ="VIDEO/x-RAW\、\ format\=(string\) NV12\、\ width\=(int\) 1920\、\ height\=(int\) 1080/\、\ framerate\=(frame\) 0/1"
/GstPipeline0/GstCapsFilter:capsfilter1.GstPad:SINK:SINK:CAPs ="VIDEO/x-RAW\、\ format\=(string\) NV12\、\ width\=(int\) 1920\、\ height\=(int\) 1080/\、\ framerate\=(string\) 1/fraper\
/GstPipeline0/GstVpe:vpe0.GstPad:SINK:SINK:SINK:CAPS ="VIDEO/x-RAW\、\ format\=(string\) NV12\、\ width\=(int\) 1920\、\ height\=(int\) 1088\、\、帧速率\=(frame\) 1 (trape\)、try\(tramp1) me-mref)、trbole1 m\
/GstPipeline0/GstVpe:vpe0.GstPad:src:cap ="VIDEO/x-RAW\、\ format\=(string\) NV12\、\ width\=(int\) 1920\、\ height\=(int\) 1080/\、\ framerate\=(frame\) 0/1"
/GstPipeline0/GstCapsFilter:capsfilter1.GstPad:SINK:SINK:CAPs ="VIDEO/x-RAW\、\ format\=(string\) NV12\、\ width\=(int\) 1920\、\ height\=(int\) 1080/\、\ framerate\=(string\) 1/fraper\

VPE 内核调试消息

[5451.226486] VPE 489d0000.VPE:设置类型10的格式、WxH:1920x1088、fmt:842094158 BPL_y 1920
[5451.226497] VPE 489d0000.VPE:BPL_UV 1920
[5451.226512] VPE 489d0000.VPE:HS 配置:src_w = 1920、dst_w = 1920、抽取=无、LIN_ACC_inc = 01000000
[5451.226523] VPE 489d0000.VPE:vs config (Poly):src_h = 1088、dst_h = 1080、ROW_ACC_inc = 000101e5
[5451.226547] VPE 489d0000.VPE:设置类型9的格式、WxH:1920x1080、fmt:842094158 BPL_y 1920
[5451.226556] VPE 489d0000.VPE:BPL_UV 1920
[5451.226606] VPE 489d0000.VPE:获取大小为2088960的32个缓冲器
[5451.226615] VPE 489d0000.VPE:和1044480
[5451.227248] VPE 489d0000.VPE:获取大小为2073600的6个缓冲器
[5451.227259] VPE 489d0000.VPE:和1036800

在尝试处理 VPE 驱动器中的这些缓冲器时、接收器管道会立即分段故障。  根据 VPE 调整发送器管道以输出为1280*720的说明,可以解决此问题。  我猜这是因为 VPE 无法接受大于1080p 的图像、这符合 AM572x 技术参考手册(SPRUHZ64第10.3.4.1节、第2364页)中列出的规格。

这是接收器 GStreamer 管道的调试日志。
e2e.ti.com/.../5751.jul13_5F00_nv12_5F00_appsink1080.log

需要注意 的是、这是 PSDK 03.03版本中使用的提交:e797c1d832cc8ee1dd66d1683991cb6d7316ed63。

编辑1:


我一直在浏览 GS-PLUGP-Ducati repo、我认为创建1088p 映像的原因是与 IVA-HD 通信所需的缓冲器对齐。  1080不能被16或32分频、缓冲器大小以及 GStreamer 电容器由 ALIGN2宏协商。  1088可被16和32除、1920也是如此。  

/*将 x 与2^n 的下一个最高倍数对齐*/
#define ALIGN2 (x、n)((((x)+((1 <<(n)- 1)))&~((1 <<(n)- 1)))) 

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

    您好!

    在日志中、解码器输出(src)上的高度似乎为1088、因此在 VPE 的接收端(输入)上、您也将具有1088。
    您可以检查此文件:
    PSDK/board-support/Linux.../drivers/media/platform/ti-vpe/vpdma.h 以了解该限制。

    BR
    玛格丽塔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、这绝对是问题的根源。 遗憾的是、您提到的头文件未明确引用最大输入大小、但已记录 VPE 驱动程序在图像高于1920x1080时崩溃(在以下链接中为1928x1080)

    e2e.ti.com/.../1751584

    由于 GStreamer 将图像的大小记录到解码器接收垫中、即1920x1080和 src 垫上的1088、因此解码器必须以某种方式添加8条额外的线。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、只是想知道 VPE 或 Ducati 代码中是否可以执行任何操作来快速解决此问题、因为这是我们系统的一个重要阻止因素。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您能否尝试如下流水线:
    gs-launch-1.0 udpsrc multicast-iface=eth0 port=1234! application/x-rtp、encoding-name=JPEG、PAYLOAD=26! 很棒的酒店! jpegparse! 极好的体验! 视频! VIDEO/x-RAW、FORMAT=NV12、width=1920、height=1080! 应用

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

    您还可以尝试:

    gs-launch-1.0 udpsrc multicast-iface=eth0 port=1234! application/x-rtp、encoding-name=JPEG、PAYLOAD=26! 很棒的酒店! jpegparse! 极好的地方! 应用

    gs-launch-1.0 udpsrc multicast-iface=eth0 port=1234! application/x-rtp、encoding-name=JPEG、PAYLOAD=26! 很棒的酒店! jpegparse! 极好的地方! 'VIDEO/x-RAW、FORMAT=NV12、width=1920、height=1080'! 应用

    BR
    玛格丽塔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    流水线1:正常工作、但此处需要注意的是:Hari (VPE 插件开发人员)和我在 VPE 插件上创建了一个版本、允许其输出 RGB、遗憾的是、由于与 Qt5的兼容性问题、我需要 RGB。 (除非您知道在 Qt5中显示来自 gstreamer 的 NV12格式图像的方法、我不知道该方法)。

    流水线2:不会崩溃、但是除非指定了输出大小或格式、ducatijpegdecvpe 实际上会触发 VPE "直通模式"、并且不使用 VPE。 如果在 ducatijpegdecvpe 之后的电容器中指定了大小、VPE 驱动程序将激活、接收1088p 映像并崩溃。

    流水线3:segfault、请参阅流水线2。

    所有三条管线都有1088p 图像从解码器发出。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    [引用 USER="TOM Wallis">管道1:正常工作、但此处需要注意:Hari (VPE 插件开发人员)和我在 VPE 插件上创建了一个版本、允许其输出 RGB、遗憾的是、由于与 Qt5的兼容性问题、我需要 RGB。 (除非您知道在 Qt5中显示 gstreamer 中的 NV12格式图像的方法、但我不知道该方法)。[/引述]

    不幸的是、我不知道 qt5。 您可以在 qt 论坛 https://forum.qt.io 上发布  有关 NV12显示的信息。

    您也可以检查视频转换元素。 它可以接受输入上的 nv12、将其转换为输出上的 RGB。

    希望这对您有所帮助。

    BR
    玛格丽塔

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

    您好!

    我使用最新的 PSDK 对 EVM 进行了一些测试。

    我使用此管道生成了 MJPEG 文件:

    gst-launch-1.0 videotestsrc num-buffers=100! 'video/x-raw、format=(string) NV12、width=1920、height=1080! jpegenc! jpegparse! 文件链接位置=1.MJPEG -v


    重要的电容器为绿色:

    /GstPipeline0/GstVideoTestSrc:videotestsrc0.GstPad:src:cap ="VIDEO/x-RAW\、\ format\=(string\) NV12\、\ width\=(int\) 1920\、\ height\=(int\) 1080/\、\帧速率\=(strape-dite-1)、bade-dacy= 1 (pixel 1)/pixel 比1)
    /GstPipeline0/GstCapsFilter:capsfilter0.GstPad:src:cap ="video/x-raw、\ format\=(string\) NV12\、\ width\=(int\) 1920\、\ height\=(int\) 1080/\、\ fraperate\=(strapy 1) bacity=(pixel)、const-mode = 1)/pixel 1 (pixel 1) bti-1)
    /GstPipeline0/GstJpegEnc:jpegenc0.GstPad:灌电流:cap ="VIDEO/x-RAW\、\ format\=(string\) NV12\、\ width\=(int\) 1920\、\ height\=(int\) 1080/\、\、\ frameraerate= 1) bacy= 1 (逐点/像素比例)、1 (宽边距1)
    /GstPipeline0/GstCapsFilter:capsfilter0.GstPad:SINK:SINK:CAPs ="VIDEO/x-RAW\、\ format\=(string\) NV12\、\ width\=(int\) 1920\、\ height\=(int\) 1080/\、\ frame\=(strape-1) bacy=(pixel) 1)、const-rity= 1 (pixel 1)、const-rity= 1) bti-mode、conscybess-1/pixel (pixel 1)
    /GstPipeline0/GstJpegEnc:jpegenc0.GstPad:src:cap ="image/jpeg、\ sof-marker\=(int\) 0\、\ width\=(int\) 1920\、\ height\=(int\) 1080/\、\像素纵横比= 1)/frate (比例1) 1/amerate
    /GstPipeline0/GstJpegParse:jpegparse0.GstPad:灌电流:电容="image/jpeg、\ sof-marker\=(int\) 0\、\ width\=(int\) 1920\、\ height\=(int\) 1080/\、\像素纵横比= 1 /帧速率1
    /GstPipeline0/GstJpegParse:jpegparse0.GstPad:src:cap ="image/jpeg\、\已解析\=(布尔\) true\、\格式\=(字符串\) I420\、\宽\=(int\)\、\高度\=(1020x)/frate (int\) 1) 102020、帧速率1
    /GstPipeline0/GstFileSink:filesink0.GstPad:sink:cap ="image/jpeg\、\\=(解析\) true\、\ format \=(string\) I420\、\ width\=(int\) 1920\、\ height\=(int\) 1080、borture= 1帧速率/帧速率"


    为了解码、我使用了此流水线:

    gst-launch-1.0 -v 文件 rc location=1.mJPEG! jpegparse! 极好的地方!  'video/x-raw、format=(string) NV12、width=1920、height=1080! kmsink

    以下是输出:

    正在将管道设置为正在播放...
    新时钟:GstSystemClock
    从元件"流水线0"获得 EOS。
    0:00:02.225191177之后结束执行
    正在将管道设置为暂停...
    正在将管道设置为就绪...
    正在将管道设置为 NULL ...
    正在释放管道...
    root@am57xx-EVM:~#

    下面是更详细的日志:

    /GstPipeline0/GstJpegParse:jpegparse0.GstPad:src:cap ="image/jpeg\、\已解析\=(布尔\) true\、\格式\=(字符串\) I420\、\宽\=(int\)\、\高度\=(1) 1080、帧/帧速率1
    /GstPipeline0/GstDucatiJpegdec.pe:ducatijpegdecvpe0.GstGhostPad:Sink.gstProxyPad:proxyad0:cap ="image/jpeg、\=\(frame\) true\、\format\\\\(string\) I420、protrue= 1、宽度= 1920、true/frate= 1、true/frint1、trolean
    /GstPipeline0/GstDucatiJpegdec.pe:ducatijpegdecvpe0/GstDucatiJpegdec:decer.gstPad:src:cap ="video/x-ray\、\ format\=(string\) NV12\、\ width\\\\(int\)1088 (try=)、try1 mes= 1、frate= 1 (true/trampolean)、帧速率1、帧速率= 1 (true/gr)
    /GstPipeline0/GstDucatiJpegdecVpe:ducatijpegdecvpe0/GstVpe:VPE.GstPad:src:cap ="video/x-ray\、\ format\=(string\) NV12\、\ width\=(int\) 1920\、\(height= 1) 1080/frate\(frame\) 1080)
    /GstPipeline0/GstDucatiJpegdecVpe:ducatijpegdecvpe0.GstGhostPad:src:cap ="VIDEO/x-rain\、\ format\=(string\) NV12\、\ width\=(int\) 1920\、\ height\=(int\) 1080/fraperate 1、frate 1 (frame\) 1080/1)
    /GstPipeline0/GstCapsFilter:capsfilter0.GstPad:src:cap ="video/x-raw、\ format\=(string\) NV12\、\ width\=(int\) 1920\、\ height\=(int\) 1080/\、\ framerate\=(string\) 1/frapy
    /GstPipeline0/GstKMSSink:kmssink0.GstPad:接收器:cap ="VIDEO/x-RAW\、\ format\=(string\) NV12\、\ width\=(int\) 1920\、\ height\=(int\) 1080/\、\ framerate\=(string\) 1/frapie/1\
    /GstPipeline0/GstCapsFilter:capsfilter0.GstPad:SINK:SINK:CAPs ="VIDEO/x-RAW\、\ format\=(string\) NV12\、\ width\=(int\) 1920\、\ height\=(int\) 1080/\、\(framerate\(string\) 1/fraction)
    /GstPipeline0/GstDucatiJpegdecVpe:ducatijpegdecvpe0.GstGhostPad:src.GstProxyPad:proxyad1:cap ="video/x-ray\、\ format\=(string\) NV12\、\ width\=(int\) 1080/frate= 1、frate= 1、帧速率1
    /GstPipeline0/GstDucatiJpegdecVpe:ducatijpegdecvpe0/GstVpe:VPE.GstPad:SINK:CAP="视频/x-ray\、\格式\\(string\) NV12\、\宽\=\(int\) 1920\、\、\(try\) 1088\、try=(try\) turbegere\(try\(trles\)/fere1) m\(try\(try\) m\(try\(try\) tole1) m\
    /GstPipeline0/GstDucatiJpegdec.pe:ducatijpegdecvpe0/GstDucatiJpegdec:decer.gstPad:sink:cap ="image/jpeg、\=(1920 pere)true\、\ format\\(string\) I420、gaper= 1 (true/frate)、宽度= 1、1 (1080)、trolean) true/frate
    /GstPipeline0/GstDucatiJpegdecVpe:ducatijpegdecvpe0.GstGhostPad:sink:cap ="image/jpeg、\\=(解析的\) true\、\格式\=(string \) I420\、\ width\=(int \) 1、帧高度= 1920、帧速率1
    /GstPipeline0/GstDucatiJpegdec.pe:ducatijpegdecvpe0/GstDucatiJpegdec:decer.gstPad:src:cap ="video/x-ray\、\ format\=(string\) NV12\、\ width\\\\(int)1088 (try= 1)、trapeure-m= 1 (try=)、frategray\(try\(try\)/try= 1)、frecurbegurbed\/r (try\(try\(try\)/try\(trles\)/try=)/int1)/
    /GstPipeline0/GstDucatiJpegdecVpe:ducatijpegdecvpe0/GstVpe:VPE.GstPad:src:cap ="video/x-ray\、\ format\=(string\) NV12\、\ width\=(int\) 1920\、\(height= 1) 1080/frate\(frame\) 1080)
    /GstPipeline0/GstDucatiJpegdecVpe:ducatijpegdecvpe0.GstGhostPad:src:cap ="VIDEO/x-rain\、\ format\=(string\) NV12\、\ width\=(int\) 1920\、\ height\=(int\) 1080/fraperate 1、frate 1 (frame\) 1080/1)
    /GstPipeline0/GstCapsFilter:capsfilter0.GstPad:SINK:SINK:CAPs ="VIDEO/x-RAW\、\ format\=(string\) NV12\、\ width\=(int\) 1920\、\ height\=(int\) 1080/\、\(framerate\(string\) 1/fraction)
    /GstPipeline0/GstDucatiJpegdecVpe:ducatijpegdecvpe0.GstGhostPad:src.GstProxyPad:proxyad1:cap ="video/x-ray\、\ format\=(string\) NV12\、\ width\=(int\) 1080/frate= 1、frate= 1、帧速率1
    /GstPipeline0/GstDutatiJpegdecVpe:ducatijpegdecvpe0/GstVpe:VPE.GstPad:SINK:CAP="VIDEO/x-RAW\、\ format\=(string\) NV12\、\ width\=(int\) 1920\、gaper= 1 (try1) me-ref1) mref (trampole1)、trles\(trles\(try\) me-turbegraint 1) m\(trles\(tramp1) m\(try\) mes\(try\(try\) mes\(try\) m
    /GstPipeline0/GstDucatiJpegdecVpe:ducatijpegdecvpe0/GstVpe:VPE.GstPad:src:cap ="video/x-ray\、\ format\=(string\) NV12\、\ width\=(int\) 1920\、\(height= 1) 1080/frate\(frame\) 1080)
    /GstPipeline0/GstDucatiJpegdecVpe:ducatijpegdecvpe0.GstGhostPad:src:cap ="VIDEO/x-rain\、\ format\=(string\) NV12\、\ width\=(int\) 1920\、\ height\=(int\) 1080/fraperate 1、frate 1 (frame\) 1080/1)
    /GstPipeline0/GstCapsFilter:capsfilter0.GstPad:SINK:SINK:CAPs ="VIDEO/x-RAW\、\ format\=(string\) NV12\、\ width\=(int\) 1920\、\ height\=(int\) 1080/\、\(framerate\(string\) 1/fraction)
    /GstPipeline0/GstDucatiJpegdecVpe:ducatijpegdecvpe0.GstGhostPad:src.GstProxyPad:proxyad1:cap ="video/x-ray\、\ format\=(string\) NV12\、\ width\=(int\) 1080/frate= 1、frate= 1、帧速率1

     

    我还尝试了该流水线:

    gst-launch-1.0 文件 rc location=1.mJPEG! jpegparse! 极好的体验! VPE!  'video/x-raw、format=(string) NV12、width=1920、height=1080! kmsink

    结果与上一个流水线相同。

    文件可播放。 我没有观察到任何段故障。

    BR
    玛格丽塔

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

    我已经在我的末尾尝试过视频转换,但是我遇到了这样一个问题:使用 NV12->RGB 转换时,CPU 会承受过多的压力,因此,我需要使用补丁来使 VPE 输出 RGB。  我已附加补丁。  (请注意、E2E 具有.patch 筛选器、只需将.txt 替换为.patch 即可使用)e2e.ti.com/.../4214.gst_5F00_vpe_5F00_rgb_5F00_support.txt

    这些管道在我的终端也可以工作、但在这种用例中、当 jpeg 解码器的电容器与 VPE 之后的电容器相同时、VPE 会进入直通模式。  因此、除非在 VPE 元素的大写中指定了图像尺寸变换或色彩空间变换、否则实际不使用 VPE。  

    我已附上 VPE 驱动程序的内核日志、相关部分如下:

    [1149.325353] VPE 489d0000.VPE:CSC00 00000000
    [1149.325361] VPE 489d0000.VPE:CSC01 00000000
    [1149.325370] VPE 489d0000.VPE:CSC02 00000000
    [1149.325378] VPE 489d0000.VPE:CSC03 00000000
    [1149.325386] VPE 489d0000.VPE:CSC04 00000000
    [1149.325395] VPE 489d0000.VPE:CSC05 10000000 <- Colorspace Bypass

    遗憾的是、除非存在段故障、否则不会打印图像尺寸旁路(SC 寄存器)。  不过、这里 也是 gstvpe 源代码的直通定义(对于 VPE 插件元素、ducatijpegdecpe 在代码中被视为 ducatijpegdec 和 VPE 插件、仅作为一个插件)

    self->passthrough =!(self->interlassed || self->output_width!= self->input_width || self->output_height!= self->input_height || self->output_fourcc!= self->input_fourcc);

    因此、您可以看到、如果流是 NV12、1920x1080 in 和 out、则会启用直通模式、从而关闭 VPE。

    重申一下、这不是 VPE 驱动程序或流水线完整性的问题、这是 ducatijpegdec 插件向解码图像添加8行额外的图像数据的问题。

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

    您好!

    似乎 Ducati 增加了这8条额外的线路。 我尝试使用 ducatih264dec 时、我在日志文件中看到的结果与 ducatijpegdec 相同。
    在我看来、您何时观察到这种 seg.fault 并不清楚。 我尝试使用流水线:
    gst-launch-1.0文件 rc location=1.mJPEG! jpegparse! 极好的体验! VPE! 'video/x-raw、format=(string) NV12、width=1280、height=720'! kmsink
    /GstPipeline0/GstVpe:vpe0.GstPad:SINK:SINK:SINK:CAPS ="VIDEO/x-RAW\、\ FORMAT\=(STRING\) NV12\、\ width\=(int\) 1920\、\ height\=(int\) 1088\、\、帧帧速率\=(frame\) 1 (try\) mes\(try\(try\) 1) me-me-mref)、trboolean
    /GstPipeline0/GstVpe:vpe0.GstPad:src:cap ="VIDEO/x-RAW\、\ format\=(string\) NV12\、\ width\=(int\) 1280\、\ height\=(int\) 720\、\ framerate\=(frame\) 1/1"

    在这种情况下、VPE 执行缩放、我在我的一侧没有发现任何问题。
    1.请确认"缩放"用例正在您的身边工作。

    例如、在使用案例 NV12 -> YUY2中、您是否观察到 SEG 故障。
    您可以看到、与 GST VPE 相比、低级 VPE 驱动程序支持的格式更多、GST VPE 仅支持:
    视频/x-raw
    格式:NV12
    宽度:[1、2147483647]
    高度:[1, 2147483647]
    帧速率:[0/1、2147483647/1]
    视频/x-raw
    格式:YUYV
    宽度:[1、2147483647]
    高度:[1, 2147483647]
    帧速率:[0/1、2147483647/1]
    视频/x-raw
    格式:YUY2
    宽度:[1、2147483647]
    高度:[1, 2147483647]
    帧速率:[0/1、2147483647/1]
    和 src 上的值。

    3.您是否仅在连接的 NV12->RGB (补丁)的情况下才观察到错误?

    BR
    玛格丽塔

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

    在最新的处理器 SDK 上、所有器件均经过测试、无需 RGB 补丁和 RGB 补丁。

    1.您为我指定的"分频"在分段故障中结束、有无 RGB 贴片。

    2.我看到 YUY2中的 segfault、没有 RGB 贴片的 YUV 以及 RGB 贴片的隔行问题

    3.如上所述,在有增补程序和没有增补程序的情况下也出现错误。

    我猜、分段故障来自 VPE 和 Ducati 之间的接口。  

    已附加回溯日志。  它来自 PSDK 3.04、但我尚未使用 Yocto 中的所有-dbg 软件包构建 PSDK 4.0。  不过、我在 PSDK 4流水线上运行了 GDB 回扫、看起来是相同的、但没有完整的回扫。

    e2e.ti.com/.../3343.gstreamer_5F00_backtrace_5F00_jul11.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嗯,我刚用一个新的'1.MJPG'再次尝试它,它运行良好…

    1.扩展可与 NV12配合使用
    2. YUY2起作用,YUYV 导致了与 landsink 和 kmsink 的兼容性问题,但我计划在我的最终应用中使用 appsink,所以这不是大问题。
    3.测试了 RGB 贴片和非 RGB 贴片管道。

    这可能仅显示在"实时"源上。 在我们的最终应用中、我们将使用 udpsrc、Ducati 处理这种类型的源时可能会出现问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我很高兴能与你并肩工作。

    [引用 user="Tom Wallis"]2. YUY2正常工作、YUYV 会导致与 landsink 和 kmsink 的兼容性问题、但我计划在我的最终应用中使用 appsink、因此这不是大问题。[/引述]

    我只要求试用 y2 yuyev 进行测试。 在这种情况下,您可以将 VPE 连接到 fakesink 元素。

    [引用 user="Tom Wallis">这可能只显示在“实况”源上。 在我们的最终应用中、我们将使用 udpsrc、可能 Ducati 处理这种类型的源代码的方式存在问题。

    是否可以尝试删除 multicast-iface 属性并进行尝试?

    BR
    玛格丽塔

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

    [引述]我只要求试用 YUY2 yuyv 进行测试。 在这种情况下,您可以将 VPE 连接到 fakesink 元素。

    是的、这是我一直在做的事情。  好建议

    [引用]您是否可以尝试删除 multicast-iface 属性并进行尝试?

    遗憾的是,这没有任何效果。

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

    您好!

    [引用 user="Tom Wallis">这可能只显示在“实况”源上。 在我们的最终应用中、我们将使用 udpsrc、可能 Ducati 处理这种类型的源代码的方式存在问题。

    您可以将 udpsrc 替换为 videotestsrc 并检查行为。

    我还建议在视频链接元素中设置 SYNC=false (无论它是 kmsSINK 还是 waylandsink 等)。

    BR
    玛格丽塔

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

    gst-launch-1.0 -v videotestsrc! VIDEO/x-RAW、FORMAT=NV12、width=1920、height=1080、framerate=30/1! VPE! VIDEO/x-RAW、FORMAT=YUY2、width=600、height=480! landwaysink 同步=错误



    gst-launch-1.0 -v videotestsrc! VIDEO/x-RAW、FORMAT=NV12、width=1920、height=1080、framerate=30/1! 很棒的酒店! jpegparse! 极好的体验! VPE! VIDEO/x-RAW、FORMAT=YUY2、width=600、height=480! landwaysink 同步=错误

    第一个管道在屏幕上显示的隔行视频较差、第二个管道分段故障。 将 VPE 输出格式更改为 NV12会导致两个管道都无法分段、但不会在屏幕上显示任何视频。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    让我检查一下。

    BR
    玛格丽塔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您继续参与此项活动、Margarita。 它一直在把我推入墙壁上几周。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    这是我对这条管线的结果、我没有观察到 seg.fault。

    1.用例软件 jpegenc->decode->display via kmsink:

    gst-launch-1.0 -v -e videotestsrc! VIDEO/x-RAW、FORMAT=NV12、width=1920、height=1080、framerate=30/1! 排队! jpegenc! jpegparse! 排队! 极好的体验! VPE! 'video/x-raw、format=(string) NV12、width=800、height=480'! 排队! kmsink scale=true

    2.用例相同、但显示接收器是航迹接收器:

    gst-launch-1.0 -v -e videotestsrc! VIDEO/x-RAW、FORMAT=NV12、width=1920、height=1080、framerate=30/1! 排队! jpegenc! jpegparse! 排队! 极好的体验! VPE! 'video/x-raw、format=(string) NV12、width=800、height=480'! 排队! 陆上接收机

    3.用例 Ducati encode->Ducati decode->waylandsink。 同样适用于 kmsink。 我在 VPE 之后尝试的分辨率为800x480和640x480。

    gst-launch-1.0 -e videotestsrc! VIDEO/x-RAW、FORMAT=NV12、width=1920、height=1080、framerate=30/1! 排队! 很棒的酒店! jpegparse! 排队! 极好的体验! VPE! 'video/x-raw、format=(string) NV12、width=800、height=480'! 排队! 陆上接收机

    4.use case 录像带->TEE ->编码->保存在文件中。 第二个分支是 videotestsrc->tee->display。 在这种情况下、ducatih264dec 元素缺失、因为流水线在 videosrc 之后被拆分为2个分支。

    gst-launch-1.0 -e videotestsrc! 'video/x-raw、format=(string) NV12、width=(int) 1920、height=(int) 1080、framerate=(fraction) 30/1'! VPE! TEE NAME=t! 排队! 很棒的酒店! 排队! jpegparse! 文件链接位置=1.MJPEG t! 排队! landwaysink use-drm=true

    5.与以前的用例相同,但在 capsfilter 中设置了视频链接分辨率。

    gst-launch-1.0 -e videotestsrc! 'video/x-raw、format=(string) NV12、width=(int) 1920、height=(int) 1080、framerate=(fraction) 30/1'! VPE! TEE NAME=t! 排队! 很棒的酒店! 排队! jpegparse! 文件链接位置=1.MJPEG t! 'video/x-raw、format=(string) NV12、width=800、height=480'! 排队! landwaysink use-drm=true

    6.与之前的用例相同,但管道中添加了 Ducati 解码器元素。 您可以在本例中看到、管道在解析器之后分离。

    gst-launch-1.0 -e videotestsrc! VIDEO/x-RAW、FORMAT=NV12、width=1920、height=1080、framerate=30/1! 排队! 很棒的酒店! jpegparse! TEE NAME=t! 排队! 文件链接位置=1.MJPEG t! 排队! 极好的体验! VPE! 'video/x-raw、format=(string) NV12、width=800、height=480'! 排队! kmsink

    对管道进行了地面接收器和 kmsink 测试。
    希望这对您有所帮助。

    BR
    玛格丽塔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    看起来就像它所做的那样! 我添加了我们的硬件、似乎不再对 segfault 进行分类。 Qt 问题仍然存在、但这在该帖子中已超出范围。 感谢玛格丽塔坚持
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    很棒!
    但对于 QT 问题、我建议您打开一个新线程。

    BR
    玛格丽塔