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.

SK-AM62P-LP 系列:How to use YUYV and other formats as input/output for GPU?

Part Number: SK-AM62P-LP

Tool/software:

正如技术支持人员的邮件中提到的:GPU 支持将 UYVY 作为输入和与输出相同的格式。

我们希望获得该方法的参考案例,可以在 KMSCUBE 案例的基础上进行修改,也可以提供全新的案例。

这个问题已经持续了很长时间,我们希望得到快速有效的回答。

  • As mentioned in the email from the technical support personnel:GPU supports UYVY as input and in the same format as output.

    We hope to obtain reference cases for this method, which can be modified based on the KMSCUBE case or provide new cases.

    This question has been ongoing for a long time, and we hope to receive a quick and effective response

  • Hi,

    As of now, we don't have an example to showcase the above usecase but our team is reviewing the request.

    Regards,
    Krunal

  • Hi,

    I'm glad to receive your reply,

    and I saw in the Similar topics on the right side of the question page that different platforms have similar requirements and everyone has the same confusion, so can we speed up the internal review process?

  • Hi,

    As I mentioned previously, we are reviewing the feasibility of such use case design. It has nothing to do with our SoC or GPU driver and more emphasis on custom GPU usecase design. The discussions are on-going and we will provide more updates by end of next week.

    Regards,
    Krunal

  • Thank you for your efforts and I look forward to hearing from you

  • Our expert shared below test, please help to try and feedback the result. Our expert will have further discussion with you here. Thanks.

    gst-launch-1.0 -v v4l2src device=/dev/video2 num-buffers=200 ! video/x-raw, format=1920, height=1080, format=UYVY, framerate=30/1 ! glupload ! glcolorconvert ! gldownload ! video/x-raw, format=NV12, width=1920, height=1080 ! v4l2h264enc output-io-mode=dmabuf ! filesink location=temp-gl.264

     

    gst-launch-1.0 -v filesrc location=temp-gl.264 ! h264parse ! v4l2h264dec capture-io-mode=dmabuf ! kmssink driver-name=tidss sync=false force-modesetting=true

  • Hi, TommySong:

    I tried the following command on SDK9.2 and it worked,

    gst-launch-1.0 -v v4l2src device=/dev/video2 ! video/x-raw,width=640,height=480,framerate=30/1,format=YUY2 ! glupload ! glcolorconvert ! gldownload ! video/x-raw,format=NV12, width=640,height=480 ! v4l2h265enc output-io-mode=dmabuf extra-controls="enc,prepend_sps_and_pps_to_idr=1,video_gop_size=5" ! filesink location=tmp-gl.265

    gst-launch-1.0 -v filesrc location=tmp-gl.265 ! h265parse ! v4l2h265dec capture-io-mode=dmabuf ! kmssink driver-name=tidss sync=false force-modesetting=true

    But when I switched to SDK10.0, which I was using, this command didn't work properly.

    Best Regards.

  • Hi,

    I will review the above pipeline and provide feedback by tomorrow. Also, can you share your error log or what errors you are observing on the console?

    Regards,

    Krunal

  • Hi, Krunal:

      This abserving on my console.

    root@am62pxx-evm:~# gst-launch-1.0 -v v4l2src device=/dev/video2 ! video/x-raw,width=640,height=480,framerate=30/1,format=YUY2 ! glupload ! glcolorconvert ! gldownload ! video/x-raw,format=NV12, width=640,height=480 ! v4l2h265enc output-io-mode=dmabuf exroot@am62pxx-evm:~#  gst-launch-1.0 -v v4l2src device=/dev/video2 ! video/x-raw,width=640,height=480,framerate=30/1,format=YUY2 ! glupload ! glcolorconvert ! gldownload ! video/x-raw,format=NV12, width=640,height=480 ! v4l2h265enc output-io-mode=dmabuf e ! got@am62pxx-evm:~#  ^Cert ! gldownload ! video/x-raw,format=NV12, width=640,height=480 ! v4l2h265enc output-io-mode=dmabuf extra
    root@am62pxx-evm:~# GST_DEBUG=3 gst-launch-1.0 -v v4l2src device=/dev/video2 ! video/x-raw,width=640,height=480,framerate=30/1,format=YUY2 ! glupload ! glcolorconvert ! gldownload ! video/x-raw,format=NV12, width=640,height=480 ! v4l2h265enc output-io-mo=dmabuf extra-controls="enc,prepend_sps_and_pps_to_idr=1,video_gop_size=5" ! filesink location=tmp-gl.265 -v
    Setting pipeline to PAUSED ...
    0:00:00.242512342 168999     0x34e41880 WARN                    v4l2 gstv4l2object.c:4867:gst_v4l2_object_probe_caps:<v4l2h265enc0:src> Failed to probe pixel aspect ratio with VIDIOC_CROPCAP: Invalid argument
    Pipeline is live and does not need PREROLL ...
    Got context from element 'gldownloadelement0': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayWayland\)\ gldisplaywayland0";
    Pipeline is PREROLLED ...
    Setting pipeline to PLAYING ...
    /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: crop-bounds = < (int)0, (int)0, (int)2048, (int)1536 >
    New clock: GstSystemClock
    0:00:00.294670144 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.294752054 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.294782329 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.294811534 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.294855160 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.294885955 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.294914905 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.294943495 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.294972180 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.295000985 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.295029445 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.295057885 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.295086790 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.295115481 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.295144431 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.295173051 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.295201491 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.295229941 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.295258441 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.295286801 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.624859555 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.624903456 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.624933641 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.624963571 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.625020461 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.625051166 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.625080966 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.625109941 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.625139266 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.625168671 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.625197797 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.625226482 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.625256367 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.625285132 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.625315177 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.625344142 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.625373947 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.625402832 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.958078853 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.958124998 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.958156358 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.958186428 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.958217028 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.958246353 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.958276113 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.958305548 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.958335314 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.958364679 168999 0xffff94004a80 WARN               glcontext gstglcontext_egl.c:552:gst_gl_context_egl_dump_config:<glcontextegl0> unknown EGL_COLOR_BUFFER_TYPE value 3300
    0:00:00.977658768 168999 0xffff90000b70 WARN                 basesrc gstbasesrc.c:3134:gst_base_src_loop:<v4l2src0> error: Internal data stream error.
    0:00:00.977736068 168999 0xffff90000b70 WARN                 basesrc gstbasesrc.c:3134:gst_base_src_loop:<v4l2src0> error: streaming stopped, reason not-negotiated (-4)
    ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data stream error.
    Additional debug info:
    /usr/src/debug/gstreamer1.0/1.22.12/libs/gst/base/gstbasesrc.c(3134): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
    streaming stopped, reason not-negotiated (-4)
    Execution ended after 0:00:00.725025785
    Setting pipeline to NULL ...
    warning: queue 0xffff8c000be0 destroyed while proxies still attached:
      xdg_wm_base@6 still attached
      wl_subcompositor@5 still attached
      wl_compositor@4 still attached
      wl_registry@2 still attached
    Freeing pipeline ...
    

  • Hi Qinghong,

    You may not need the glcolorconvert to convert UYVY to NV12 as the encoder has the support added for YUV422 formats(which includes UYVY, YUY2 as well.)

    Please find the attached patch.

    https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/791/0257.v0_2D00_0001_2D00_media_2D00_chips_2D00_media_2D00_wave5_2D00_Support_2D00_one_2D00_planar_2D00_YUV422.patch

    Also, we were able to run the pipeline by adding ticolorconvert after gldownload element in the pipeline.

    gst-launch-1.0 -v v4l2src device=/dev/video2 ! video/x-raw,width=640,height=480,framerate=30/1,format=UYVY ! glupload ! glcolorconvert ! gldownload ! ticolorconvert ! video/x-raw,format=NV12, width=640,height=480 ! v4l2h265enc output-io-mode=dmabuf extra-controls="enc,prepend_sps_and_pps_to_idr=1,video_gop_size=5" ! filesink location=tmp-gl.265

    Hope this helps.

    Best Regards,

    Suren

  • Hi,Suren:

        I already know that the encoder supports YUV422. However, our video stream needs to go through the GPU to draw the panorama first, and generally the frame from the GPU is BGRA format. In order to save the conversion of BGRA to NV21 on the CPU side, we decided to convert the video frame in BGRA format to NV21 after drawing the panorama in the GPU, then the video stream from the GPU is NV21 format and can be directly sent to the encoder. This reduces the CPU load.

    Best Regards,

  • We are working on a demo and the team is going through the legal process to share with you.

    Regards,
    Krunal