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.

AM62A7: gstreamer, Whether dual-layer (plane_id=31,plane_id=41 in DRM) display can be implemented

Part Number: AM62A7
Other Parts Discussed in Thread: AB15

I want to overlay two display layers through gstreamer. One way the camera data is displayed through kmssink into the layer plane_id=31 in DRM (overlay), and the other way the image is drawn into the layer plane_id=41 in DRM by creating a new plug-in.

I know, DRM supported two layers,Support layer overlay and transparency(alpha) Settings

But Whether gstreamer is supported? If not, do you have any suggestions? How to modify 

pipeline for example:

  • 1、I have another related question:

    Is gstreamer supported single input,multi output?

    I see the TI platform  is single input/single output;and   multi input/single output。 not find  multi output example

    2、I want to modify kmssink plugin。but gstreamer1.0-plugins-bad\1.20.6-r0\gst-plugins-bad-1.20.6  project. README.md  The document does not describe the compilation steps。Other plugins I compiled with this documentation。 meson.build  --I don't know how to use it。can you help me。example edgeai-gst-plugins‘s README.md:

    ```bash
    # Load the PSDKR path
    PSDKR_PATH=/opt/ti/am62a_workshop

    # Customize build for your SDK
    PKG_CONFIG_PATH='' crossbuild/environment $PSDKR_PATH > aarch64-none-linux-gnu.ini

    # Configure and build the project
    PKG_CONFIG_PATH='' meson build --cross-file aarch64-none-linux-gnu.ini --cross-file crossbuild/crosscompile.ini
    ninja -C build
    DESTDIR=$PSDKR_PATH/targetfs ninja install

  • Hi Peiyong,

    Not sure, if you have looked at these pipelines:

    https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-edgeai/AM62AX/09_00_00/exports/edgeai_docs/common/edgeai_dataflows.html

    As a part of multiple output using gstreamer, you could route one output to display using kmssink and the other could be streamed out via udpsink or a file sink.

    Kmssink with using two plane_ids will give you a drmPermission error as it’s already opened by one plane_id.

    Hope this helps

    Best Regards,

    Suren 

  • 2、I want to modify kmssink plugin。but gstreamer1.0-plugins-bad\1.20.6-r0\gst-plugins-bad-1.20.6  project. README.md  The document does not describe the compilation steps。Other plugins I compiled with this documentation。 meson.build  --I don't know how to use it。can you help me。example edgeai-gst-plugins‘s README.md:

    ```bash
    # Load the PSDKR path
    PSDKR_PATH=/opt/ti/am62a_workshop

    # Customize build for your SDK
    PKG_CONFIG_PATH='' crossbuild/environment $PSDKR_PATH > aarch64-none-linux-gnu.ini

    # Configure and build the project
    PKG_CONFIG_PATH='' meson build --cross-file aarch64-none-linux-gnu.ini --cross-file crossbuild/crosscompile.ini
    ninja -C build
    DESTDIR=$PSDKR_PATH/targetfs ninja install

    this question? How does this code compile to generate the so library?

    ===========================

    3、Kmssink with using two plane_ids will give you a drmPermission error as it’s already opened by one plane_id.

    -------Yes,So did my test results。So  I must modify the kmssink plugin source code to supported.In principle, whether this logic can be implemented?   kmssink implements multiplex  sink.one sink to plane_id=31; another sink to plane_id=41

    ===========================

    4、Is there documentation on how functions are called between plug-ins for code framework running?

  • Can you replay My question quickly?

  • I am waiting for inputs from our Internal teams. Apologies for the delay. 

  • 2、gst-plugins-bad-1.20.6  need cross compiling;Hope you can give the tutorial how to cross-compile  gst-plugins-bad-1.20.6 ,not use yocto

  • Hi,

    Have you tried to compile using MACHINE=am62axx-evm bitbake gstreamer1-0-plugins-bad?

    software-dl.ti.com/.../Overview_Building_the_SDK.html

    Best Regards,

    Suren

  • Have you tried to compile using MACHINE=am62axx-evm bitbake gstreamer1-0-plugins-bad?

    -----this is use yocto。 but yocto need very large space to compile。 I have not enough space。 So I want to TI platform have example to separately compiled gstreamer1-0-plugins-bad.  example the edgeai-gst-plugins. it can separately compiled。

    this is the second question。how the one question?

    3、Kmssink with using two plane_ids will give you a drmPermission error as it’s already opened by one plane_id.

    ------whether this logic can be implemented?   kmssink implements multiplex  sink.one sink to plane_id=31; another sink to plane_id=41

    4、Is there documentation on how functions are called between plug-ins for code framework running? kmssink ,How do I change to 2-sink pad

  • I am waiting for your reply,thanks

  • Do any of you guys know gstreamer?I would like to ask kmssink about the feasibility of modifying it into two sinks?kmssink inherits videosink, so I don't know if the logic I thought would work

  • Hi Peiyong,

    Please find the attached patch in kmssink

    https://git.ti.com/cgit/edgeai/meta-edgeai/tree/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-gstkmssink-Add-support-to-use-multiple-kmssinks.patch?h=kirkstone-next

    This was tested with the below pipeline:

    GST_DEBUG=3 gst-launch-1.0 videotestsrc ! video/x-raw, format=NV12, width=1920, height=1080 ! kmssink driver-name=tidss plane-properties="a, alpha=40000" sync=false force-modesetting=true   videotestsrc pattern=ball ! video/x-raw, format=NV12, width=1920, height=1080 ! queue ! tiperfoverlay ! kmssink driver-name=tidss plane-properties="a, alpha=40000" sync=false

    Please try this out on your end and share us your observations.

    Also, wanted to know, if its not possible for you to use tiovxmosaic to combine the images before passing to display instead of using two planes?

    Best Regards,

    Suren

  • Please try this out on your end and share us your observations.

    ----I try

    wanted to know, if its not possible for you to use tiovxmosaic to combine the images before passing to display instead of using two planes?

    ----not,tiovxmosaic didn't do what I wanted. two planes  can solve the problem of multiple layers, decoupling video layers and UI rendering layers

  • I'm still building this environment(Yocto), not so fast。

    From the patch point of view, this change only supports multi-process access, not multi-sink. This causes the frame rate to halve, and how do the two kmssink images sync

  • Use your cmd,it is ok。but this because videotestsrc supported multiple。I use v4l2src ,it is not error,buff is error:ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src1: Failed to allocate required memory.

    =======================

    root@am62axx-evm:/opt/edgeai-gst-apps# gst-launch-1.0 -v -e \
    > v4l2src device=/dev/video0 io-mode=dmabuf-import ! \
    > video/x-bayer,width=1920,height=1080,format=bggr12, framerate=30/1 ! \
    > tiovxisp sensor-name=SENSOR_OV_0X03C10_RPI dcc-isp-file=/opt/imaging/ovx03c10/dcc_viss_wdr.bin format-msb=11 \
    > sink_0::dcc-2a-file=/opt/imaging/ovx03c10/dcc_2a_wdr.bin sink_0::device=/dev/v4l-subdev2 ! \
    > tiovxmultiscaler ! \
    > video/x-raw, format=NV12,width=1280,height=768, framerate=30/1 ! \
    > kmssink driver-name=tidss sync=false plane-id=31 \
    > \
    > v4l2src device=/dev/video0 io-mode=dmabuf-import ! \
    > video/x-bayer,width=1920,height=1080,format=bggr12, framerate=30/1 ! \
    > tiovxisp sensor-name=SENSOR_OV_0X03C10_RPI dcc-isp-file=/opt/imaging/ovx03c10/dcc_viss_wdr.bin format-msb=11 \
    > sink_0::dcc-2a-file=/opt/imaging/ovx03c10/dcc_2a_wdr.bin sink_0::device=/dev/v4l-subdev2 ! video/x-raw, format=NV12 ! \
    > tiovxmultiscaler name=split_01 src_0::roi-startx=0 src_0::roi-starty=0 src_0::roi-width=1920 src_0::roi-height=1080 target=0 \
    > \
    > split_01. ! queue ! video/x-raw, width=480, height=416 ! tiovxmultiscaler target=1 ! video/x-raw, width=416, height=416 ! \
    > tiovxdlpreproc model=/opt/model_zoo/ONR-OD-8200-yolox-nano-lite-mmdet-coco-416x416 out-pool-size=4 ! application/x-tensor-tiovx ! \
    > tidlinferer target=1 model=/opt/model_zoo/ONR-OD-8200-yolox-nano-lite-mmdet-coco-416x416 ! post_0.tensor \
    > \
    > split_01. ! queue ! video/x-raw, width=1280, height=768 ! post_0.sink \
    > \
    > tidlpostproc name=post_0 model=/opt/model_zoo/ONR-OD-8200-yolox-nano-lite-mmdet-coco-416x416 alpha=0.4 viz-threshold=0.6 top-N=5 display-model=true ! queue ! \
    > video/x-raw,format=NV12, width=1280, height=768 ! \
    > kmssink driver-name=tidss plane-id=41 sync=false plane-properties="a, alpha=30000"
    APP: Init ... !!!
    MEM: Init ... !!!
    MEM: Initialized DMA HEAP (fd=6) !!!
    MEM: Init ... Done !!!
    IPC: Init ... !!!
    IPC: Init ... Done !!!
    REMOTE_SERVICE: Init ... !!!
    REMOTE_SERVICE: Init ... Done !!!
    1664.894063 s: GTC Frequency = 200 MHz
    APP: Init ... Done !!!
    1664.894245 s: VX_ZONE_INIT:Enabled
    1664.894267 s: VX_ZONE_ERROR:Enabled
    1664.894276 s: VX_ZONE_WARNING:Enabled
    1664.895711 s: VX_ZONE_INIT:[tivxInitLocal:130] Initialization Done !!!
    1664.896312 s: VX_ZONE_INIT:[tivxHostInitLocal:101] Initialization Done for HOST !!!
    libtidl_onnxrt_EP loaded 0x240587b0
    Final number of subgraphs created are : 1, - Offloaded Nodes - 289, Total Nodes - 289
    Setting pipeline to PAUSED ...
    Pipeline is live and does not need PREROLL ...
    /GstPipeline:pipeline0/GstKMSSink:kmssink1: display-width = 1280
    /GstPipeline:pipeline0/GstKMSSink:kmssink1: display-height = 768
    /GstPipeline:pipeline0/GstKMSSink:kmssink0: display-width = [ 280.571314] phy_mipi_dphy_calc_config 43,hs_clk_rate=498000000
    1280
    /GstPipeline:pipeline0/GstKMSSink:kmssink0: display-height[ 280.571336] lipy cdns_dphy_rx_configure() 191,band_ctrl=15, clk_rate=498000000
    = 768
    /GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: c[ 280.571525] ov03c10 1-0036: +++++++++++++++ov03c10_set_stream ov03c10->streaming=0;enable=1
    aps = video/x-bayer, width=(int)1920, height=(int)1080, format=([ 280.571536] ov03c10 1-0036: +++++++++++++++ov03c10_start_streaming stp1+++++++++
    string)bggr12, framerate=(fraction)30/1, interlace-mode=(string)[ 280.571540] ov03c10 1-0036: +++++++++++++++ov03c10_start_streaming stp2+++++++++
    progressive, colorimetry=(string)2:4:7:1
    Pipeline is PREROLLED [ 280.571544] ov03c10 1-0036: +++++++++++++++ov03c10_start_streaming stp3+++++++++
    ...
    Setting pipeline to PLAYING ...
    /GstPipeline:pipeline0/Gst[ 280.571548] ov03c10 1-0036: +++++++++++++++ov03c10_start_streaming stp4+++++++++
    CapsFilter:capsfilter0.GstPad:src: caps = video/x-bayer, width=([ 280.571751] ov03c10 1-0036: +++++++++++++++ov03c10_start_streaming stp5+++++++++
    int)1920, height=(int)1080, format=(string)bggr12, framerate=(fr[ 280.571760] ov03c10 1-0036: +++++++++++++++ov03c10_start_streaming ok+++++++++
    action)30/1, interlace-mode=(string)progressive, colorimetry=(st[ 280.572630] ov03c10 1-0036: +++++++++++++++ov03c10_set_stream ov03c10->streaming=1;enable=0
    ring)2:4:7:1
    /GstPipeline:pipeline0/GstTIOVXISP:tiovxisp0.GstTI[ 280.572830] ov03c10 1-0036: Runtime PM usage count underflow!
    OVXIspPad:sink_0: caps = video/x-bayer, width=(int)1920, height=(int)1080, format=(string)bggr12, framerate=(fraction)30/1, interlace-mode=(string)progressive, colorimetry=(string)2:4:7:1
    /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-bayer, width=(int)1920, height=(int)1080, format=(string)bggr12, framerate=(fraction)30/1, interlace-mode=(string)progressive, colorimetry=(string)2:4:7:1
    /GstPipeline:pipeline0/GstV4l2Src:v4l2src1.GstPad:src: caps = video/x-bayer, width=(int)1920, height=(int)1080, format=(string)bggr12, framerate=(fraction)30/1, interlace-mode=(string)progressive, colorimetry=(string)2:4:7:1
    /GstPipeline:pipeline0/GstCapsFilter:capsfilter2.GstPad:src: caps = video/x-bayer, width=(int)1920, height=(int)1080, format=(string)bggr12, framerate=(fraction)30/1, interlace-mode=(string)progressive, colorimetry=(string)2:4:7:1
    /GstPipeline:pipeline0/GstTIOVXISP:tiovxisp1.GstTIOVXIspPad:sink_0: caps = video/x-bayer, width=(int)1920, height=(int)1080, format=(string)bggr12, framerate=(fraction)30/1, interlace-mode=(string)progressive, colorimetry=(string)2:4:7:1
    /GstPipeline:pipeline0/GstCapsFilter:capsfilter2.GstPad:sink: caps = video/x-bayer, width=(int)1920, height=(int)1080, format=(string)bggr12, framerate=(fraction)30/1, interlace-mode=(string)progressive, colorimetry=(string)2:4:7:1
    New clock: GstSystemClock
    ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src1: Failed to allocate required memory.
    Additional debug info:
    ../gst-plugins-good-1.20.6/sys/v4l2/gstv4l2src.c(777): gst_v4l2src_decide_allocation (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src1:
    Buffer pool activation failed
    Execution ended after 0:00:00.012377990
    Setting pipeline to NULL ...
    ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src1: Internal data stream error.
    Additional debug info:
    ../gstreamer-1.20.6/libs/gst/base/gstbasesrc.c(3127): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src1:
    streaming stopped, reason not-negotiated (-4)
    Freeing pipeline ...
    1665.698743 s: VX_ZONE_INIT:[tivxHostDeInitLocal:115] De-Initialization Done for HOST !!!
    1665.703343 s: VX_ZONE_INIT:[tivxDeInitLocal:193] De-Initialization Done !!!
    APP: Deinit ... !!!
    REMOTE_SERVICE: Deinit ... !!!
    REMOTE_SERVICE: Deinit ... Done !!!
    IPC: Deinit ... !!!
    IPC: DeInit ... Done !!!
    MEM: Deinit ... !!!
    DDR_SHARED_MEM: Alloc's: 55 alloc's of 67854489 bytes
    DDR_SHARED_MEM: Free's : 55 free's of 67854489 bytes
    DDR_SHARED_MEM: Open's : 0 allocs of 0 bytes
    MEM: Deinit ... Done !!!
    APP: Deinit ... Done !!!
    root@am62axx-evm:/opt/edgeai-gst-apps#

  • Hi Peiyong,

    You can not use 2 v4l2src with same device
    Do you have 2 cameras connected, if so specify
    second camera device for second v4l2src

    Regards
    Rahul T R

  • I just have one camera,I  try this cmd, It can display two layers,But there is a problem with the image video, I only move once, but the video moves back and forth several times. Whether the image lost frame or other?

    gst-launch-1.0 -v -e \
    v4l2src device=/dev/video0 io-mode=dmabuf-import ! \
    video/x-bayer,width=1920,height=1080,format=bggr12, framerate=60/1 ! \
    tiovxisp sensor-name=SENSOR_OV_0X03C10_RPI dcc-isp-file=/opt/imaging/ovx03c10/dcc_viss_wdr.bin format-msb=11 \
    sink_0::dcc-2a-file=/opt/imaging/ovx03c10/dcc_2a_wdr.bin sink_0::device=/dev/v4l-subdev2 ! video/x-raw, format=NV12 ! \
    tiovxmultiscaler name=split_01 src_0::roi-startx=0 src_0::roi-starty=0 src_0::roi-width=1920 src_0::roi-height=1080 target=0 \
    \
    split_01. ! queue ! video/x-raw, width=480, height=416 ! tiovxmultiscaler target=1 ! video/x-raw, width=416, height=416 ! \
    tiovxdlpreproc model=/opt/model_zoo/ONR-OD-8200-yolox-nano-lite-mmdet-coco-416x416 out-pool-size=4 ! application/x-tensor-tiovx ! \
    tidlinferer target=1 model=/opt/model_zoo/ONR-OD-8200-yolox-nano-lite-mmdet-coco-416x416 ! post_0.tensor \
    \
    split_01. ! queue ! video/x-raw, width=1280, height=768 ! post_0.sink \
    \
    split_01. ! queue ! video/x-raw, width=1280, height=768 ! kmssink driver-name=tidss sync=false plane-id=31 \
    \
    tidlpostproc name=post_0 model=/opt/model_zoo/ONR-OD-8200-yolox-nano-lite-mmdet-coco-416x416 alpha=0.4 viz-threshold=0.6 top-N=5 display-model=true ! queue ! \
    video/x-raw,format=NV12, width=1280, height=768 ! \
    kmssink driver-name=tidss plane-id=41 render-rectangle='<0,0,640,384>' sync=false plane-properties="a, alpha=30000"

  • If I only output all the way to kmssink, similar frame drops will occur.

  • Does this situation have something to do with caching /buff??

  • I test,not modify mkssink,it will be。  TI platform :add Object Detection function,it has this problem。If I not use  tiovxdlpreproc/tidlinferer/tidlpostproc; not have this problen, 

    gst-launch-1.0 -v -e \
    v4l2src device=/dev/video0 io-mode=dmabuf-import ! \
    video/x-bayer,width=1920,height=1080,format=bggr12, framerate=30/1 ! \
    tiovxisp sensor-name=SENSOR_OV_0X03C10_RPI dcc-isp-file=/opt/imaging/ovx03c10/dcc_viss_wdr.bin format-msb=11 \
    sink_0::dcc-2a-file=/opt/imaging/ovx03c10/dcc_2a_wdr.bin sink_0::device=/dev/v4l-subdev2 ! video/x-raw, format=NV12 ! \
    tiovxmultiscaler name=split_01 src_0::roi-startx=0 src_0::roi-starty=0 src_0::roi-width=1920 src_0::roi-height=1080 target=0 \
    \
    split_01. ! queue ! video/x-raw, width=480, height=416 ! tiovxmultiscaler target=1 ! video/x-raw, width=416, height=416 ! \
    tiovxdlpreproc model=/opt/model_zoo/ONR-OD-8200-yolox-nano-lite-mmdet-coco-416x416  out-pool-size=4 ! application/x-tensor-tiovx ! \
    tidlinferer target=1  model=/opt/model_zoo/ONR-OD-8200-yolox-nano-lite-mmdet-coco-416x416 ! post_0.tensor \
    \
    split_01. ! queue ! video/x-raw, width=1280, height=768 ! post_0.sink \
    \
    tidlpostproc name=post_0 model=/opt/model_zoo/ONR-OD-8200-yolox-nano-lite-mmdet-coco-416x416 alpha=0.4 viz-threshold=0.6 top-N=5 display-model=true ! queue ! \
    video/x-raw,format=NV12, width=1280, height=768 ! \
    kmssink driver-name=tidss plane-id=31

    exec cmd, serial console is warning:A lot of buffers are being dropped.

    =======================================

    Redistribute latency...
    WARNING: from element /GstPipeline:pipeline0/GstKMSSink:kmssink0: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.6/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstKMSSink:kmssink0:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstKMSSink:kmssink0: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.6/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstKMSSink:kmssink0:
    There may be a timestamping problem, or this computer is too slow.
    WARNING: from element /GstPipeline:pipeline0/GstKMSSink:kmssink0: A lot of buffers are being dropped.
    Additional debug info:
    ../gstreamer-1.20.6/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstKMSSink:kmssink0:
    There may be a timestamping problem, or this computer is too slow.

    =====================

    If I add the cmd end:sync=false, not printf:A lot of buffers are being dropped.  but image lost frame。

  • the same cmd:

    gst-launch-1.0 -v -e \
    v4l2src device=/dev/video2 io-mode=dmabuf-import ! \
    video/x-bayer,width=1920,height=1080,format=bggr12, framerate=60/1 ! \
    queue2 max-size-buffers=0 ! tiovxisp sensor-name=SENSOR_OV_0X03C10_RPI dcc-isp-file=/opt/imaging/ovx03c10/dcc_viss_wdr.bin format-msb=11 \
    sink_0::dcc-2a-file=/opt/imaging/ovx03c10/dcc_2a_wdr.bin sink_0::device=/dev/v4l-subdev2 ! \
    queue2 max-size-buffers=0 ! tiovxmultiscaler ! \
    video/x-raw, format=NV12,width=1280,height=768, framerate=60/1 ! \
    fpsdisplaysink sync=false video-sink="kmssink driver-name=tidss force-modesetting=true"

    in sdk-8 run:FPS=56

    in sdk-9 run:FPS=26

    Why?

  • Hi Peiyong,

    There is know issue in sdk 9.0
    Please use linux sdk from 9.0.1 release

    PROCESSOR-SDK-LINUX-AM62A Software development kit (SDK) | TI.com

    Regards
    Rahul T R

  • Is there a patch to sdk 9.0 to upgrade to 9.0.1?

  • other question ? Please answer it

  • I use sdk9.0.1 version,change linux into 6.1.46 version, but FPS  also  is 30. 

  • Can you answer my question, please

  • Hi Peiyong,

    I see you that you have created another issue related to the Frame rate. I am going to close this thread  and continue our discussion over there. 

    Best Regards,

    Suren

  • No,Those are two questions. Another case is that  sdk version differences cause the kmssink display frame rate to halve;
    The case is whether kmssink that supports multi-process access will halve the frame rate as more processes access it.

    In the Another case, I checked that there was parameter influence. But this case, I tested that multiple processes would halve the frame rate

    if

    one process : FPS :60

    two process : FPS:   30

    three process : FPS:   20

    four process : FPS:   15

    Your idea is to use a decoupled DRM master to achieve multi-process access, but the frame rate will be halved. I feel that if we change to Atomic interface, there will be no frame rate drop problem.

    exec cmd: (two process)

    gst-launch-1.0 -v -e \
    v4l2src device=/dev/video0 io-mode=dmabuf-import ! \
    video/x-bayer,width=1920,height=1080,format=bggr12, framerate=60/1 ! \
    queue2 max-size-buffers=0 ! tiovxisp sensor-name=SENSOR_OV_0X03C10_RPI dcc-isp-file=/opt/imaging/ovx03c10/dcc_viss_wdr.bin format-msb=11 \
    sink_0::dcc-2a-file=/opt/imaging/ovx03c10/dcc_2a_wdr.bin sink_0::device=/dev/v4l-subdev2 ! video/x-raw, format=NV12 ! \
    queue2 max-size-buffers=0 ! tiovxmultiscaler name=split_01 src_0::roi-startx=0 src_0::roi-starty=0 src_0::roi-width=1920 src_0::roi-height=1080 target=0 \
    \
    split_01. ! queue2 max-size-buffers=0 ! video/x-raw, width=1280, height=768,framerate=60/1 ! \
    fpsdisplaysink text-overlay=false sync=false video-sink="kmssink driver-name=tidss force-modesetting=true plane-id=31 " \
    \
    split_01. ! queue2 max-size-buffers=0 ! video/x-raw, width=1280, height=768 ! \
    \
    queue2 max-size-buffers=0 ! tiovxmultiscaler ! video/x-raw,format=NV12, width=1280, height=200 ! \
    queue2 max-size-buffers=0 ! kmssink driver-name=tidss plane-id=41 render-rectangle='<0,0,1280,200>' sync=false plane-properties="a, alpha=30000"

  • Hi Peiyong,

    Rahul is currently out of office as its a public holiday in India. Please expect a response in a day/two once he is back in office.

    Apologies for the delay.

    Best Regards,

    Suren

  • Can any other colleagues respond? This issue is urgent.

  • Hi Peiyong,

    What is your panel resolution,
    It good to use same resolution at kmssink with force-modesetting enabled
    With out this there might be additional DDR to DDR copy

    Can you share full log of below command

    modetest -M tidss

    Regards
    Rahul T R


  • It good to use same resolution at kmssink with force-modesetting enabled

    ------But I need different resolutions to display different layers。Since the main layer definition is the video layer, the overlay layer definition is the UI painting layer.

    =========================================================

    root@am62axx-evm:/opt/edgeai-gst-apps# modetest -M tidss
    Encoders:
    id crtc type possible crtcs possible clones
    39 38 DPI 0x00000001 0x00000001

    Connectors:
    id encoder status name size (mm) modes encoders
    40 39 connected DPI-1 0x0 1 39
    modes:
    index name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot
    #0 1280x768 59.97 1280 1419 1519 1524 768 840 940 942 86100 flags: nhsync, nvsync; type: preferred, driver
    props:
    1 EDID:
    flags: immutable blob
    blobs:

    value:
    2 DPMS:
    flags: enum
    enums: On=0 Standby=1 Suspend=2 Off=3
    value: 0
    5 link-status:
    flags: enum
    enums: Good=0 Bad=1
    value: 0
    6 non-desktop:
    flags: immutable range
    values: 0 1
    value: 0
    4 TILE:
    flags: immutable blob
    blobs:

    value:

    CRTCs:
    id fb pos size
    38 48 (0,0) (1280x768)
    #0 1280x768 59.97 1280 1419 1519 1524 768 840 940 942 86100 flags: nhsync, nvsync; type: preferred, driver
    props:
    24 VRR_ENABLED:
    flags: range
    values: 0 1
    value: 0
    27 CTM:
    flags: blob
    blobs:

    value:
    28 GAMMA_LUT:
    flags: blob
    blobs:

    value:
    29 GAMMA_LUT_SIZE:
    flags: immutable range
    values: 0 4294967295
    value: 256

    Planes:
    id crtc fb CRTC x,y x,y gamma size possible crtcs
    31 38 48 0,0 0,0 0 0x00000001
    formats: AR12 AB12 RA12 RG16 BG16 AR15 AB15 AR24 AB24 RA24 BA24 RG24 BG24 AR30 AB30 XR12 XB12 RX12 XR15 XB15 XR24 XB24 RX24 BX24 XR30 XB30 YUYV UYVY NV12
    props:
    8 type:
    flags: immutable enum
    enums: Overlay=0 Primary=1 Cursor=2
    value: 1
    30 IN_FORMATS:
    flags: immutable blob
    blobs:

    value:
    01000000000000001d00000018000000
    01000000900000004152313241423132
    52413132524731364247313641523135
    41423135415232344142323452413234
    42413234524732344247323441523330
    41423330585231325842313252583132
    58523135584231355852323458423234
    52583234425832345852333058423330
    59555956555956594e56313200000000
    ffffff1f000000000000000000000000
    0000000000000000
    in_formats blob decoded:
    AR12: LINEAR
    AB12: LINEAR
    RA12: LINEAR
    RG16: LINEAR
    BG16: LINEAR
    AR15: LINEAR
    AB15: LINEAR
    AR24: LINEAR
    AB24: LINEAR
    RA24: LINEAR
    BA24: LINEAR
    RG24: LINEAR
    BG24: LINEAR
    AR30: LINEAR
    AB30: LINEAR
    XR12: LINEAR
    XB12: LINEAR
    RX12: LINEAR
    XR15: LINEAR
    XB15: LINEAR
    XR24: LINEAR
    XB24: LINEAR
    RX24: LINEAR
    BX24: LINEAR
    XR30: LINEAR
    XB30: LINEAR
    YUYV: LINEAR
    UYVY: LINEAR
    NV12: LINEAR
    33 zpos:
    flags: immutable range
    values: 0 0
    value: 0
    34 COLOR_ENCODING:
    flags: enum
    enums: ITU-R BT.601 YCbCr=0 ITU-R BT.709 YCbCr=1
    value: 0
    35 COLOR_RANGE:
    flags: enum
    enums: YCbCr limited range=0 YCbCr full range=1
    value: 1
    36 alpha:
    flags: range
    values: 0 65535
    value: 65535
    37 pixel blend mode:
    flags: enum
    enums: Pre-multiplied=0 Coverage=1
    value: 0
    41 0 0 0,0 0,0 0 0x00000001
    formats: AR12 AB12 RA12 RG16 BG16 AR15 AB15 AR24 AB24 RA24 BA24 RG24 BG24 AR30 AB30 XR12 XB12 RX12 XR15 XB15 XR24 XB24 RX24 BX24 XR30 XB30 YUYV UYVY NV12
    props:
    8 type:
    flags: immutable enum
    enums: Overlay=0 Primary=1 Cursor=2
    value: 0
    30 IN_FORMATS:
    flags: immutable blob
    blobs:

    value:
    01000000000000001d00000018000000
    01000000900000004152313241423132
    52413132524731364247313641523135
    41423135415232344142323452413234
    42413234524732344247323441523330
    41423330585231325842313252583132
    58523135584231355852323458423234
    52583234425832345852333058423330
    59555956555956594e56313200000000
    ffffff1f000000000000000000000000
    0000000000000000
    in_formats blob decoded:
    AR12: LINEAR
    AB12: LINEAR
    RA12: LINEAR
    RG16: LINEAR
    BG16: LINEAR
    AR15: LINEAR
    AB15: LINEAR
    AR24: LINEAR
    AB24: LINEAR
    RA24: LINEAR
    BA24: LINEAR
    RG24: LINEAR
    BG24: LINEAR
    AR30: LINEAR
    AB30: LINEAR
    XR12: LINEAR
    XB12: LINEAR
    RX12: LINEAR
    XR15: LINEAR
    XB15: LINEAR
    XR24: LINEAR
    XB24: LINEAR
    RX24: LINEAR
    BX24: LINEAR
    XR30: LINEAR
    XB30: LINEAR
    YUYV: LINEAR
    UYVY: LINEAR
    NV12: LINEAR
    43 zpos:
    flags: range
    values: 1 1
    value: 0
    44 COLOR_ENCODING:
    flags: enum
    enums: ITU-R BT.601 YCbCr=0 ITU-R BT.709 YCbCr=1
    value: 0
    45 COLOR_RANGE:
    flags: enum
    enums: YCbCr limited range=0 YCbCr full range=1
    value: 1
    46 alpha:
    flags: range
    values: 0 65535
    value: 65535
    47 pixel blend mode:
    flags: enum
    enums: Pre-multiplied=0 Coverage=1
    value: 0

    Frame buffers:
    id size pitch

    root@am62axx-evm:/opt/edgeai-gst-apps#