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.

AM5728: VPE with Ducati decoder

Part Number: AM5728

Hello,

I have some query regarding decoder and VPE. I have listdown it as below:

1). What will be the output image-format of ducati decoder?

2). If i want to convert decoded format to BGR24 usng VPE. How can i do that?

Regards,
Kishan Patel.

  • Hello,

    kishan patel14 said:
    1). What will be the output image-format of ducati decoder?r??


    I guess you are asking for gst ducatih264dec, the format is NV12

    kishan patel14 said:
    2). If i want to convert decoded format to BGR24 usng VPE. How can i do that?


    Please check VPE user guide:
    software-dl.ti.com/.../Foundational_Components_Kernel_Drivers.html

    Vpe itself is capable of converting to RGB but gstvpe element does not but you could add this support to gstreamervpe element.

    BR
    Margarita
  • Hello Margarita,
    Thanks for reply.
    "Vpe itself is capable of converting to RGB but gstvpe element does not but you could add this support to gstreamervpe element."
    How can i do?

    Regards,
    Kishan Patel.
  • Hello Kishan,

    Please could you let me know for which one you are asking - VPE m2m IP in the linux kernel or for gstreamer VPE element?


    BR
    Margarita
  • Hello Margarita,
    I simply want to do like convert NV12 data to RGB24. Can i?
    What should be required steps to do that?

    Regards,
    Kishan Patel.
  • Hello,

    Please check the VPE guide, there is chapter "Testing the driver" with example.

    But if you want to use Gstreamer VPE element you must add RGB support on the output.
    The Gstreamer VPE element supports on the output NV12, YUY2 and YUYV.

    BR
    Margarita
  • Hello Margarita,
    Thanks for guiding me.
    So, how can i add RGB support on the output?
    Regards,
    Kishan Patel.
  • Hello Margarita,
    Are you talking about like use gstreamer api by including some caps and elements as below:
    "rtspsrc location=rtsp://admin:jenex#2018@192.168.1.108:554 latency=150 sync=false ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! video/x-raw,format=(string)BGR ! appsink name=sink sync=false"

    Am i right? or are you talking about something else?

    Regards,
    Kishan Patel.
  • Hello,

    Could you provide more details how you want to use VPE? Do you want to use it in gstreamer or you want just to test VPE kernel driver(testvpem2m demo) or to test it with another demo?
    So I could you provide you the right information.

    BR
    Margarita
  • Hello Margarita,
    Actually, i want to make simple application like capture data from the on board-camera(mt9t111 output: "yuv" as till i know) and convert that frame to the "RGB" format.
    So, first i have to test it using demo/command.
    Then we can implement application.

    Regards,
    Kishan Patel.
  • Hello,

    Okay.

    1. So first you could try testvpem2m there is an example of just scaling/colorspace-converting a progressive 640x480 nv12 clip to a smaller resolution rgb clip:

    $ ./testvpem2m 640_480p.nv12 640 480 nv12 360_240p.rgb24 360 240 rgb24 0 3

    You could find more information regarding this example here:
    software-dl.ti.com/.../Foundational_Components_Kernel_Drivers.html

    2. Here is e2e thread that you could check :
    e2e.ti.com/.../660340
    This thread is for capturevpedisplay demo and how to add rgb24 support to this demo.

    3. Gstreamer case this support could be add since the default gstreamer VPE element does not support this.

    Hope this informations helps you.

    BR
    Margarita

  • Hello Margarita,
    I have checked above link and following steps as below:
    1)cd ti-processor-sdk-linux-am57xxevm-05.00.00.15/board-support/linux-4.14.40+gitAUTONIC+4796173fc5-g4796173fc5
    2)sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
    3) sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- tisdk_am57xx-evm_defconfig
    4)sudo make ARCH=arm menuconfig (And enable VPE as per provided steps in a guide)
    5)sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage
    6)sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules
    7)sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- headers-install


    But after 5th step i got error as below:

    WARNING: EXPORT symbol "__hyp_stub_vectors" [vmlinux] version generation failed, symbol will not be versioned.
    KSYM .tmp_kallsyms1.o
    KSYM .tmp_kallsyms2.o
    LD vmlinux
    SORTEX vmlinux
    SYSMAP System.map
    OBJCOPY arch/arm/boot/Image
    Kernel: arch/arm/boot/Image is ready
    LDS arch/arm/boot/compressed/vmlinux.lds
    AS arch/arm/boot/compressed/head.o
    LZMA arch/arm/boot/compressed/piggy_data
    lzma: (stdin): Cannot allocate memory
    arch/arm/boot/compressed/Makefile:187: recipe for target 'arch/arm/boot/compressed/piggy_data' failed
    make[2]: *** [arch/arm/boot/compressed/piggy_data] Error 1
    arch/arm/boot/Makefile:53: recipe for target 'arch/arm/boot/compressed/vmlinux' failed
    make[1]: *** [arch/arm/boot/compressed/vmlinux] Error 2
    arch/arm/Makefile:336: recipe for target 'zImage' failed
    make: *** [zImage] Error 2

    Regards,
    Kishan Patel.
  • Hello,

    The VPE is enable by default.
    You do not need to execute these steps. Just use the default PSDK.
    You could directly try the vpe test demo.

    Best Regards,
    Margarita
  • Hello Margarita,
    Okay.
    So, how can i test vpe demo.
    I have also clone code from "git://git.ti.com/vpe_tests/vpe_tests.git".
    Then execute "make install".

    But i got error as below:

    root@am57xx-evm:~/vpe_tests# make install
    gcc -g -Wall -I/uapi -I -c -o vpetest.o vpetest.c
    gcc -g -Wall -I/uapi -I vpetest.o -o testvpem2m
    gcc: fatal error: no input files
    compilation terminated.
    make: *** [Makefile:13: testvpem2m] Error 1
    root@am57xx-evm:

    Regards,
    Kishan Patel.
  • Hello,

    NO. Please check under /usr/bin or MACHINE=am57xx-evm bitbake vpe-tests and cp testvpem2m demo.
    After that execute ./testvpem2m 640_480p.nv12 640 480 nv12 360_240p.rgb24 360 240 rgb24 0 3.

    BR
    Margarita
  • Hello Margarita,
    I can find 2 files at /usr/bin.
    They are:
    1)capturevpedisplay
    2)filevpedisplay

    Regards,
    Kishan Patel.
  • Hello,

    I am sorry Kishan you were using PSDK5.0 right?

    If yes, please you could use test-v4l2-m2m.

    Here is the command :

    root@am57xx-evm:~# test-v4l2-m2m /dev/video0 /usr/share/ti/video/airshow_p352x288.yuv 352 288 nv12 airshow1.rgb 720 480 rgb24 0 1 40

    root@am57xx-evm:~# ls
    airshow1.rgb tibt

    Best Regards,
    Margarita
  • Hello Margarita,
    Yes. I have executed above command. Please, check the below log:

    root@am57xx-evm:~# test-v4l2-m2m /dev/video1 /usr/share/ti/video/airshow_p352x288.yuv 352 288 nv12 airshow1.rgb 720 480 rgb24 0 1 40
    Input @ 3 = 352 x 288 , 842094158
    Output @ 4 = 720 x 480 , 859981650
    Cant set color format
    : Invalid argument
    root@am57xx-evm:~# ls /dev/video*
    /dev/video0 /dev/video1 /dev/video10 /dev/video11
    root@am57xx-evm:~# test-v4l2-m2m /dev/video0 /usr/share/ti/video/airshow_p352x288.yuv 352 288 nv12 airshow1.rgb 720 480 rgb24 0 1 40
    Input @ 3 = 352 x 288 , 842094158
    Output @ 4 = 720 x 480 , 859981650
    S_CTRL success
    query buf, plane 0 = 101376, plane 1 = 50688
    query buf, plane 0 = 101376, plane 1 = 50688
    query buf, plane 0 = 101376, plane 1 = 50688
    query buf, plane 0 = 101376, plane 1 = 50688
    query buf, plane 0 = 101376, plane 1 = 50688
    query buf, plane 0 = 101376, plane 1 = 50688
    query buf, plane 0 = 1036800, plane 1 = 50688
    query buf, plane 0 = 1036800, plane 1 = 50688
    query buf, plane 0 = 1036800, plane 1 = 50688
    query buf, plane 0 = 1036800, plane 1 = 50688
    query buf, plane 0 = 1036800, plane 1 = 50688
    query buf, plane 0 = 1036800, plane 1 = 50688
    Input Buffers = 6 each of size 101376
    Output Buffers = 6 each of size 1036800
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued source buffer with index 0
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 0
    Latency = 22718usTotal bytes written Y plane = 1036800
    frames left 39
    dequeued source buffer with index 1
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 1
    Latency = 58427usTotal bytes written Y plane = 1036800
    frames left 38
    dequeued source buffer with index 2
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 2
    Latency = 91624usTotal bytes written Y plane = 1036800
    frames left 37
    dequeued source buffer with index 3
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 3
    Latency = 124302usTotal bytes written Y plane = 1036800
    frames left 36
    dequeued source buffer with index 4
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 4
    Latency = 157365usTotal bytes written Y plane = 1036800
    frames left 35
    dequeued source buffer with index 5
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 5
    Latency = 190189usTotal bytes written Y plane = 1036800
    frames left 34
    dequeued source buffer with index 0
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 0
    Latency = 225769usTotal bytes written Y plane = 1036800
    frames left 33
    dequeued source buffer with index 1
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 1
    Latency = 223316usTotal bytes written Y plane = 1036800
    frames left 32
    dequeued source buffer with index 2
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 2
    Latency = 222686usTotal bytes written Y plane = 1036800
    frames left 31
    dequeued source buffer with index 3
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 3
    Latency = 222857usTotal bytes written Y plane = 1036800
    frames left 30
    dequeued source buffer with index 4
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 4
    Latency = 222998usTotal bytes written Y plane = 1036800
    frames left 29
    dequeued source buffer with index 5
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 5
    Latency = 222918usTotal bytes written Y plane = 1036800
    frames left 28
    dequeued source buffer with index 0
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 0
    Latency = 223283usTotal bytes written Y plane = 1036800
    frames left 27
    dequeued source buffer with index 1
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 1
    Latency = 223056usTotal bytes written Y plane = 1036800
    frames left 26
    dequeued source buffer with index 2
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 2
    Latency = 223111usTotal bytes written Y plane = 1036800
    frames left 25
    dequeued source buffer with index 3
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 3
    Latency = 223161usTotal bytes written Y plane = 1036800
    frames left 24
    dequeued source buffer with index 4
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 4
    Latency = 222860usTotal bytes written Y plane = 1036800
    frames left 23
    dequeued source buffer with index 5
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 5
    Latency = 222931usTotal bytes written Y plane = 1036800
    frames left 22
    dequeued source buffer with index 0
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 0
    Latency = 223384usTotal bytes written Y plane = 1036800
    frames left 21
    dequeued source buffer with index 1
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 1
    Latency = 222805usTotal bytes written Y plane = 1036800
    frames left 20
    dequeued source buffer with index 2
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 2
    Latency = 1226933usTotal bytes written Y plane = 1036800
    frames left 19
    dequeued source buffer with index 3
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 3
    Latency = 1226732usTotal bytes written Y plane = 1036800
    frames left 18
    dequeued source buffer with index 4
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 4
    Latency = 1226547usTotal bytes written Y plane = 1036800
    frames left 17
    dequeued source buffer with index 5
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 5
    Latency = 1226787usTotal bytes written Y plane = 1036800
    frames left 16
    dequeued source buffer with index 0
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 0
    Latency = 1220590usTotal bytes written Y plane = 1036800
    frames left 15
    dequeued source buffer with index 1
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 1
    Latency = 1226758usTotal bytes written Y plane = 1036800
    frames left 14
    dequeued source buffer with index 2
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 2
    Latency = 223055usTotal bytes written Y plane = 1036800
    frames left 13
    dequeued source buffer with index 3
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 3
    Latency = 223327usTotal bytes written Y plane = 1036800
    frames left 12
    dequeued source buffer with index 4
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 4
    Latency = 223719usTotal bytes written Y plane = 1036800
    frames left 11
    dequeued source buffer with index 5
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 5
    Latency = 223856usTotal bytes written Y plane = 1036800
    frames left 10
    dequeued source buffer with index 0
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 0
    Latency = 223956usTotal bytes written Y plane = 1036800
    frames left 9
    dequeued source buffer with index 1
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 1
    Latency = 223983usTotal bytes written Y plane = 1036800
    frames left 8
    dequeued source buffer with index 2
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 2
    Latency = 223512usTotal bytes written Y plane = 1036800
    frames left 7
    dequeued source buffer with index 3
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 3
    Latency = 223204usTotal bytes written Y plane = 1036800
    frames left 6
    dequeued source buffer with index 4
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 4
    Latency = 222900usTotal bytes written Y plane = 1036800
    frames left 5
    dequeued source buffer with index 5
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 5
    Latency = 221811usTotal bytes written Y plane = 1036800
    frames left 4
    dequeued source buffer with index 0
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 0
    Latency = 221113usTotal bytes written Y plane = 1036800
    frames left 3
    dequeued source buffer with index 1
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 1
    Latency = 255821usTotal bytes written Y plane = 1036800
    frames left 2
    dequeued source buffer with index 2
    Total bytes read Y plane = 101376
    Total bytes read UV plane = 50688
    dequeued dest buffer with index 2
    Latency = 256544usTotal bytes written Y plane = 1036800
    frames left 1
    dequeued source buffer with index 3
    dequeued dest buffer with index 3
    Latency = 255830usTotal bytes written Y plane = 1036800
    frames left 0
    root@am57xx-evm:~# ls
    Chapter8_FaceRecognition deploy-ipks people-walking-in-nyc-3_-JLkZ7DgH_lower.mov
    MyVdeoFFmpeg.avi ffmpeg-tutorial test_rtsp_live555_opencv.cpp
    Rtsp-live555-Ffmpeg-opencv ffmpeg_test.cpp tibt
    Testing gst_pipr vpe_tests
    Vim live555 xyz.mp4
    airshow1.rgb output.avi
    root@am57xx-evm:~#


    Regards,
    Kishan Patel.
  • Hello Margarita,
    Thanks for reply.
    Now, how can i use it in a program means like i am capturing raw data in NV12 format and then want to convert it in BGR using VPE. Can i? How can i use it?.

    Regards,
    Kishan Patel.
  • Hello,

    You asked how you could test nv12->rgb via VPE. test-v4l2-m2m is just a demo  to test VPE. You could try to check the new .rgb file on PC if you want.

    You could also try capturevpedisplay demo. This demo is under /usr/bin

    But first please check this thread, Manisha's answer.

    https://e2e.ti.com/support/arm/sitara_arm/f/791/t/660340

    and apply changes.

    Here is how you could build this demo:

    MACHINE=am57xx-evm bitbake omapdrmtest

    You could try to use gsreamer vpe plugin but at this moment this plugin does not support rgb on the output. But since the VPE low level driver support it, it is possible to add this support for gstreamer vpe plugin.

    Here is the command how you could build gstreamer vpe plugin :

    MACHINE=am57xx-evm bitbake gstreamer1.0-plugins-vpe

    If you make change in the code you must rebuild and cp to the board. Here is the command for this:

    MACHINE=am57xx-evm bitbake <recipe> --force -c compile

    Hope this helps.

    BR
    Margarita

  • Hello Margarita,
    Thanks.
    So, can i use "ducatih264decvpe" in gstreamer api?
    Meanse if i use below command, its working properly:

    gst-launch-1.0 -v rtspsrc location=rtsp://888888:888888@192.168.1.5:554 ! rtph264depay ! h264parse ! ducatih264dec ! videoconvert ! waylandsnk sync=false

    Now, how can use VPE in this command?

    I have tried as below:
    gst-launch-1.0 -v rtspsrc location=rtsp://888888:888888@192.168.1.5:554 ! rtph264depay ! h264parse ! ducatih264decvpe ! waylandsnk sync=false

    But, i could not.

    Regards,
    Kishan Patel.
  • Hello,

    As I said gstreamer vpe element does not support rgb on his output. But You could add this support.

    Best Regards,

    Margarita

  • Hello Margarita,
    I have also 2 other apis as below:
    1).gst-launch-1.0 -v rtspsrc location=rtsp://888888:888888@192.168.1.5:554 ! rtph264depay ! h264parse ! ducatih264decvpe ! 'video/x-raw, format=(string)NV12, width=(int)800, height=(int)600' ! waylandsink
    2).gst-launch-1.0 -v rtspsrc location=rtsp://888888:888888@192.168.1.5:554 ! rtph264depay ! h264parse ! ducatih264decvpe ! 'video/x-raw, format=(string)BGR, width=(int)800, height=(int)600' ! waylandsink


    So, here 1st one is working properly and 2nd one is not working.
    So, thats why are you saying that BGR is not supported?
    If yes, Then what should i follow the steps?

    Regards,
    Kishan Patel.
  • Hello,

    kishan patel14 said:
    So, thats why are you saying that BGR is not supported?

    you must add this support in the gstvpe code!

    Look into the gstvpe.c file, there you will see that :

    static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
        GST_PAD_SRC,
        GST_PAD_ALWAYS,
        GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("NV12")
            ";" GST_VIDEO_CAPS_MAKE ("YUYV")
            ";" GST_VIDEO_CAPS_MAKE ("YUY2")));

    There is no RGB.

    But you could make changes in gstvpe.c file to support this.

    On first look you must add in this function static GstStaticPadTemplate src_factory  RGB.

    In this one gst_vpe_fourcc_to_pixelformat also.

    Check these function gst_vpe_set_output_caps.

    In gstvpebuffer.c check gst_vpe_buffer_new and gst_vpe_buffer_priv functions.

    I would recommend you to check how the other formats are added and to dig deeper in gstreamer vpe element.

    Hope this helps.

    BR
    Margarita

  • Hello Margarita,
    Thanks for reply.
    Actually, i could not find "gstvpe.c" file.

    Regards,
    Kishan Patel.
  • Hello Margarita,
    I have also one doubt about VPE.
    In gstreamer plugin vpe could not provide output in BGR foremat. So, how can demo-application has convert YUV to RGB format?.
    Means what has been used by that demo-app?

    Regards,
    Kishan Patel.
  • Hello,

    MACHINE=am57xx-evm bitbake gstreamer1.0-plugins-vpe

    /tisdk/build/arago-tmp-external-linaro-toolchain/work/am57xx_evm-linux-gnueabi/gstreamer1.0-plugins-vpe/git-rx.xx/git/src
    The both files are there.

    BR
    Margarita
  • Hello Margarita,
    Okay, I am doing bitbake.
    In parallel time can you provide me actual steps to follow after bitbake,please.
    I have understand that i have to add RGB in one file. But i could not get all steps properly.

    Regards,
    Kishan Patel.
  • Hello,

    Please check previous answer again they are two files, gstvpe.c and gstvpebuffer.c not one.
    I have pointed you some of the functions that you could change in order to add this support.
    Note: I will be OoO next week so here is what you could add to debug gstvpe --gst-debug=vpe:3 you could raise the level of debug of course.

    BR
    Margarita
  • Hello Margarita,
    I have completed bitbake process and could not find sorce file.
    I have got 3 ipks as below:
    1)gstreamer1.0-plugins-vpe-dbg_git-r2.19_am57xx_evm.ipk
    2)gstreamer1.0-plugins-vpe-dev_git-r2.19_am57xx_evm.ipk
    3)gstreamer1.0-plugins-vpe_git-r2.19_am57xx_evm.ipk

    Regards,
    Kishan Patel.
  • Hello,

    This is the path :
    /tisdk/build/arago-tmp-external-linaro-toolchain/work/am57xx_evm-linux-gnueabi/gstreamer1.0-plugins-vpe/git-rx.xx/git/src

    Please, I already linked this in some of previous posts.

    BR
    Margarita

  • Hello Margarita,
    After completion of bitbake, I have execute opkg install command and installing ipks. Please, check the below log:

    root@am57xx-evm:~/GST_VPE_IPK# opkg install gstreamer1.0-plugins-vpe-dbg_git-r2.19_am57xx_evm.ipk
    Installing gstreamer1.0-plugins-vpe-dbg (git) on root
    Configuring gstreamer1.0-plugins-vpe-dbg.
    root@am57xx-evm:~/GST_VPE_IPK# opkg install gstreamer1.0-plugins-vpe-dev_git-r2.19_am57xx_evm.ipk

    Collected errors:
    * Solver encountered 1 problem(s):
    * Problem 1/1:
    * - nothing provides gstreamer1.0-plugins-vpe = git-r2.19 needed by gstreamer1.0-plugins-vpe-dev-git-r2.19.am57xx_evm
    *
    * Solution 1:
    * - do not ask to install gstreamer1.0-plugins-vpe-dev-git-r2.19.am57xx_evm

    root@am57xx-evm:~/GST_VPE_IPK# opkg install gstreamer1.0-plugins-vpe_git-r2.19_am57xx_evm.ipk
    Installing gstreamer1.0-plugins-vpe (git) on root
    Configuring gstreamer1.0-plugins-vpe.
    root@am57xx-evm:~/GST_VPE_IPK#

    Regards,
    Kishan Patel.
  • Hello Margarita,
    Actually, I had installed ipks after bitbake and i can find that source file also on board.

    Regards,
    Kishan Patel.
  • Hello,

    The source code is on your PC.
    You should not install gstreamer-vpe plugin since it is already included in PSDK.
    Please, find the source code in /tisdk/build/arago-tmp-external-linaro-toolchain/work/am57xx_evm-linux-gnueabi/gstreamer1.0-plugins-vpe/git-rx.xx/git/src
    When you make your changes you must rebuild the plugin by using this command:
    MACHINE=am57xx-evm bitbake gstreamer1.0-plugins-vpe --force -c compile
    The new gstvpe lib you could find here:
    /tisdk/build/arago-tmp-external-linaro-toolchain/work/am57xx_evm-linux-gnueabi/gstreamer1.0-plugins-vpe/git-r2.19/git/src/.libs
    The name is libgstvpe.so.
    If you could not find .libs folder please press ctrl+h to see it.
    After that you must copy the new libgstvpe.so lib on the board under this path /usr/lib/gstreamer-1.0
    You could test this with simple pipeline - gst-launch-1.0 videotestsrc ! <capsfilter> ! vpe ! <capsfilter> ! fakesink silent=false -e -v

    BR
    Margarita

  • Hello Margarita,
    Thank you. I can find source file. I have modified "gstvpe.c" file as below:

    static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
    GST_PAD_SRC,
    GST_PAD_ALWAYS,
    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("NV12")
    ";" GST_VIDEO_CAPS_MAKE ("YUYV")
    ";" GST_VIDEO_CAPS_MAKE ("RGB")
    ";" GST_VIDEO_CAPS_MAKE ("YUY2")));


    static int
    gst_vpe_fourcc_to_pixelformat (guint32 fourcc)
    {
    switch (fourcc) {
    case GST_MAKE_FOURCC ('Y', 'U', 'Y', '2'):
    case GST_MAKE_FOURCC ('Y', 'U', 'Y', 'V'):
    return V4L2_PIX_FMT_YUYV;
    case GST_MAKE_FOURCC ('N', 'V', '1', '2'):
    return V4L2_PIX_FMT_NV12;
    case GST_MAKE_FOURCC ('B', 'G', 'R', '3'):
    return V4L2_PIX_FMT_BGR24;
    }
    return -1;
    }

    Is it right?

    And i have also checked other function but i am feeling scare to modified other things.
    What should i change like what should i keep size in "gstvpebuffers.c" file?

    Regards,
    Kishan Patel.
  • Hello Margarita,
    I have also modified "gstvpebuffers.c" file as below:

    GstBuffer *
    gst_vpe_buffer_new (GstVpeBufferPool * pool, struct omap_device * dev,
    guint32 fourcc, gint width, gint height, int index, guint32 v4l2_type)
    {
    GstVPEBufferPriv *vpemeta;
    GstVideoCropMeta *crop;
    int size = 0;
    GstBuffer *buf;
    GstAllocator *allocator = gst_drm_allocator_get ();

    buf = gst_buffer_new ();
    if (!buf)
    return NULL;

    switch (fourcc) {
    case GST_MAKE_FOURCC ('A', 'R', '2', '4'):
    size = width * height * 4;
    break;
    case GST_MAKE_FOURCC ('Y', 'U', 'Y', '2'):
    case GST_MAKE_FOURCC ('Y', 'U', 'Y', 'V'):
    case GST_MAKE_FOURCC ('B', 'G', 'R', '3'):
    size = width * height * 2;
    break;
    case GST_MAKE_FOURCC ('N', 'V', '1', '2'):
    size = (width * height * 3) / 2;
    break;
    }

    and followed other steps to force-compile, replace library.

    Then execute below command:
    ===========================
    gst-launch-1.0 -v rtspsrc location=rtsp://888888:888888@192.168.1.5:554 ! rtph264depay ! h264parse ! ducatih264decvpe ! 'video/x-raw, format=(string)BGR, width=(int)800, height=(int)600' ! waylandsink

    ===========================
    gst-launch-1.0 -v rtspsrc location=rtsp://888888:888888@192.168.1.5:554 ! rtph264depay ! h264parse ! ducatih264dec ! vpe ! 'video/x-raw, format=(string)BGR, width=(int)800, height=(int)600' ! waylandsink


    But, still its not working.

    Regards,
    Kishan Patel.
  • gstvpe.c
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    /*
    * GStreamer
    * Copyright (c) 2014, Texas Instruments Incorporated
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    * License as published by the Free Software Foundation
    * version 2.1 of the License.
    *
    * This library is distributed in the hope that it will be useful,
    * but WITHOUT ANY WARRANTY; without even the implied warranty of
    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    * Lesser General Public License for more details.
    *
    * You should have received a copy of the GNU Lesser General Public
    * License along with this library; if not, write to the Free Software
    * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
    */
    #ifdef HAVE_CONFIG_H
    #include <config.h>
    #endif
    #include "gstvpe.h"
    #include <stdio.h>
    #include <stdlib.h>
    #include <fcntl.h>
    #include <unistd.h>
    #include <stdint.h>
    #include <string.h>
    #include <errno.h>
    #include <pthread.h>
    #include <sys/mman.h>
    #include <sys/ioctl.h>
    #include <libdce.h>
    #include <sched.h>
    #include <math.h>
    #ifndef MIN
    #define MIN(a,b) (((a) < (b)) ? (a) : (b))
    #endif
    #define ADD_GST_VPE_RGB_SUPPORT //Kishan
    static void gst_vpe_class_init (GstVpeClass * klass);
    static void gst_vpe_init (GstVpe * self, gpointer klass);
    static void gst_vpe_base_init (gpointer gclass);
    static GstElementClass *parent_class = NULL;
    static gboolean gst_vpe_set_output_caps (GstVpe * self);
    /*------------------------Kishan-----------------------*/
    #ifdef ADD_GST_VPE_RGB_SUPPORT
    static int
    gst_vpe_video_format_from_fourcc (guint32 fourcc)
    {
    switch (fourcc) {
    case GST_MAKE_FOURCC ('R', 'G', 'B','\0'):
    return GST_VIDEO_FORMAT_RGB;
    default:
    return gst_video_format_from_fourcc(fourcc);
    }
    return GST_VIDEO_FORMAT_UNKNOWN;
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    gstvpebuffer.c
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    /*
    * GStreamer
    * Copyright (c) 2014, Texas Instruments Incorporated
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
    * License as published by the Free Software Foundation
    * version 2.1 of the License.
    *
    * This library is distributed in the hope that it will be useful,
    * but WITHOUT ANY WARRANTY; without even the implied warranty of
    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    * Lesser General Public License for more details.
    *
    * You should have received a copy of the GNU Lesser General Public
    * License along with this library; if not, write to the Free Software
    * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
    */
    #ifdef HAVE_CONFIG_H
    #include <config.h>
    #endif
    #include "gstvpe.h"
    #include <unistd.h>
    #define AD_GST_VPE_RGB_FORMAT //Kishan
    GstVPEBufferPriv *
    gst_buffer_get_vpe_buffer_priv (GstVpeBufferPool * pool, GstBuffer * buf)
    {
    int fd_copy;
    GstMemory *mem;
    GstVPEBufferPriv *vpemeta;
    mem = gst_buffer_peek_memory (buf, 0);
    fd_copy = gst_fd_memory_get_fd (mem);
    vpemeta = g_hash_table_lookup (pool->vpebufferpriv, (gpointer) fd_copy);
    return vpemeta;
    }
    GstBuffer *
    gst_vpe_buffer_new (GstVpeBufferPool * pool, struct omap_device * dev,
    guint32 fourcc, gint width, gint height, int index, guint32 v4l2_type)
    {
    GstVPEBufferPriv *vpemeta;
    GstVideoCropMeta *crop;
    int size = 0;
    GstBuffer *buf;
    GstAllocator *allocator = gst_drm_allocator_get ();
    buf = gst_buffer_new ();
    if (!buf)
    return NULL;
    switch (fourcc) {
    case GST_MAKE_FOURCC ('A', 'R', '2', '4'):
    size = width * height * 4;
    break;
    case GST_MAKE_FOURCC ('Y', 'U', 'Y', '2'):
    case GST_MAKE_FOURCC ('Y', 'U', 'Y', 'V'):
    size = width * height * 2;
    break;
    #ifdef AD_GST_VPE_RGB_FORMAT
    case GST_MAKE_FOURCC ('B', 'G', 'R', '3'):
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    Hello Margarita,

               I have modified source file and when execute "" command. I got log as below,which shows that capabilities has been added.But still i could not get output in RGB/BGR/RGB3/BGR3 Format.

    Logs:

    ========

    gst-inspect-1.0 vpe

    Factory Details:

     Rank                     none (0)

     Long-name                vpe

     Klass                    Filter/Converter/Video

     Description              Video processing adapter

     Author                   Harinarayan Bhatta <harinarayan@ti.com>

    Plugin Details:

     Name                     vpeplugin

     Description              Hardware accelerated video porst-processing using TI VPE (V4L2-M2M) driver on DRA7x SoC

     Filename                 /usr/lib/gstreamer-1.0/libgstvpe.so

     Version                  1.0.0

     License                  LGPL

     Source module            gst-vpe

     Binary package           GStreamer

     Origin URL              

    http://gstreamer.net/

    GObject

    +----GInitiallyUnowned

          +----GstObject

                +----GstElement

                      +----GstVpe

    Pad Templates:

     SINK template: 'sink'

       Availability: Always

       Capabilities:

         video/x-raw

                    format: NV12

                     width: [ 1, 2147483647 ]

                    height: [ 1, 2147483647 ]

                 framerate: [ 0/1, 2147483647/1 ]

         video/x-raw

                    format: YUYV

                     width: [ 1, 2147483647 ]

                    height: [ 1, 2147483647 ]

                 framerate: [ 0/1, 2147483647/1 ]

         video/x-raw

                    format: BGR3

                     width: [ 1, 2147483647 ]

                    height: [ 1, 2147483647 ]

                 framerate: [ 0/1, 2147483647/1 ]

         video/x-raw

                    format: RGB3

                     width: [ 1, 2147483647 ]

                    height: [ 1, 2147483647 ]

                 framerate: [ 0/1, 2147483647/1 ]

         video/x-raw

                    format: BGR

                     width: [ 1, 2147483647 ]

                    height: [ 1, 2147483647 ]

                 framerate: [ 0/1, 2147483647/1 ]

         video/x-raw

                    format: RGB

                     width: [ 1, 2147483647 ]

                    height: [ 1, 2147483647 ]

                 framerate: [ 0/1, 2147483647/1 ]

         video/x-raw

                    format: YUY2

                     width: [ 1, 2147483647 ]

                    height: [ 1, 2147483647 ]

                 framerate: [ 0/1, 2147483647/1 ]

     SRC template: 'src'

       Availability: Always

       Capabilities:

         video/x-raw

                    format: NV12

                     width: [ 1, 2147483647 ]

                    height: [ 1, 2147483647 ]

                 framerate: [ 0/1, 2147483647/1 ]

         video/x-raw

                    format: YUYV

                     width: [ 1, 2147483647 ]

                    height: [ 1, 2147483647 ]

                 framerate: [ 0/1, 2147483647/1 ]

         video/x-raw

                    format: BGR3

                     width: [ 1, 2147483647 ]

                    height: [ 1, 2147483647 ]

                 framerate: [ 0/1, 2147483647/1 ]

         video/x-raw

                    format: RGB3

                     width: [ 1, 2147483647 ]

                    height: [ 1, 2147483647 ]

                 framerate: [ 0/1, 2147483647/1 ]

         video/x-raw

                    format: BGR

                     width: [ 1, 2147483647 ]

                    height: [ 1, 2147483647 ]

                 framerate: [ 0/1, 2147483647/1 ]

         video/x-raw

                    format: RGB

                     width: [ 1, 2147483647 ]

                    height: [ 1, 2147483647 ]

                 framerate: [ 0/1, 2147483647/1 ]

         video/x-raw

                    format: YUY2

                     width: [ 1, 2147483647 ]

                    height: [ 1, 2147483647 ]

                 framerate: [ 0/1, 2147483647/1 ]

    Element Flags:

     no flags set

    Element Implementation:

     Has change_state() function: gst_vpe_change_state

    Element has no clocking capabilities.

    Element has no URI handling capabilities.

    Pads:

     SINK: 'sink'

       Pad Template: 'sink'

     SRC: 'src'

       Pad Template: 'src'

    Element Properties:

     name                : The name of the object

                           flags: readable, writable

                           String. Default: "vpe0"

     parent              : The parent of the object

                           flags: readable, writable

                           Object of type "GstObject"

     num-input-buffers   : The number if input buffers allocated should be specified based on the upstream element's requirement. For example, if gst-ducati-plugin is the upstream element, this value should be based on max-reorder-frames property of that element. 0 => decide automatically

                           flags: readable, writable

                           Integer. Range: 0 - 128 Default: 12

     num-output-buffers  : The number if output buffers allocated should be specified based on the downstream element's requirement. It is generally set to the minimum value acceptable to the downstream element to reduce memory usage.

                           flags: readable, writable

                           Integer. Range: 3 - 16 Default: 6

     device              : Device location

                           flags: readable, writable

                           String. Default: "/dev/v4l/by-path/platform-489d0000.vpe-video-index0"

    root@am57xx-evm:~#

    I am also attaching modified source files and debug-log when execute command on machine for "NV12" and "RGB".

    log_nv12.txt
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    Setting pipeline to PAUSED ...
    Pipeline is live and does not need PREROLL ...
    Progress: (open) Opening Stream
    Progress: (connect) Connecting to rtsp://888888:888888@192.168.1.10:554/cam/realmonitor?channel=1&subtype=1 --live --fps 25
    Progress: (open) Retrieving server options
    Progress: (open) Retrieving media info
    Progress: (request) SETUP stream 0
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: latency = 2000
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: ntp-sync = false
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: rfc7273-sync = false
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: ntp-time-source = NTP time based on realtime clock
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: drop-on-latency = false
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: max-rtcp-rtp-time-diff = 1000
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: buffer-mode = Slave receiver to sender clock
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc0: timeout = 5000000000
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc0: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)64001E, sprop-parameter-sets=(string)"Z2QAHqzoFh+wEQAAAwAeAAAHCAQ\=\,aO48sA\=\=", a-packetization-supported=(string)DH, a-recvonly=(string)"", ssrc=(uint)4294945980
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc1: caps = application/x-rtcp
    Progress: (open) Opened Stream
    Setting pipeline to PLAYING ...
    New clock: GstSystemClock
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: buffer-mode = Slave receiver to sender clock
    Progress: (request) Sending PLAY request
    Progress: (request) Sending PLAY request
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc0: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)64001E, sprop-parameter-sets=(string)"Z2QAHqzoFh+wEQAAAwAeAAAHCAQ\=\,aO48sA\=\=", a-packetization-supported=(string)DH, a-recvonly=(string)"", ssrc=(uint)4294945980, clock-base=(uint)706155622, seqnum-base=(uint)5194, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
    Progress: (request) Sent PLAY request
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc1.GstPad:src: caps = application/x-rtcp
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager.GstGhostPad:recv_rtcp_sink_0.GstProxyPad:proxypad3: caps = application/x-rtcp
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager/GstFunnel:funnel1.GstFunnelPad:funnelpad1: caps = application/x-rtcp
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager.GstGhostPad:recv_rtcp_sink_0: caps = application/x-rtcp
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc0.GstPad:src: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)64001E, sprop-parameter-sets=(string)"Z2QAHqzoFh+wEQAAAwAeAAAHCAQ\=\,aO48sA\=\=", a-packetization-supported=(string)DH, a-recvonly=(string)"", ssrc=(uint)4294945980, clock-base=(uint)706155622, seqnum-base=(uint)5194, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager.GstGhostPad:recv_rtp_sink_0.GstProxyPad:proxypad2: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)64001E, sprop-parameter-sets=(string)"Z2QAHqzoFh+wEQAAAwAeAAAHCAQ\=\,aO48sA\=\=", a-packetization-supported=(string)DH, a-recvonly=(string)"", ssrc=(uint)4294945980, clock-base=(uint)706155622, seqnum-base=(uint)5194, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager/GstFunnel:funnel0.GstFunnelPad:funnelpad0: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)64001E, sprop-parameter-sets=(string)"Z2QAHqzoFh+wEQAAAwAeAAAHCAQ\=\,aO48sA\=\=", a-packetization-supported=(string)DH, a-recvonly=(string)"", ssrc=(uint)4294945980, clock-base=(uint)706155622, seqnum-base=(uint)5194, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager.GstGhostPad:recv_rtp_sink_0: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)64001E, sprop-parameter-sets=(string)"Z2QAHqzoFh+wEQAAAwAeAAAHCAQ\=\,aO48sA\=\=", a-packetization-supported=(string)DH, a-recvonly=(string)"", ssrc=(uint)4294945980, clock-base=(uint)706155622, seqnum-base=(uint)5194, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc0: timeout = 0
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager/GstFunnel:funnel0.GstPad:src: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)64001E, sprop-parameter-sets=(string)"Z2QAHqzoFh+wEQAAAwAeAAAHCAQ\=\,aO48sA\=\=", a-packetization-supported=(string)DH, a-recvonly=(string)"", ssrc=(uint)4294945980, clock-base=(uint)706155622, seqnum-base=(uint)5194, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager/GstRtpSession:rtpsession0.GstPad:recv_rtp_src: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)64001E, sprop-parameter-sets=(string)"Z2QAHqzoFh+wEQAAAwAeAAAHCAQ\=\,aO48sA\=\=", a-packetization-supported=(string)DH, a-recvonly=(string)"", ssrc=(uint)4294945980, clock-base=(uint)706155622, seqnum-base=(uint)5194, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager/GstRtpSsrcDemux:rtpssrcdemux0.GstPad:sink: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)64001E, sprop-parameter-sets=(string)"Z2QAHqzoFh+wEQAAAwAeAAAHCAQ\=\,aO48sA\=\=", a-packetization-supported=(string)DH, a-recvonly=(string)"", ssrc=(uint)4294945980, clock-base=(uint)706155622, seqnum-base=(uint)5194, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager/GstRtpSession:rtpsession0.GstPad:recv_rtp_sink: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)64001E, sprop-parameter-sets=(string)"Z2QAHqzoFh+wEQAAAwAeAAAHCAQ\=\,aO48sA\=\=", a-packetization-supported=(string)DH, a-recvonly=(string)"", ssrc=(uint)4294945980, clock-base=(uint)706155622, seqnum-base=(uint)5194, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager/GstRtpJitterBuffer:rtpjitterbuffer0.GstPad:sink: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)64001E, sprop-parameter-sets=(string)"Z2QAHqzoFh+wEQAAAwAeAAAHCAQ\=\,aO48sA\=\=", a-packetization-supported=(string)DH, a-recvonly=(string)"", ssrc=(uint)4294945980, clock-base=(uint)706155622, seqnum-base=(uint)5194, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager/GstRtpJitterBuffer:rtpjitterbuffer0.GstPad:sink: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)64001E, sprop-parameter-sets=(string)"Z2QAHqzoFh+wEQAAAwAeAAAHCAQ\=\,aO48sA\=\=", a-packetization-supported=(string)DH, a-recvonly=(string)"", ssrc=(uint)4294945980, clock-base=(uint)706155622, seqnum-base=(uint)5194, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
    /GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0.GstPad:src: caps = video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)0164001effe100146764001eace8161fb011000003001e000007080401000468ee3cb0, level=(string)3, profile=(string)high
    /GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:sink: caps = video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)0164001effe100146764001eace8161fb011000003001e000007080401000468ee3cb0, level=(string)3, profile=(string)high
    /GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0.GstPad:sink: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)64001E, sprop-parameter-sets=(string)"Z2QAHqzoFh+wEQAAAwAeAAAHCAQ\=\,aO48sA\=\=", a-packetization-supported=(string)DH, a-recvonly=(string)"", ssrc=(uint)4294945980, clock-base=(uint)706155622, seqnum-base=(uint)5194, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0.GstGhostPad:recv_rtp_src_0_4294945980_96.GstProxyPad:proxypad6: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)64001E, sprop-parameter-sets=(string)"Z2QAHqzoFh+wEQAAAwAeAAAHCAQ\=\,aO48sA\=\=", a-packetization-supported=(string)DH, a-recvonly=(string)"", ssrc=(uint)4294945980, clock-base=(uint)706155622, seqnum-base=(uint)5194, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager.GstGhostPad:recv_rtp_src_0_4294945980_96.GstProxyPad:proxypad5: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)64001E, sprop-parameter-sets=(string)"Z2QAHqzoFh+wEQAAAwAeAAAHCAQ\=\,aO48sA\=\=", a-packetization-supported=(string)DH, a-recvonly=(string)"", ssrc=(uint)4294945980, clock-base=(uint)706155622, seqnum-base=(uint)5194, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
    /GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:src: caps = video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, level=(string)3, profile=(string)high, pixel-aspect-ratio=(fraction)1/1, width=(int)352, height=(int)240, framerate=(fraction)0/1, interlace-mode=(string)progressive, parsed=(boolean)true
    /GstPipeline:pipeline0/GstDucatiH264decVpe:ducatih264decvpe0.GstGhostPad:sink.GstProxyPad:proxypad0: caps = video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, level=(string)3, profile=(string)high, pixel-aspect-ratio=(fraction)1/1, width=(int)352, height=(int)240, framerate=(fraction)0/1, interlace-mode=(string)progressive, parsed=(boolean)true
    /GstPipeline:pipeline0/GstDucatiH264decVpe:ducatih264decvpe0/GstDucatiH264Dec:decoder.GstPad:src: caps = video/x-raw, format=(string)NV12, width=(int)512, height=(int)336, framerate=(fraction)0/1, pixel-aspect-ratio=(fraction)1/1, drm_mem=(boolean)true
    /GstPipeline:pipeline0/GstDucatiH264decVpe:ducatih264decvpe0/GstVpe:vpe.GstPad:src: caps = video/x-raw, format=(string)NV12, width=(int)800, height=(int)600, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)0/1
    /GstPipeline:pipeline0/GstDucatiH264decVpe:ducatih264decvpe0.GstGhostPad:src: caps = video/x-raw, format=(string)NV12, width=(int)800, height=(int)600, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)0/1
    /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw, format=(string)NV12, width=(int)800, height=(int)600, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)0/1
    /GstPipeline:pipeline0/GstWaylandSink:waylandsink0.GstPad:sink: caps = video/x-raw, format=(string)NV12, width=(int)800, height=(int)600, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)0/1
    /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-raw, format=(string)NV12, width=(int)800, height=(int)600, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)0/1
    /GstPipeline:pipeline0/GstDucatiH264decVpe:ducatih264decvpe0.GstGhostPad:src.GstProxyPad:proxypad1: caps = video/x-raw, format=(string)NV12, width=(int)800, height=(int)600, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)0/1
    /GstPipeline:pipeline0/GstDucatiH264decVpe:ducatih264decvpe0/GstVpe:vpe.GstPad:sink: caps = video/x-raw, format=(string)NV12, width=(int)512, height=(int)336, framerate=(fraction)0/1, pixel-aspect-ratio=(fraction)1/1, drm_mem=(boolean)true
    /GstPipeline:pipeline0/GstDucatiH264decVpe:ducatih264decvpe0/GstDucatiH264Dec:decoder.GstPad:sink: caps = video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, level=(string)3, profile=(string)high, pixel-aspect-ratio=(fraction)1/1, width=(int)352, height=(int)240, framerate=(fraction)0/1, interlace-mode=(string)progressive, parsed=(boolean)true
    /GstPipeline:pipeline0/GstDucatiH264decVpe:ducatih264decvpe0.GstGhostPad:sink: caps = video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, level=(string)3, profile=(string)high, pixel-aspect-ratio=(fraction)1/1, width=(int)352, height=(int)240, framerate=(fraction)0/1, interlace-mode=(string)progressive, parsed=(boolean)true
    /GstPipeline:pipeline0/GstDucatiH264decVpe:ducatih264decvpe0/GstDucatiH264Dec:decoder.GstPad:src: caps = video/x-raw, format=(string)NV12, width=(int)512, height=(int)336, framerate=(fraction)0/1, pixel-aspect-ratio=(fraction)1/1, drm_mem=(boolean)true, max-ref-frames=(int)18
    /GstPipeline:pipeline0/GstDucatiH264decVpe:ducatih264decvpe0/GstVpe:vpe.GstPad:src: caps = video/x-raw, format=(string)NV12, width=(int)800, height=(int)600, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)0/1
    /GstPipeline:pipeline0/GstDucatiH264decVpe:ducatih264decvpe0.GstGhostPad:src: caps = video/x-raw, format=(string)NV12, width=(int)800, height=(int)600, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)0/1
    /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-raw, format=(string)NV12, width=(int)800, height=(int)600, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)0/1
    /GstPipeline:pipeline0/GstDucatiH264decVpe:ducatih264decvpe0.GstGhostPad:src.GstProxyPad:proxypad1: caps = video/x-raw, format=(string)NV12, width=(int)800, height=(int)600, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)0/1
    /GstPipeline:pipeline0/GstDucatiH264decVpe:ducatih264decvpe0/GstVpe:vpe.GstPad:sink: caps = video/x-raw, format=(string)NV12, width=(int)512, height=(int)336, framerate=(fraction)0/1, pixel-aspect-ratio=(fraction)1/1, drm_mem=(boolean)true, max-ref-frames=(int)18
    /GstPipeline:pipeline0/GstDucatiH264decVpe:ducatih264decvpe0/GstVpe:vpe.GstPad:src: caps = video/x-raw, format=(string)NV12, width=(int)800, height=(int)600, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)0/1
    /GstPipeline:pipeline0/GstDucatiH264decVpe:ducatih264decvpe0.GstGhostPad:src: caps = video/x-raw, format=(string)NV12, width=(int)800, height=(int)600, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)0/1
    0:00:01.352406180 2360 0x21fdb0 WARN vpe gstvpebufferpool.c:471:gst_vpe_buffer_pool_import: Allocating a new input buffer index: 0/128, 0
    /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-raw, format=(string)NV12, width=(int)800, height=(int)600, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)0/1
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    log_rgb.txt
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    Setting pipeline to PAUSED ...
    Pipeline is live and does not need PREROLL ...
    Progress: (open) Opening Stream
    Progress: (connect) Connecting to rtsp://888888:888888@192.168.1.10:554/cam/realmonitor?channel=1&subtype=1 --live --fps 25
    Progress: (open) Retrieving server options
    Progress: (open) Retrieving media info
    Progress: (request) SETUP stream 0
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: latency = 2000
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: ntp-sync = false
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: rfc7273-sync = false
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: ntp-time-source = NTP time based on realtime clock
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: drop-on-latency = false
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: max-rtcp-rtp-time-diff = 1000
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: buffer-mode = Slave receiver to sender clock
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc1: timeout = 5000000000
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc1: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)64001E, sprop-parameter-sets=(string)"Z2QAHqzoFh+wEQAAAwAeAAAHCAQ\=\,aO48sA\=\=", a-packetization-supported=(string)DH, a-recvonly=(string)"", ssrc=(uint)4294945980
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc2: caps = application/x-rtcp
    Progress: (open) Opened Stream
    Setting pipeline to PLAYING ...
    New clock: GstSystemClock
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: buffer-mode = Slave receiver to sender clock
    Progress: (request) Sending PLAY request
    Progress: (request) Sending PLAY request
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc1: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)64001E, sprop-parameter-sets=(string)"Z2QAHqzoFh+wEQAAAwAeAAAHCAQ\=\,aO48sA\=\=", a-packetization-supported=(string)DH, a-recvonly=(string)"", ssrc=(uint)4294945980, clock-base=(uint)706601032, seqnum-base=(uint)5607, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
    Progress: (request) Sent PLAY request
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc1.GstPad:src: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)64001E, sprop-parameter-sets=(string)"Z2QAHqzoFh+wEQAAAwAeAAAHCAQ\=\,aO48sA\=\=", a-packetization-supported=(string)DH, a-recvonly=(string)"", ssrc=(uint)4294945980, clock-base=(uint)706601032, seqnum-base=(uint)5607, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager.GstGhostPad:recv_rtp_sink_0.GstProxyPad:proxypad2: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)64001E, sprop-parameter-sets=(string)"Z2QAHqzoFh+wEQAAAwAeAAAHCAQ\=\,aO48sA\=\=", a-packetization-supported=(string)DH, a-recvonly=(string)"", ssrc=(uint)4294945980, clock-base=(uint)706601032, seqnum-base=(uint)5607, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager/GstFunnel:funnel0.GstFunnelPad:funnelpad0: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)64001E, sprop-parameter-sets=(string)"Z2QAHqzoFh+wEQAAAwAeAAAHCAQ\=\,aO48sA\=\=", a-packetization-supported=(string)DH, a-recvonly=(string)"", ssrc=(uint)4294945980, clock-base=(uint)706601032, seqnum-base=(uint)5607, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager.GstGhostPad:recv_rtp_sink_0: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)64001E, sprop-parameter-sets=(string)"Z2QAHqzoFh+wEQAAAwAeAAAHCAQ\=\,aO48sA\=\=", a-packetization-supported=(string)DH, a-recvonly=(string)"", ssrc=(uint)4294945980, clock-base=(uint)706601032, seqnum-base=(uint)5607, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc2.GstPad:src: caps = application/x-rtcp
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager.GstGhostPad:recv_rtcp_sink_0.GstProxyPad:proxypad3: caps = application/x-rtcp
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager/GstFunnel:funnel1.GstFunnelPad:funnelpad1: caps = application/x-rtcp
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager.GstGhostPad:recv_rtcp_sink_0: caps = application/x-rtcp
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc1: timeout = 0
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager/GstFunnel:funnel0.GstPad:src: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)64001E, sprop-parameter-sets=(string)"Z2QAHqzoFh+wEQAAAwAeAAAHCAQ\=\,aO48sA\=\=", a-packetization-supported=(string)DH, a-recvonly=(string)"", ssrc=(uint)4294945980, clock-base=(uint)706601032, seqnum-base=(uint)5607, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager/GstRtpSession:rtpsession0.GstPad:recv_rtp_src: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)64001E, sprop-parameter-sets=(string)"Z2QAHqzoFh+wEQAAAwAeAAAHCAQ\=\,aO48sA\=\=", a-packetization-supported=(string)DH, a-recvonly=(string)"", ssrc=(uint)4294945980, clock-base=(uint)706601032, seqnum-base=(uint)5607, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager/GstRtpSsrcDemux:rtpssrcdemux0.GstPad:sink: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)64001E, sprop-parameter-sets=(string)"Z2QAHqzoFh+wEQAAAwAeAAAHCAQ\=\,aO48sA\=\=", a-packetization-supported=(string)DH, a-recvonly=(string)"", ssrc=(uint)4294945980, clock-base=(uint)706601032, seqnum-base=(uint)5607, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager/GstRtpSession:rtpsession0.GstPad:recv_rtp_sink: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)64001E, sprop-parameter-sets=(string)"Z2QAHqzoFh+wEQAAAwAeAAAHCAQ\=\,aO48sA\=\=", a-packetization-supported=(string)DH, a-recvonly=(string)"", ssrc=(uint)4294945980, clock-base=(uint)706601032, seqnum-base=(uint)5607, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager/GstRtpJitterBuffer:rtpjitterbuffer0.GstPad:sink: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)64001E, sprop-parameter-sets=(string)"Z2QAHqzoFh+wEQAAAwAeAAAHCAQ\=\,aO48sA\=\=", a-packetization-supported=(string)DH, a-recvonly=(string)"", ssrc=(uint)4294945980, clock-base=(uint)706601032, seqnum-base=(uint)5607, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager/GstRtpJitterBuffer:rtpjitterbuffer0.GstPad:sink: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)64001E, sprop-parameter-sets=(string)"Z2QAHqzoFh+wEQAAAwAeAAAHCAQ\=\,aO48sA\=\=", a-packetization-supported=(string)DH, a-recvonly=(string)"", ssrc=(uint)4294945980, clock-base=(uint)706601032, seqnum-base=(uint)5607, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager/GstRtpPtDemux:rtpptdemux0.GstPad:sink: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)64001E, sprop-parameter-sets=(string)"Z2QAHqzoFh+wEQAAAwAeAAAHCAQ\=\,aO48sA\=\=", a-packetization-supported=(string)DH, a-recvonly=(string)"", ssrc=(uint)4294945980, clock-base=(uint)706601032, seqnum-base=(uint)5607, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
    /GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0.GstPad:src: caps = video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)0164001effe100146764001eace8161fb011000003001e000007080401000468ee3cb0, level=(string)3, profile=(string)high
    /GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:sink: caps = video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)0164001effe100146764001eace8161fb011000003001e000007080401000468ee3cb0, level=(string)3, profile=(string)high
    /GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0.GstPad:sink: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)64001E, sprop-parameter-sets=(string)"Z2QAHqzoFh+wEQAAAwAeAAAHCAQ\=\,aO48sA\=\=", a-packetization-supported=(string)DH, a-recvonly=(string)"", ssrc=(uint)4294945980, clock-base=(uint)706601032, seqnum-base=(uint)5607, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0.GstGhostPad:recv_rtp_src_0_4294945980_96.GstProxyPad:proxypad6: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)64001E, sprop-parameter-sets=(string)"Z2QAHqzoFh+wEQAAAwAeAAAHCAQ\=\,aO48sA\=\=", a-packetization-supported=(string)DH, a-recvonly=(string)"", ssrc=(uint)4294945980, clock-base=(uint)706601032, seqnum-base=(uint)5607, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
    /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager.GstGhostPad:recv_rtp_src_0_4294945980_96.GstProxyPad:proxypad5: caps = application/x-rtp, media=(string)video, payload=(int)96, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)64001E, sprop-parameter-sets=(string)"Z2QAHqzoFh+wEQAAAwAeAAAHCAQ\=\,aO48sA\=\=", a-packetization-supported=(string)DH, a-recvonly=(string)"", ssrc=(uint)4294945980, clock-base=(uint)706601032, seqnum-base=(uint)5607, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1
    /GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:src: caps = video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, level=(string)3, profile=(string)high, pixel-aspect-ratio=(fraction)1/1, width=(int)352, height=(int)240, framerate=(fraction)0/1, interlace-mode=(string)progressive, parsed=(boolean)true
    /GstPipeline:pipeline0/GstDucatiH264decVpe:ducatih264decvpe0.GstGhostPad:sink.GstProxyPad:proxypad0: caps = video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, level=(string)3, profile=(string)high, pixel-aspect-ratio=(fraction)1/1, width=(int)352, height=(int)240, framerate=(fraction)0/1, interlace-mode=(string)progressive, parsed=(boolean)true
    /GstPipeline:pipeline0/GstDucatiH264decVpe:ducatih264decvpe0/GstDucatiH264Dec:decoder.GstPad:src: caps = video/x-raw, format=(string)NV12, width=(int)512, height=(int)336, framerate=(fraction)0/1, pixel-aspect-ratio=(fraction)1/1, drm_mem=(boolean)true
    (gst-launch-1.0:2374): GStreamer-CRITICAL **: gst_caps_get_structure: assertion 'index < GST_CAPS_LEN (caps)' failed
    (gst-launch-1.0:2374): GStreamer-CRITICAL **: gst_structure_get_string: assertion 'structure != NULL' failed
    /GstPipeline:pipeline0/GstDucatiH264decVpe:ducatih264decvpe0/GstVpe:vpe.GstPad:src: caps = video/x-raw, format=(string)NV12, width=(int)512, height=(int)336, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)0/1
    /GstPipeline:pipeline0/GstDucatiH264decVpe:ducatih264decvpe0/GstVpe:vpe.GstPad:sink: caps = video/x-raw, format=(string)NV12, width=(int)512, height=(int)336, framerate=(fraction)0/1, pixel-aspect-ratio=(fraction)1/1, drm_mem=(boolean)true
    /GstPipeline:pipeline0/GstDucatiH264decVpe:ducatih264decvpe0/GstDucatiH264Dec:decoder.GstPad:sink: caps = video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, level=(string)3, profile=(string)high, pixel-aspect-ratio=(fraction)1/1, width=(int)352, height=(int)240, framerate=(fraction)0/1, interlace-mode=(string)progressive, parsed=(boolean)true
    /GstPipeline:pipeline0/GstDucatiH264decVpe:ducatih264decvpe0.GstGhostPad:sink: caps = video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, level=(string)3, profile=(string)high, pixel-aspect-ratio=(fraction)1/1, width=(int)352, height=(int)240, framerate=(fraction)0/1, interlace-mode=(string)progressive, parsed=(boolean)true
    /GstPipeline:pipeline0/GstDucatiH264decVpe:ducatih264decvpe0/GstDucatiH264Dec:decoder.GstPad:src: caps = video/x-raw, format=(string)NV12, width=(int)512, height=(int)336, framerate=(fraction)0/1, pixel-aspect-ratio=(fraction)1/1, drm_mem=(boolean)true, max-ref-frames=(int)18
    (gst-launch-1.0:2374): GStreamer-CRITICAL **: gst_caps_get_structure: assertion 'index < GST_CAPS_LEN (caps)' failed
    (gst-launch-1.0:2374): GStreamer-CRITICAL **: gst_structure_get_string: assertion 'structure != NULL' failed
    /GstPipeline:pipeline0/GstDucatiH264decVpe:ducatih264decvpe0/GstVpe:vpe.GstPad:src: caps = video/x-raw, format=(string)NV12, width=(int)512, height=(int)336, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)0/1
    /GstPipeline:pipeline0/GstDucatiH264decVpe:ducatih264decvpe0/GstVpe:vpe.GstPad:sink: caps = video/x-raw, format=(string)NV12, width=(int)512, height=(int)336, framerate=(fraction)0/1, pixel-aspect-ratio=(fraction)1/1, drm_mem=(boolean)true, max-ref-frames=(int)18
    (gst-launch-1.0:2374): GStreamer-CRITICAL **: gst_caps_get_structure: assertion 'index < GST_CAPS_LEN (caps)' failed
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Regards,

    Kishan Patel.

  • Hello Margarita,

               I have modified "grammar.y" file at path "tisdk/build/arago-tmp-external-linaro-toolchain/work/armv7ahf-neon-linux-gnueabi/gstreamer1.0/1.12.2-r0/package/usr/src/debug/gstreamer1.0/1.12.2-r0/gstreamer-1.12.2/gst/parse/grammar.y" in function "static gint

    gst_parse_perform_link (link_t *link, graph_t *graph)".

    I am attaching that modified file.

    Then execute "MACHINE=am57xx-evm bitbake -f -c compile gstreamer1.0".

    Then copy 3 libraries (libgstreamer-1.0.so , libgstreamer-1.0.so.0 , libgstreamer-1.0.so.0.1202.0) on am5728_board at path "/usr/lib".

    And execute commands as Below. Please,check its log:

    Command:
    --------------
    gst-launch-1.0 --gst-debug=vpe:3 -v rtspsrc location=rtsp://888888:888888@192.168.1.4:554 ! rtph264depay ! h264parse ! ducatih264dec ! vpe ! 'video/x-raw, format=(string)BGR3, width=(int)800, height=(int)600' ! waylandsink

    Log:
    ------
    Please,check log file.


    Command:
    --------------
    gst-launch-1.0 --gst-debug=vpe:3 -v rtspsrc location=rtsp://888888:888888@192.168.1.4:554 ! rtph264depay ! h264parse ! ducatih264dec ! vpe ! 'video/x-raw, format=(string)NV12, width=(int)800, height=(int)600' ! waylandsink

    Log:
    ------
    Please,check log file.


    I have modified many things. Can you guide me that what should be wrong to link "VPE" and "waylandsink"?

    Regards,

    Kishan Patel.

    VPE_NV12_LOG.txt
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    SRC=rtspsrc0
    SINK=rtph264depay0
    SRCS=(null)
    srcs:2
    sinks:2
    Found_one=0
    Success2
    SRC=rtph264depay0
    SINK=h264parse0
    SRCS=(null)
    srcs:2
    sinks:2
    Found_one=1
    Success1
    Caps=0
    SRC=h264parse0
    SINK=ducatih264dec0
    SRCS=(null)
    srcs:2
    sinks:2
    Found_one=1
    Success1
    Caps=0
    SRC=ducatih264dec0
    SINK=vpe0
    SRCS=(null)
    srcs:2
    sinks:2
    Found_one=1
    Success1
    Caps=0
    SRC=vpe0
    SINK=waylandsink0
    SRCS=(null)
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    VPE_BGR3_LOG.txt
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    SRC=rtspsrc0
    SINK=rtph264depay0
    SRCS=(null)
    srcs:2
    sinks:2
    Found_one=0
    Success2
    SRC=rtph264depay0
    SINK=h264parse0
    SRCS=(null)
    srcs:2
    sinks:2
    Found_one=1
    Success1
    Caps=0
    SRC=h264parse0
    SINK=ducatih264dec0
    SRCS=(null)
    srcs:2
    sinks:2
    Found_one=1
    Success1
    Caps=0
    SRC=ducatih264dec0
    SINK=vpe0
    SRCS=(null)
    srcs:2
    sinks:2
    Found_one=1
    Success1
    Caps=0
    SRC=vpe0
    SINK=waylandsink0
    SRCS=(null)
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    grammar_y.txt
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    %{
    #include "../gst_private.h"
    #include <glib-object.h>
    #include <glib.h>
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include "../gst-i18n-lib.h"
    #include "../gstconfig.h"
    #include "../gstparse.h"
    #include "../gstinfo.h"
    #include "../gsterror.h"
    #include "../gststructure.h"
    #include "../gsturi.h"
    #include "../gstutils.h"
    #include "../gstvalue.h"
    #include "../gstchildproxy.h"
    #include "types.h"
    /* All error messages in this file are user-visible and need to be translated.
    * Don't start the message with a capital, and don't end them with a period,
    * as they will be presented inside a sentence/error.
    */
    #define DEBUG_ENABLE
    #define YYERROR_VERBOSE 1
    #define YYENABLE_NLS 0
    #ifndef YYLTYPE_IS_TRIVIAL
    #define YYLTYPE_IS_TRIVIAL 0
    #endif
    /*******************************************************************************************
    *** Tracing memory leaks
    *******************************************************************************************/
    #ifdef __GST_PARSE_TRACE
    static guint __strings;
    static guint __links;
    static guint __chains;
    gchar *
    __gst_parse_strdup (gchar *org)
    {
    gchar *ret;
    __strings++;
    ret = g_strdup (org);
    /* g_print ("ALLOCATED STR (%3u): %p %s\n", __strings, ret, ret); */
    return ret;
    }
    void
    __gst_parse_strfree (gchar *str)
    {
    if (str) {
    /* g_print ("FREEING STR (%3u): %p %s\n", __strings - 1, str, str); */
    g_free (str);
    g_return_if_fail (__strings > 0);
    __strings--;
    }
    }
    link_t *__gst_parse_link_new (void)
    {
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • Hello,

    I do not understand why you are modifing the grammer_y file at all.
    You should not do this.
    Your problem is this :
    WARNING: erroneous pipeline: 2_could not link vpe0 to waylandsink0, waylandsink0 can't handle caps video/x-raw, format=(string)BGR3, width=(int)800, height=(int)600

    As you could see waylandsink can not handle the caps filter.
    I already wrote you that with gst-inspect-1.0 waylandsink what are the formats that it accepts.
    Look every gstreamer element has input and output.
    The input is called sink the output is src. When you link two gstreamer elements the src of first one and sink of the second must match.
    For example, YUY2 to vpe's input -> capsfilter (NV12) -> waylandsink. When you have in the capsfilter NV12 it "tells" to vpe to convert the format from YUY2 to NV12 in this exmaple. In this case waylandsink accepts on his input NV12 so all works.
    Gst-inspect command displays what capabilities the elements has, properties etc..

    However please check this thread:
    e2e.ti.com/.../610113

    BR
    Margarita
  • Hello Margarita,

            Actually, i want to debug errors. So, i have modified "grammar.y" file.

    And i have already checked "gst-inspect-1.0 waylandsink" log. Plese, check as below:

    root@am57xx-evm:~/Testing# gst-inspect-1.0 waylandsink
    Factory Details:
      Rank                     marginal (64)
      Long-name                wayland video sink
      Klass                    Sink/Video
      Description              Output to wayland surface
      Author                   Sreerenj Balachandran <sreerenj.balachandran@intel.com>, George Kiagiadakis <george.kiagiadakis@collabora.com>

    Plugin Details:
      Name                     waylandsink
      Description              Wayland Video Sink
      Filename                 /usr/lib/gstreamer-1.0/libgstwaylandsink.so
      Version                  1.12.2
      License                  LGPL
      Source module            gst-plugins-bad
      Source release date      2017-07-14
      Binary package           GStreamer Bad Plug-ins source release
      Origin URL               Unknown package origin

    GObject
     +----GInitiallyUnowned
           +----GstObject
                 +----GstElement
                       +----GstBaseSink
                             +----GstVideoSink
                                   +----GstWaylandSink

    Implemented Interfaces:
      GstVideoOverlay
      GstWaylandVideo

    Pad Templates:
      SINK template: 'sink'
        Availability: Always
        Capabilities:
          video/x-raw
                     format: { (string)BGRx, (string)BGRA, (string)RGBx, (string)xBGR, (string)xRGB, (string)RGBA, (string)ABGR, (string)ARGB, (string)RGB, (string)BGR, (string)RGB16, (string)BGR16, (string)YUY2, (string)YVYU, (string)UYVY, (string)AYUV, (string)NV12, (string)NV21, (string)NV16, (string)YUV9, (string)YVU9, (string)Y41B, (string)I420, (string)YV12, (string)Y42B, (string)v308 }
                      width: [ 1, 2147483647 ]
                     height: [ 1, 2147483647 ]
                  framerate: [ 0/1, 2147483647/1 ]
          video/x-raw(memory:DMABuf)
                     format: { (string)BGRx, (string)BGRA, (string)RGBx, (string)xBGR, (string)xRGB, (string)RGBA, (string)ABGR, (string)ARGB, (string)RGB, (string)BGR, (string)RGB16, (string)BGR16, (string)YUY2, (string)YVYU, (string)UYVY, (string)AYUV, (string)NV12, (string)NV21, (string)NV16, (string)YUV9, (string)YVU9, (string)Y41B, (string)I420, (string)YV12, (string)Y42B, (string)v308 }
                      width: [ 1, 2147483647 ]
                     height: [ 1, 2147483647 ]
                  framerate: [ 0/1, 2147483647/1 ]


    Element Flags:
      no flags set

    Element Implementation:
      Has change_state() function: gst_wayland_sink_change_state

    Element has no clocking capabilities.
    Element has no URI handling capabilities.

    Pads:
      SINK: 'sink'
        Pad Template: 'sink'

    Element Properties:
      name                : The name of the object
                            flags: readable, writable
                            String. Default: "waylandsink0"
      parent              : The parent of the object
                            flags: readable, writable
                            Object of type "GstObject"
      sync                : Sync on the clock
                            flags: readable, writable
                            Boolean. Default: true
      max-lateness        : Maximum number of nanoseconds that a buffer can be late before it is dropped (-1 unlimited)
                            flags: readable, writable
                            Integer64. Range: -1 - 9223372036854775807 Default: 20000000
      qos                 : Generate Quality-of-Service events upstream
                            flags: readable, writable
                            Boolean. Default: true
      async               : Go asynchronously to PAUSED
                            flags: readable, writable
                            Boolean. Default: true
      ts-offset           : Timestamp offset in nanoseconds
                            flags: readable, writable
                            Integer64. Range: -9223372036854775808 - 9223372036854775807 Default: 0
      enable-last-sample  : Enable the last-sample property
                            flags: readable, writable
                            Boolean. Default: true
      last-sample         : The last sample received in the sink
                            flags: readable
                            Boxed pointer of type "GstSample"
      blocksize           : Size in bytes to pull per buffer (0 = default)
                            flags: readable, writable
                            Unsigned Integer. Range: 0 - 4294967295 Default: 4096
      render-delay        : Additional render delay of the sink in nanoseconds
                            flags: readable, writable
                            Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 0
      throttle-time       : The time to keep between rendered buffers (0 = disabled)
                            flags: readable, writable
                            Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 0
      max-bitrate         : The maximum bits per second to render (0 = disabled)
                            flags: readable, writable
                            Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 0
      show-preroll-frame  : Whether to render video frames during preroll
                            flags: readable, writable
                            Boolean. Default: true
      display             : Wayland display name to connect to, if not supplied via the GstContext
                            flags: readable, writable
                            String. Default: null
      use-drm             : Wayland Use DRM based memory for allocation
                            flags: writable
                            Boolean. Default: false Write only
      window-resolution   : resolution of video widthxheight
                            flags: writable
                            String. Default: "NULL" Write only
    root@am57xx-evm:~/Testing#

    Regards,

    Kishan Patel.

  • Hello Margarita,
    Anything wrong in modified sorce files which i have shared you?. If any suggestion,please comment to me.
    Regards,
    Kishan Patel.
  • Hello,

    E2e thread update:
    In PSDK 5.0, waylandsink supports NV12, YUY2 and BGRA on the input.
    arago-project.org/.../

    In previous PSDK version waylandsink supports NV12.

    BR
    Margarita
  • src.zipHello Margarita,

               I have to make changes in source code as listed below and i can capable to use below pipelines:

    Pipelines:

    -------------

    1).gst-launch-1.0 --gst-debug=vpe:3 -v rtspsrc location=rtsp://888888:888888@192.168.1.7:554 ! rtph264depay ! h264parse ! ducatih264dec ! vpe ! 'video/x-raw, format=(string)BGR, width=(int)640, height=(int)480' ! filesink location=test.bgr -v

    2).gst-launch-1.0 --gst-debug=vpe:3 -v rtspsrc location=rtsp://888888:888888@192.168.1.7:554 ! rtph264depay ! h264parse ! ducatih264dec ! vpe ! 'video/x-raw, format=(string)RGB, width=(int)640, height=(int)480' ! filesink location=test.rgb -v

    Please check the modified files for VPE which i am attaching.

    Path:(VPE)

    --------------

    tisdk/build/arago-tmp-external-linaro-toolchain/work/am57xx_evm-linux-gnueabi/gstreamer1.0-plugins-vpe/git-r2.19/git/src

    Bitbake:

    -----------

    MACHINE=am57xx-evm bitbake gstreamer1.0-plugins-vpe --force -c compile

    Replace Library:

    ---------------------

    scp tisdk/build/arago-tmp-external-linaro-toolchain/work/am57xx_evm-linux-gnueabi/gstreamer1.0-plugins-vpe/git-r2.19/git/src/.libs/libgstvpe.so root@192.168.1.9:/usr/lib/gstreamer-1.0

    Path:(Base)

    ---------------

    tisdk/build/arago-tmp-external-linaro-toolchain/work/armv7ahf-neon-linux-gnueabi/gstreamer1.0-plugins-base/1.12.2-r0/gst-plugins-base-1.12.2/gst-libs/gst/video/video-format.c

    Add:

    ------

            case GST_MAKE_FOURCC ('R', 'G', 'B', '\0'):

        return GST_VIDEO_FORMAT_RGB;

    case GST_MAKE_FOURCC ('B', 'G', 'R', '\0'):

        return GST_VIDEO_FORMAT_BGR;

    Bitbake:

    -----------

    MACHINE=am57xx-evm bitbake gstreamer1.0-plugins-base --force -c compile

    Replace Library:

    --------------------

    -scp tisdk/build/arago-tmp-external-linaro-toolchain/work/armv7ahf-neon-linux-gnueabi/gstreamer1.0-plugins-base/1.12.2-r0/build/gst/videoconvert/.libs/libgstvideoconvert.so root@192.168.1.9:/usr/lib/gstreamer-1.0/

    -scp tisdk/build/arago-tmp-external-linaro-toolchain/work/armv7ahf-neon-linux-gnueabi/gstreamer1.0-plugins-base/1.12.2-r0/build/gst/typefind/.libs/libgsttypefindfunctions.so root@192.168.1.9:/usr/lib/gstreamer-1.0/

    -scp tisdk/build/arago-tmp-external-linaro-toolchain/work/armv7ahf-neon-linux-gnueabi/gstreamer1.0-plugins-base/1.12.2-r0/build/gst/videotestsrc/.libs/libgstvideotestsrc.so root@192.168.1.9:/usr/lib/gstreamer-1.0/

    -scp tisdk/build/arago-tmp-external-linaro-toolchain/work/armv7ahf-neon-linux-gnueabi/gstreamer1.0-plugins-base/1.12.2-r0/build/gst/rawparse/.libs/libgstrawparse.so root@192.168.1.9:/usr/lib/gstreamer-1.0/

    -scp tisdk/build/arago-tmp-external-linaro-toolchain/work/armv7ahf-neon-linux-gnueabi/gstreamer1.0-plugins-base/1.12.2-r0/build/gst/pbtypes/.libs/libgstpbtypes.so root@192.168.1.9:/usr/lib/gstreamer-1.0/

    -scp tisdk/build/arago-tmp-external-linaro-toolchain/work/armv7ahf-neon-linux-gnueabi/gstreamer1.0-plugins-base/1.12.2-r0/build/gst/encoding/.libs/libgstencoding.so root@192.168.1.9:/usr/lib/gstreamer-1.0/

    -scp tisdk/build/arago-tmp-external-linaro-toolchain/work/armv7ahf-neon-linux-gnueabi/gstreamer1.0-plugins-base/1.12.2-r0/build/gst/playback/.libs/libgstplayback.so root@192.168.1.9:/usr/lib/gstreamer-1.0/

    -scp tisdk/build/arago-tmp-external-linaro-toolchain/work/armv7ahf-neon-linux-gnueabi/gstreamer1.0-plugins-base/1.12.2-r0/build/gst/videoscale/.libs/libgstvideoscale.so root@192.168.1.9:/usr/lib/gstreamer-1.0/

    -scp tisdk/build/arago-tmp-external-linaro-toolchain/work/armv7ahf-neon-linux-gnueabi/gstreamer1.0-plugins-base/1.12.2-r0/build/gst/videorate/.libs/libgstvideorate.so root@192.168.1.9:/usr/lib/gstreamer-1.0/

    -scp tisdk/build/arago-tmp-external-linaro-toolchain/work/armv7ahf-neon-linux-gnueabi/gstreamer1.0-plugins-base/1.12.2-r0/build/gst-libs/gst/pbutils/.libs/libgstpbutils-1.0.so.0.1202.0 root@192.168.1.9:/usr/lib

    -scp tisdk/build/arago-tmp-external-linaro-toolchain/work/armv7ahf-neon-linux-gnueabi/gstreamer1.0-plugins-base/1.12.2-r0/build/gst-libs/gst/video/.libs/libgstvideo-1.0.so.0.1202.0 root@192.168.1.9:/usr/lib

    -scp tisdk/build/arago-tmp-external-linaro-toolchain/work/armv7ahf-neon-linux-gnueabi/gstreamer1.0-plugins-base/1.12.2-r0/build/ext/theora/.libs/libgsttheora.so  root@192.168.1.9:/usr/lib/gstreamer-1.0/

    -scp tisdk/build/arago-tmp-external-linaro-toolchain/work/armv7ahf-neon-linux-gnueabi/gstreamer1.0-plugins-base/1.12.2-r0/build/ext/ogg/.libs/libgstogg.so  root@192.168.1.9:/usr/lib/gstreamer-1.0/

    -scp tisdk/build/arago-tmp-external-linaro-toolchain/work/armv7ahf-neon-linux-gnueabi/gstreamer1.0-plugins-base/1.12.2-r0/build/ext/pango/.libs/libgstpango.so  root@192.168.1.9:/usr/lib/gstreamer-1.0/

    Regards,

    Kishan Patel.

  • Hello Margarita,
    Now, i have one doubt about to use RGB3/BGR3. To use RGB/BGR, i have add file "video-format.c" as below:

    "case GST_MAKE_FOURCC ('R', 'G', 'B', '\0'):

    return GST_VIDEO_FORMAT_RGB;

    case GST_MAKE_FOURCC ('B', 'G', 'R', '\0'):

    return GST_VIDEO_FORMAT_BGR;"

    Here i can see format options as (GST_VIDEO_FORMAT_RGBx, GST_VIDEO_FORMAT_BGRx). So, would i have add lines as below to use RGB3(RGB24)/BGR3(BGR24):

    "case GST_MAKE_FOURCC ('R', 'G', 'B', '3'):

    return GST_VIDEO_FORMAT_RGBx;

    case GST_MAKE_FOURCC ('B', 'G', 'R', '3'):

    return GST_VIDEO_FORMAT_BGRx;"

    Regards,
    Kishan Patel.
  • gst_rgb_waylandsink_issue.txt
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    FILE_PATH:
    ==========
    tisdk/build/arago-tmp-external-linaro-toolchain/work/armv7ahf-neon-linux-gnueabi/gstreamer1.0/1.12.2-r0/gstreamer-1.12.2/gst/gstquery.c
    Function_name(With Debug Modification):
    =======================================
    void
    gst_query_parse_caps_result (GstQuery * query, GstCaps ** caps)
    {
    GstStructure *structure;
    g_return_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_CAPS);
    g_return_if_fail (caps != NULL);
    structure = GST_QUERY_STRUCTURE (query);
    printf("\n\ngstquery.c:structure:\n%s\n\n",gst_structure_to_string(structure));
    *caps = g_value_get_boxed (gst_structure_id_get_value (structure,
    GST_QUARK (CAPS)));
    }
    Pipeline:
    ==========
    gst-launch-1.0 -v rtspsrc location=rtsp://888888:888888@192.168.1.6:554 ! rtph264depay ! h264parse ! ducatih264dec ! vpe ! 'video/x-raw, format=(string)YUY2, width=(int)640, height=(int)480' ! waylandsink
    Debug_Issue:
    ============
    gstquery.c:structure:
    GstQueryCaps, filter=(GstCaps)"video/x-raw\,\ format\=\(string\)NV12\,\ width\=\(int\)\[\ 1\,\ 2147483647\ \]\,\ height\=\(int\)\[\ 1\,\ 2147483647\ \]\,\ framerate\=\(fraction\)\[\ 0/1\,\ 2147483647/1\ \]\;\ video/x-raw\,\ format\=\(string\)YUYV\,\ width\=\(int\)\[\ 1\,\ 2147483647\ \]\,\ height\=\(int\)\[\ 1\,\ 2147483647\ \]\,\ framerate\=\(fraction\)\[\ 0/1\,\ 2147483647/1\ \]\;\ video/x-raw\,\ format\=\(string\)BGR3\,\ width\=\(int\)\[\ 1\,\ 2147483647\ \]\,\ height\=\(int\)\[\ 1\,\ 2147483647\ \]\,\ framerate\=\(fraction\)\[\ 0/1\,\ 2147483647/1\ \]\;\ video/x-raw\,\ format\=\(string\)RGB3\,\ width\=\(int\)\[\ 1\,\ 2147483647\ \]\,\ height\=\(int\)\[\ 1\,\ 2147483647\ \]\,\ framerate\=\(fraction\)\[\ 0/1\,\ 2147483647/1\ \]\;\ video/x-raw\,\ format\=\(string\)BGR\,\ width\=\(int\)\[\ 1\,\ 2147483647\ \]\,\ height\=\(int\)\[\ 1\,\ 2147483647\ \]\,\ framerate\=\(fraction\)\[\ 0/1\,\ 2147483647/1\ \]\;\ video/x-raw\,\ format\=\(string\)RGB\,\ width\=\(int\)\[\ 1\,\ 2147483647\ \]\,\ height\=\(int\)\[\ 1\,\ 2147483647\ \]\,\ framerate\=\(fraction\)\[\ 0/1\,\ 2147483647/1\ \]\;\ video/x-raw\,\ format\=\(string\)YUY2\,\ width\=\(int\)\[\ 1\,\ 2147483647\ \]\,\ height\=\(int\)\[\ 1\,\ 2147483647\ \]\,\ framerate\=\(fraction\)\[\ 0/1\,\ 2147483647/1\ \]", caps=(GstCaps)"video/x-raw\,\ format\=\(string\)YUY2\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)\[\ 0/1\,\ 2147483647/1\ \]";
    Comments:
    ==========
    -In last of debug print, we can see that caps=(GstCaps)"video/x-raw\,\ format\=\(string\)YUY2\,\ width\=\(int\)640\,\ height\=\(int\)480\,\ framerate\=\(fraction\)\[\ 0/1\,\ 2147483647/1\ \]";
    Pipeline:
    ==========
    gstquery.c:structure:
    gst-launch-1.0 -v rtspsrc location=rtsp://888888:888888@192.168.1.6:554 ! rtph264depay ! h264parse ! ducatih264dec ! vpe ! 'video/x-raw, format=(string)RGB, width=(int)640, height=(int)480' ! waylandsink
    Debug_Issue:
    ============
    GstQueryCaps, filter=(GstCaps)"video/x-raw\,\ format\=\(string\)NV12\,\ width\=\(int\)\[\ 1\,\ 2147483647\ \]\,\ height\=\(int\)\[\ 1\,\ 2147483647\ \]\,\ framerate\=\(fraction\)\[\ 0/1\,\ 2147483647/1\ \]\;\ video/x-raw\,\ format\=\(string\)YUYV\,\ width\=\(int\)\[\ 1\,\ 2147483647\ \]\,\ height\=\(int\)\[\ 1\,\ 2147483647\ \]\,\ framerate\=\(fraction\)\[\ 0/1\,\ 2147483647/1\ \]\;\ video/x-raw\,\ format\=\(string\)BGR3\,\ width\=\(int\)\[\ 1\,\ 2147483647\ \]\,\ height\=\(int\)\[\ 1\,\ 2147483647\ \]\,\ framerate\=\(fraction\)\[\ 0/1\,\ 2147483647/1\ \]\;\ video/x-raw\,\ format\=\(string\)RGB3\,\ width\=\(int\)\[\ 1\,\ 2147483647\ \]\,\ height\=\(int\)\[\ 1\,\ 2147483647\ \]\,\ framerate\=\(fraction\)\[\ 0/1\,\ 2147483647/1\ \]\;\ video/x-raw\,\ format\=\(string\)BGR\,\ width\=\(int\)\[\ 1\,\ 2147483647\ \]\,\ height\=\(int\)\[\ 1\,\ 2147483647\ \]\,\ framerate\=\(fraction\)\[\ 0/1\,\ 2147483647/1\ \]\;\ video/x-raw\,\ format\=\(string\)RGB\,\ width\=\(int\)\[\ 1\,\ 2147483647\ \]\,\ height\=\(int\)\[\ 1\,\ 2147483647\ \]\,\ framerate\=\(fraction\)\[\ 0/1\,\ 2147483647/1\ \]\;\ video/x-raw\,\ format\=\(string\)YUY2\,\ width\=\(int\)\[\ 1\,\ 2147483647\ \]\,\ height\=\(int\)\[\ 1\,\ 2147483647\ \]\,\ framerate\=\(fraction\)\[\ 0/1\,\ 2147483647/1\ \]", caps=(GstCaps)EMPTY;
    Comments:
    ==========
    -In last of debug print, we can see that caps=(GstCaps)EMPTY;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    Hello Margarita,

               I am attaching one file which can provide details of current issue with including debug_print, file_path, Modified function's definition, all i have mention in this file.

    Please, check this file and if you can know what should i add to solve this issue,Please tell me.

  • Hello Kishan,

    Please use this pipeline with this caps:

    gst-launch-1.0 -v videotestsrc ! video/x-raw, format=NV12, width=1280, height=720 ! vpe ! 'video/x-raw, format=(string)GBR, width=(int)640, height=(int)480' ! waylandsink

    the log that you shared does not work for me.

    Please verify that you have added gbr correctly to the waylandsink by using this pipeline:

    gst-launch-1.0 -v videotestsrc ! video/x-raw, format=NV12, width=1280, height=720 ! videoconvert ! 'video/x-raw, format=(string)BGR, width=(int)640, height=(int)480' ! waylandsink

    Please use the default armv7ahf-neon-linux-gnueabi/gstreamer1.0-plugins-base/1.12.2-r0/gst-plugins-base-1.12.2/gst-libs/gst/video/video-format.c file.


    BR
    Margarita
  • Hello Margarita,
    I have tested above pipelines. But it could not work and got output log as below:

    1).WARNING: erroneous pipeline: could not link vpe0 to waylandsink0, neither element can handle caps video/x-raw, format=(string)GBR, width=(int)640, height=(int)480

    2).WARNING: erroneous pipeline: could not link videoconvert0 to waylandsink0, videoconvert0 can't handle caps video/x-raw, format=(string)BGR, width=(int)640, height=(int)480


    Regards,
    Kishan Patel.
  • Hello,

    I am sorry I was OoO.

    kishan patel14 said:
    2).WARNING: erroneous pipeline: could not link videoconvert0 to waylandsink0, videoconvert0 can't handle caps video/x-raw, format=(string)BGR, width=(int)640, height=(int)480

    I am sorry it is normal this gst-launch-1.0 -v videotestsrc ! video/x-raw, format=NV12, width=1280, height=720 ! videoconvert ! 'video/x-raw, format=(string)BGR, width=(int)640, height=(int)480' ! waylandsink

     to fails with this error since the resolution is different on the videoconvert input and output. You must add videoscale or change the resolution to be the same like this:

    gst-launch-1.0 -v videotestsrc ! video/x-raw, format=NV12, width=1280, height=720 ! videoconvert ! 'video/x-raw, format=(string)BGR, width=(int)1280, height=(int)720' ! fakesink

    Please try to replace waylandsink with fakesink

    gst-launch-1.0 -v videotestsrc ! video/x-raw, format=NV12, width=1280, height=720 ! videoconvert ! 'video/x-raw, format=(string)BGR, width=(int)1280, height=(int)720' ! fakesink

    If this is working, please recheck the changes what you have made for waylandsink.

    Please use default video-format.c not the file with your changes.

    BR
    Margarita

  • Hello Margarita,
    I have checked above pipeline with fakesink, i dont get any error for this but waylandsink is not working for this pipelines.
    Please, check below pipelines, its working fine.

    1)gst-launch-1.0 videotestsrc ! video/x-raw, format=BGRx ! waylandsink
    2)gst-launch-1.0 videotestsrc ! video/x-raw, format=BGRA ! waylandsink
    3)gst-launch-1.0 videotestsrc ! video/x-raw, format=RGB16 ! waylandsink

    Means, waylandsink working with these formats. But we can not use it with VPE. Right?(VPE support RGB24/BGR24)
    And we have tested VPE with filesink, and its working properly.

    I am revising these all things, because i have doubt is that is waylandsink support format which we have added(GST_VIDEO_FORMAT_RGB).

    Regards,
    Kishan Patel.
  • Hello,

    Kishan try to open this file in opencv. Resolution is 640x480.

    Remove txt at the end.

    1.rgb.txt

    BR
    Margarita

  • Hello Margarita,
    I got output as below:
    [IMGUTILS @ 0x7ffe6f738640] Picture size 0x0 is invalid

    (app:5465): GLib-GObject-CRITICAL **: g_object_set: assertion 'G_IS_OBJECT (object)' failed

    Regards,
    Kishan Patel.
1 2