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.

DRA726: remoteproc issue

Part Number: DRA726
Other Parts Discussed in Thread: TVP5158, TEST2,

I have 4 analog camera inputs using an ISL79987 device

I have no problem displaying the 4 video inputs using waylandsink and VPE

isl79987               10732  1
ti_cal                 24471  0
videobuf2_dma_contig     8697  2 ti_cal,ti_vpe
videobuf2_memops        1824  1 videobuf2_dma_contig
videobuf2_v4l2         21752  3 v4l2_mem2mem,ti_cal,ti_vpe
videobuf2_core         25666  4 v4l2_mem2mem,ti_cal,ti_vpe,videobuf2_v4l2

When trying to convert to MP4 there is a problem. I did notice an error message with dmesg

[    3.443601] ledtrig-cpu: registered to indicate activity on CPUs
[    3.451174] omap-rproc 55020000.ipu: assigned reserved memory node ipu2_cma@95800000
[    3.472701]  remoteproc0: 55020000.ipu is available
[    3.477600]  remoteproc0: Note: remoteproc is still under development and considered experimental.
[    3.502659]  remoteproc0: THE BINARY FORMAT IS NOT YET FINALIZED, and backward compatibility isn't yet guaranteed.
[    3.522764]  remoteproc0: Direct firmware load for dra7-ipu2-fw.xem4 failed with error -2
[    3.530975]  remoteproc0: Falling back to user helper

/lib/firmware

drwxr-xr-x 4 root root    4096 Nov 21 13:25 .
drwxr-xr-x 9 root root    4096 Nov 20 22:09 ..
lrwxrwxrwx 1 root root      40 Nov 19 22:05 dra7-ipu2-fw.xem4 -> /lib/firmware/dra7-ipu2-fw.xem4.ipumm-fw
-rw-r--r-- 1 root root 3743144 Nov 19 19:22 dra7-ipu2-fw.xem4.ipumm-fw
-rw-r--r-- 1 root root  572182 Nov 19 19:22 dra7-ipu2-fw.xem4.map
drwxr-xr-x 2 root root   12288 Nov 19 19:36 emmy-w1-sdiouart
drwxr-xr-x 2 root root    4096 Nov 19 19:36 mrvl
-rw-r--r-- 1 root root    4002 Nov 19 16:14 vpdma-1b8.bin

root@actia-dra726-12inch:/lib/firmware# dir /dev/rpmsg-dce
crw------- 1 root root 245, 1 Nov 21 13:25 /dev/rpmsg-dce

crw------- 1 root root 245, 1 Nov 21 13:25 /dev/rpmsg-dce
root@actia-dra726-12inch:/lib/firmware# dmesg | grep ipu2
[    0.000000] Reserved memory: initialized node ipu2_cma@95800000, compatible id shared-dma-pool
[    3.451137] omap-rproc 55020000.ipu: assigned reserved memory node ipu2_cma@95800000
[    3.522732]  remoteproc0: Direct firmware load for dra7-ipu2-fw.xem4 failed with error -2
[    9.828431]  remoteproc0: Booting fw image dra7-ipu2-fw.xem4, size 3743144

In this test I have a PAL DVD player connected to /dev/video0

I get similar results with a camera or my video signal generator.

I haven't tested this way with my NTSC cameras yet, I would assume similar results.

Here is the command used

gst-launch-1.0 -v v4l2src device=/dev/video0 ! video/x-raw,interlaced=true ! vpe ! ducatih264enc ! queue ! h264parse ! mp4mux ! filesink location=test.mp4        

Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)UYVY\,\ framerate\=\(fraction\)100/1\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ interlace-mode\=\(string\)interleaved\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ colorimetry\=\(string\)bt601\,\ interlaced\=\(boolean\)true"
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)UYVY\,\ framerate\=\(fraction\)100/1\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ interlace-mode\=\(string\)interleaved\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ colorimetry\=\(string\)bt601\,\ interlaced\=\(boolean\)true"
/GstPipeline:pipeline0/GstVpe:vpe0.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)NV12\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ framerate\=\(fraction\)100/1"
/GstPipeline:pipeline0/GstDucatiH264Enc:ducatih264enc0.GstPad:src: caps = "video/x-h264\,\ alignment\=\(string\)au\,\ stream-format\=\(string\)byte-stream\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ framerate\=\(fraction\)100/1"
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = "video/x-h264\,\ alignment\=\(string\)au\,\ stream-format\=\(string\)byte-stream\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ framerate\=\(fraction\)100/1"
/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:sink: caps = "video/x-h264\,\ alignment\=\(string\)au\,\ stream-format\=\(string\)byte-stream\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ framerate\=\(fraction\)100/1"
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = "video/x-h264\,\ alignment\=\(string\)au\,\ stream-format\=\(string\)byte-stream\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ framerate\=\(fraction\)100/1"
/GstPipeline:pipeline0/GstDucatiH264Enc:ducatih264enc0.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)NV12\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ framerate\=\(fraction\)100/1"
/GstPipeline:pipeline0/GstVpe:vpe0.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)UYVY\,\ framerate\=\(fraction\)100/1\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ interlace-mode\=\(string\)interleaved\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ colorimetry\=\(string\)bt601\,\ interlaced\=\(boolean\)true"
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)UYVY\,\ framerate\=\(fraction\)100/1\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ interlace-mode\=\(string\)interleaved\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ colorimetry\=\(string\)bt601\,\ interlaced\=\(boolean\)true"
/GstPipeline:pipeline0/GstVpe:vpe0.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)NV12\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ framerate\=\(fraction\)100/1"
/GstPipeline:pipeline0/GstDucatiH264Enc:ducatih264enc0.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)NV12\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ framerate\=\(fraction\)100/1"

** (gst-launch-1.0:1195): CRITICAL **: gst_fd_memory_get_fd: assertion 'GST_IS_FD_ALLOCATOR (mem->allocator)' failed

** (gst-launch-1.0:1195): CRITICAL **: gst_fd_memory_get_fd: assertion 'GST_IS_FD_ALLOCATOR (mem->allocator)' failed

** (gst-launch-1.0:1195): CRITICAL **: gst_fd_memory_get_fd: assertion 'GST_IS_FD_ALLOCATOR (mem->allocator)' failed

** (gst-launch-1.0:1195): CRITICAL **: gst_fd_memory_get_fd: assertion 'GST_IS_FD_ALLOCATOR (mem->allocator)' failed

** (gst-launch-1.0:1195): CRITICAL **: gst_fd_memory_get_fd: assertion 'GST_IS_FD_ALLOCATOR (mem->allocator)' failed
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data flow error.
Additional debug info:
../../../../gstreamer-1.6.3/libs/gst/base/gstbasesrc.c(2943): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
streaming task paused, reason error (-5)
Execution ended after 0:00:00.120163286
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...

Our board has 1G of RAM

Michel Catudal

ACTIA Corp

  • I forgot to mention, my yocto build is based on the one used in automotive SDK 3.04, still using kernel from 3.02 since the changes in cal.c broke my analog camera support. I have to understand the changes before I can fix the issues. I have the hot fixes released after 3.02.

    Michel Catudal

    ACTIA Corp

  • oops! I meant 3.03 not 3.02

    Michel Catudal

    ACTIA Corp

  • Hi Michel,

    The "direct firmware load" error is seen if the module is loaded before the filesystem is available. In this case, it will fall back to the user helper and loading will continue when the filesystem is available.

    Can you check if the ipumm firmware is running by checking the state of the remoteproc and the remoteproc traces like below?

    cat /sys/kernel/debug/remoteproc/remoteprocX/state

    cat /sys/kernel/debug/remoteproc/remoteprocX/trace0

    This App Note gives more information on debug techniques, and section 4 "Remote Core Status Information" gives details on checking remoteproc state using debugfs.

    For the gstreamer pipeline, the developer's guide gives some example gstreamer pipelines here:

    Thanks,

    Angela

  • Hi Michel,

    I haven't heard back from you, I'm assuming you were able to resolve your issue.

    If not, just post a reply below (or create a new thread if the thread has locked due to time-out).

    Thanks,

    Angela

  • Angela,

    I was off for a few days for Thanksgiving

    root@actia-dra726-12inch:~/work/tests# cat /sys/kernel/debug/remoteproc/remoteproc0/state
    suspended (1)
    root@actia-dra726-12inch:~/work/tests# cat /sys/kernel/debug/remoteproc/remoteproc0/trace0
    [0][      0.000] 17 Resource entries at 0x3000
    [0][      0.000] Watchdog disabled: TimerBase = 0x6803e000 ClkCtrl = 0x6a009750
    [0][      0.000] Watchdog disabled: TimerBase = 0x68036000 ClkCtrl = 0x6a009748
    [0][      0.000] Watchdog_restore registered as a resume callback
    [0][      0.000] IPU2 starting..
    [0][      0.000]
    [0][      0.000]
    [0][      0.000]  **** IPUMM VERSION INFO ****
    [0][      0.000]
    [0][      0.000] Compile DATE Nov 19 2019 TIME 14:04:40
    [0][      0.000] GIT IPUMM
    [0][      0.000]        BRANCH : master
    [0][      0.000]        TAG : MMIP fatal: No annotated tags can describe '01bbb622267b687fa05e42062b146ad7a22e7afd'. IPC 3_47_00_00
    [0][      0.000]        COMMIT-ID : 01bbb62
    [0][      0.000] CODEC-VER BEGIN:
    [0][      0.000]        H264D-02.00.21.01
    [0][      0.000]        MPEG4D-01.00.15.01
    [0][      0.000]        MPEG2D-01.00.17.01
    [0][      0.000]        VC1D-01.00.02.05
    [0][      0.000]        MJPEGD-01.00.16.01
    [0][      0.000]
    [0][      0.000]        H264E-02.00.09.01
    [0][      0.000]        MPEG4E-01.00.02.01
    [0][      0.000]        MJPEGE-01.00.17.01
    [0][      0.000] CODEC-VER END:
    [0][      0.000]
    [0][      0.000] ** IPUMM VERSION INFO END **
    [0][      0.000] Trace level PA 0x95f532ec Trace Level 0
    [0][      0.000] Trace Usage: level:[0-4: 0-no trace, 1-err, 2-debug, 3-info, 4-CE,FC,IPC traces]
    [0][      0.000]
    [0][      0.000] Trace Buffer PA 0x98a00000 kpi_control (PA 0x95f4f784 value 0x0)
    [0][      0.000] Watchdog disabled: TimerBase = 0x6803e000 ClkCtrl = 0x6a009750
    [0][      0.000] Watchdog disabled: TimerBase = 0x68036000 ClkCtrl = 0x6a009748
    [1][      0.000] OMAPRPC: registered channel: dce-callback
    [1][      0.000] OMAPRPC: Returning Object @80209300
    [1][      0.000] loadTask: started
    [1][      0.000]   SLEEP_TICKS: 1000
    [1][      0.000]   Load_hwiEnabled: 0
    [1][      0.000]   Load_swiEnabled: 0
    [1][      0.000]   Load_taskEnabled: 1
    [1][      0.000]   Load_updateInIdle: 1
    [1][      0.000]   Load_windowInMs: 11
    [1][      0.001] OMAPRPC: connecting from local endpoint 101 to port 101
    [1][      0.001] registering rpmsg-rpc:dce-callback service on 101 with HOST
    [1][      0.001] OMAPRPC: started channel dce-callback on port: 101
    [0][      0.001] OMAPRPC: registered channel: rpmsg-dce
    [0][      0.001] OMAPRPC: Returning Object @8020c3a0
    [1][      0.001] OMAPRPC: connecting from local endpoint 102 to port 102
    [1][      0.002] registering rpmsg-rpc:rpmsg-dce service on 102 with HOST
    [1][      0.003] OMAPRPC: started channel rpmsg-dce on port: 102
    [0][      0.210] OMAPRPC: received msg type: 0 len: 8 from addr: 1024
    [0][      0.210] OMAPRPC: channel info query - name dce-callback fxns 4
    [0][      0.210] OMAPRPC: Replying with msg type: 1 to addr: 1024  from: 101 len: 12
    [0][      0.294] OMAPRPC: received msg type: 0 len: 8 from addr: 1025
    [0][      0.294] OMAPRPC: channel info query - name rpmsg-dce fxns 9
    [0][      0.294] OMAPRPC: Replying with msg type: 1 to addr: 1025  from: 102 len: 12
    [0][      0.324] OMAPRPC: received msg type: 2 len: 216 from addr: 1024
    [0][      0.324] OMAPRPC: function query of type 1
    [0][      0.324] OMAPRPC: Replying with msg type: 3 to addr: 1024  from: 101 len: 216
    [0][      0.353] OMAPRPC: received msg type: 2 len: 216 from addr: 1025
    [1][      0.353] OMAPRPC: received msg type: 2 len: 216 from addr: 1024
    [0][      0.353] OMAPRPC: function query of type 1
    [1][      0.353] OMAPRPC: function query of type 1
    [0][      0.353] OMAPRPC: Replying with msg type: 3 to addr: 1025  from: 102 len: 216
    [1][      0.353] OMAPRPC: Replying with msg type: 3 to addr: 1024  from: 101 len: 216
    [0][      0.366] OMAPRPC: received msg type: 2 len: 216 from addr: 1025
    [1][      0.366] OMAPRPC: received msg type: 2 len: 216 from addr: 1024
    [0][      0.366] OMAPRPC: function query of type 1
    [1][      0.366] OMAPRPC: function query of type 1
    [0][      0.366] OMAPRPC: Replying with msg type: 3 to addr: 1025  from: 102 len: 216
    [1][      0.366] OMAPRPC: Replying with msg type: 3 to addr: 1024  from: 101 len: 216
    [0][      0.367] OMAPRPC: received msg type: 2 len: 216 from addr: 1025
    [1][      0.367] OMAPRPC: received msg type: 2 len: 216 from addr: 1024
    [0][      0.367] OMAPRPC: function query of type 1
    [1][      0.367] OMAPRPC: function query of type 1
    [0][      0.367] OMAPRPC: Replying with msg type: 3 to addr: 1025  from: 102 len: 216
    [1][      0.367] OMAPRPC: Replying with msg type: 3 to addr: 1024  from: 101 len: 216
    [0][      0.367] OMAPRPC: received msg type: 2 len: 216 from addr: 1025
    [0][      0.367] OMAPRPC: function query of type 1
    [0][      0.367] OMAPRPC: Replying with msg type: 3 to addr: 1025  from: 102 len: 216
    [0][      0.368] OMAPRPC: received msg type: 2 len: 216 from addr: 1025
    [0][      0.368] OMAPRPC: function query of type 1
    [0][      0.368] OMAPRPC: Replying with msg type: 3 to addr: 1025  from: 102 len: 216
    [0][      0.369] OMAPRPC: received msg type: 2 len: 216 from addr: 1025
    [0][      0.369] OMAPRPC: function query of type 1
    [0][      0.369] OMAPRPC: Replying with msg type: 3 to addr: 1025  from: 102 len: 216
    [0][      0.369] OMAPRPC: received msg type: 2 len: 216 from addr: 1025
    [0][      0.369] OMAPRPC: function query of type 1
    [0][      0.369] OMAPRPC: Replying with msg type: 3 to addr: 1025  from: 102 len: 216
    [0][      0.369] OMAPRPC: received msg type: 2 len: 216 from addr: 1025
    [0][      0.369] OMAPRPC: function query of type 1
    [0][      0.370] OMAPRPC: Replying with msg type: 3 to addr: 1025  from: 102 len: 216
    [0][      0.370] OMAPRPC: received msg type: 2 len: 216 from addr: 1025
    [0][      0.370] OMAPRPC: function query of type 1
    [0][      0.370] OMAPRPC: Replying with msg type: 3 to addr: 1025  from: 102 len: 216
    [0][      1.000] loadTask: cpu load = 33%
    [0][      2.000] loadTask: cpu load = 0%

    Michel

  • Hi Michel,

    /dev/video0 is normally device node for VPE and for VIP it would start from /dev/video1 onwards. Can you check your rootfs once and confirm this.

    We have tested multi-channel interlace video capture with tvp5158 sensor, with below gst pipelines

    channel 1: 

    gst-launch-1.0 v4l2src device=/dev/video1 num-buffers=-1 io-mode=4 ! 'video/x-raw,format=(string)YUY2, width=(int)720, height=(int)240' ! vpe num-input-buffers=8 ! queue ! waylandsink

    channel 2:

    gst-launch-1.0 v4l2src device=/dev/video2 num-buffers=-1 io-mode=4 ! 'video/x-raw,format=(string)YUY2, width=(int)720, height=(int)240' ! vpe num-input-buffers=8 ! queue ! waylandsink

    Does dmabuftest work without any issue?

    Thanks

    RamPrasad

  • RamPrasad,

    I do not use VIP but cal

    root@actia-dra726-12inch:~/work/tests# dmesg | grep video
    [    0.544716] Linux video capture interface: v2.00
    [    8.479179] cal-001: V4L2 device registered as video0
    [    8.552808] cal-001: V4L2 device registered as video1
    [    8.596555] cal-001: V4L2 device registered as video2
    [    8.672918] vpe 489d0000.vpe: Device registered as /dev/video4
    [    8.679804] cal-001: V4L2 device registered as video3

    with lsmod

    ti_vpe                 19228  0
    ti_sc                  24714  1 ti_vpe
    dwc3_omap               5054  0
    ti_csc                  2313  1 ti_vpe
    ti_vpdma               15102  1 ti_vpe
    extcon                 13879  2 dwc3,dwc3_omap
    v4l2_mem2mem           14709  1 ti_vpe
    ti_cal                 24471  0
    isl79987               10732  1
    videobuf2_dma_contig     8697  2 ti_cal,ti_vpe
    videobuf2_memops        1824  1 videobuf2_dma_contig
    videobuf2_v4l2         21752  3 v4l2_mem2mem,ti_cal,ti_vpe
    videobuf2_core         25666  4 v4l2_mem2mem,ti_cal,ti_vpe,videobuf2_v4l2

    Michel Catudal

    ACTIA Corp

  • RamPrasad,

    I do not have dmabuftest installed, which recipe is that in?

    Michel

  • Hi Michel,

    We haven't tested Gstreamer based CAL capture but there should not be any problem.

    dmabufTest is in omapdrmtest recipe but it demonstrates only capture->display.

    Can you try to isolate after adding which plugin in gstreamer plugin you are seeing the error 

    gst_fd_memory_get_fd: assertion 'GST_IS_FD_ALLOCATOR (mem->allocator)' failed

    Does capture-->display gst pipeline works without any issue?

    Thanks

    RamPrasad

  • RamPrasad,

    What is not working is the Ducati plugin. I am able to display the cameras with vpe and waylandsink

    Note that kms also doesn't work.

    Would that be a memory assignment issue, the board has 1G or RAM. I'm not using the DSPs as it always compiles for 2 DSP and I only have one.

    The reason I want to convert to mp4 is to resolve an issue I have with the cameras where when I stop one it stops the others. It would be streamed to some local address and we could not have to stop the cal streaming to stop viewing one camera and switch to the other one. Also if we stop one camera and start the other one there is cross talk. Some frames from the other camera appear on the display, it works fine one I restart the streaming on the other camera (from another ssh login)

    TI has no support for mutliplexing cameras on cal so we came up with out own adaptation and we haven't found anyway to resolve this issue.

    Michel Catudal

    ACTIA Corp

  • RamPrasad,

    I got it to work using a different mode than the default, only io-mode 4 works, same as when I do the camera display

    What could be the reason for the default io-mode not working?

    root@actia-dra726-12inch:~/tests# gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,interlaced=true ! vpe ! queue ! waylandsink
    Setting pipeline to PAUSED ...
    Pipeline is live and does not need PREROLL ...
    Setting pipeline to PLAYING ...
    New clock: GstSystemClock

    ** (gst-launch-1.0:1198): CRITICAL **: gst_fd_memory_get_fd: assertion 'GST_IS_FD_ALLOCATOR (mem->allocator)' failed

    ** (gst-launch-1.0:1198): CRITICAL **: gst_fd_memory_get_fd: assertion 'GST_IS_FD_ALLOCATOR (mem->allocator)' failed

    ** (gst-launch-1.0:1198): CRITICAL **: gst_fd_memory_get_fd: assertion 'GST_IS_FD_ALLOCATOR (mem->allocator)' failed

    ** (gst-launch-1.0:1198): CRITICAL **: gst_fd_memory_get_fd: assertion 'GST_IS_FD_ALLOCATOR (mem->allocator)' failed

    ** (gst-launch-1.0:1198): CRITICAL **: gst_fd_memory_get_fd: assertion 'GST_IS_FD_ALLOCATOR (mem->allocator)' failed
    ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data flow error.
    Additional debug info:
    ../../../../gstreamer-1.6.3/libs/gst/base/gstbasesrc.c(2943): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
    streaming task paused, reason error (-5)
    Execution ended after 0:00:00.151041754
    Setting pipeline to PAUSED ...
    Setting pipeline to READY ...
    Setting pipeline to NULL ...
    Freeing pipeline ...

    root@actia-dra726-12inch:~/tests# gst-launch-1.0 v4l2src io-mode=4 device=/dev/video0 ! video/x-raw,interlaced=true ! vpe ! queue ! waylandsink
    Setting pipeline to PAUSED ...
    Pipeline is live and does not need PREROLL ...
    Setting pipeline to PLAYING ...
    New clock: GstSystemClock

    Using io-mode=4 get the command to work without complaints but it doesn't generate a correct mp4 file as I get a error message when trying to play it.

    root@actia-dra726-12inch:~/tests# gst-launch-1.0 playbin uri=file:///home/root/tests/test.mp4 video-sink=waylandsink
    Setting pipeline to PAUSED ...
    Pipeline is PREROLLING ...
    ERROR: from element /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstQTDemux:qtdemux0: This file contains no playable streams.
    Additional debug info:
    ../../../gst-plugins-good-1.6.3/gst/isomp4/qtdemux.c(646): gst_qtdemux_post_no_playable_stream_error (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstQTDemux:qtdemux0:
    no known streams found
    ERROR: pipeline doesn't want to preroll.
    Setting pipeline to NULL ...
    Freeing pipeline ...

    root@actia-dra726-12inch:~/tests# gst-launch-1.0 -v v4l2src io-mode=4 device=/dev/video0 ! video/x-raw,interlaced=true ! vpe ! ducatih264enc ! queue ! h264parse ! mp4mux ! filesink location=test.mp4
    Setting pipeline to PAUSED ...
    [  993.825218] omap-iommu 55082000.mmu: 55082000.mmu: version 2.1
    Pipeline is live and does not need PREROLL ...
    Setting pipeline to PLAYING ...
    New clock: GstSystemClock
    /GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)UYVY\,\ framerate\=\(fraction\)100/1\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ interlace-mode\=\(string\)interleaved\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ colorimetry\=\(string\)bt601\,\ interlaced\=\(boolean\)true"
    /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)UYVY\,\ framerate\=\(fraction\)100/1\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ interlace-mode\=\(string\)interleaved\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ colorimetry\=\(string\)bt601\,\ interlaced\=\(boolean\)true"
    /GstPipeline:pipeline0/GstVpe:vpe0.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)NV12\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ framerate\=\(fraction\)100/1"
    /GstPipeline:pipeline0/GstDucatiH264Enc:ducatih264enc0.GstPad:src: caps = "video/x-h264\,\ alignment\=\(string\)au\,\ stream-format\=\(string\)byte-stream\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ framerate\=\(fraction\)100/1"
    /GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = "video/x-h264\,\ alignment\=\(string\)au\,\ stream-format\=\(string\)byte-stream\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ framerate\=\(fraction\)100/1"
    /GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:sink: caps = "video/x-h264\,\ alignment\=\(string\)au\,\ stream-format\=\(string\)byte-stream\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ framerate\=\(fraction\)100/1"
    /GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = "video/x-h264\,\ alignment\=\(string\)au\,\ stream-format\=\(string\)byte-stream\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ framerate\=\(fraction\)100/1"
    /GstPipeline:pipeline0/GstDucatiH264Enc:ducatih264enc0.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)NV12\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ framerate\=\(fraction\)100/1"
    /GstPipeline:pipeline0/GstVpe:vpe0.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)UYVY\,\ framerate\=\(fraction\)100/1\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ interlace-mode\=\(string\)interleaved\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ colorimetry\=\(string\)bt601\,\ interlaced\=\(boolean\)true"
    /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)UYVY\,\ framerate\=\(fraction\)100/1\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ interlace-mode\=\(string\)interleaved\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ colorimetry\=\(string\)bt601\,\ interlaced\=\(boolean\)true"
    /GstPipeline:pipeline0/GstVpe:vpe0.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)NV12\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ framerate\=\(fraction\)100/1"
    /GstPipeline:pipeline0/GstDucatiH264Enc:ducatih264enc0.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)NV12\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ framerate\=\(fraction\)100/1"
    /GstPipeline:pipeline0/GstDucatiH264Enc:ducatih264enc0.GstPad:src: caps = "video/x-h264\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ framerate\=\(fraction\)100/1\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ stream-format\=\(string\)byte-stream\,\ align\=\(string\)au\,\ num-reorder-frames\=\(int\)3\,\ profile\=\(string\)high\,\ level\=\(string\)4"
    /GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = "video/x-h264\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ framerate\=\(fraction\)100/1\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ stream-format\=\(string\)byte-stream\,\ align\=\(string\)au\,\ num-reorder-frames\=\(int\)3\,\ profile\=\(string\)high\,\ level\=\(string\)4"
    /GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = "video/x-h264\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ framerate\=\(fraction\)100/1\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ stream-format\=\(string\)byte-stream\,\ align\=\(string\)au\,\ num-reorder-frames\=\(int\)3\,\ profile\=\(string\)high\,\ level\=\(string\)4"
    /GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:sink: caps = "video/x-h264\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ framerate\=\(fraction\)100/1\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ stream-format\=\(string\)byte-stream\,\ align\=\(string\)au\,\ num-reorder-frames\=\(int\)3\,\ profile\=\(string\)high\,\ level\=\(string\)4"
    /GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:src: caps = "video/x-h264\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ framerate\=\(fraction\)100/1\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ stream-format\=\(string\)avc\,\ align\=\(string\)au\,\ num-reorder-frames\=\(int\)3\,\ profile\=\(string\)high\,\ level\=\(string\)4\,\ parsed\=\(boolean\)true\,\ alignment\=\(string\)au\,\ codec_data\=\(buffer\)01640028ffe1003c27640028ad84054562b8ac5471080a8ac57158a8e210248521393c9f27e4fe4fc9f279b9b34d081242909c9e4f93f27f27e4f93cdcd9a6cac0b4126401000528de01ae2c"
    /GstPipeline:pipeline0/GstMP4Mux:mp4mux0.GstPad:video_0: caps = "video/x-h264\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ framerate\=\(fraction\)100/1\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ stream-format\=\(string\)avc\,\ align\=\(string\)au\,\ num-reorder-frames\=\(int\)3\,\ profile\=\(string\)high\,\ level\=\(string\)4\,\ parsed\=\(boolean\)true\,\ alignment\=\(string\)au\,\ codec_data\=\(buffer\)01640028ffe1003c27640028ad84054562b8ac5471080a8ac57158a8e210248521393c9f27e4fe4fc9f279b9b34d081242909c9e4f93f27f27e4f93cdcd9a6cac0b4126401000528de01ae2c"
    /GstPipeline:pipeline0/GstMP4Mux:mp4mux0.GstPad:src: caps = "video/quicktime\,\ variant\=\(string\)iso"
    /GstPipeline:pipeline0/GstFileSink:filesink0.GstPad:sink: caps = "video/quicktime\,\ variant\=\(string\)iso"

    Michel Catudal

    ACTIA Corp

  • If I add some debugging I get this

    File test2.sh saved.
    root@actia-dra726-12inch:~/tests# ./test2.sh
    ioctl(5, VIDIOC_QUERYCAP, {driver="cal", card="cal", bus_info="platform:cal-001", version=4.4.45, capabilities=V4L2_CAP_VIDEO_CAPTURE|V4L2_CAP_READWRITE|V4L2_CAP_STREAMING|V4L2_CAP_DEVICE_CAPS|0x200000, device_caps=V4L2_CAP_VIDEO_CAPTURE|V4L2_CAP_READWRITE|V4L2_CAP_STREAMING|0x200000}) = 0
    ioctl(5, VIDIOC_QUERYCAP, {driver="cal", card="cal", bus_info="platform:cal-001", version=4.4.45, capabilities=V4L2_CAP_VIDEO_CAPTURE|V4L2_CAP_READWRITE|V4L2_CAP_STREAMING|V4L2_CAP_DEVICE_CAPS|0x200000, device_caps=V4L2_CAP_VIDEO_CAPTURE|V4L2_CAP_READWRITE|V4L2_CAP_STREAMING|0x200000}) = 0
    ioctl(5, VIDIOC_QUERYCAP, {driver="cal", card="cal", bus_info="platform:cal-001", version=4.4.45, capabilities=V4L2_CAP_VIDEO_CAPTURE|V4L2_CAP_READWRITE|V4L2_CAP_STREAMING|V4L2_CAP_DEVICE_CAPS|0x200000, device_caps=V4L2_CAP_VIDEO_CAPTURE|V4L2_CAP_READWRITE|V4L2_CAP_STREAMING|0x200000}) = 0
    ioctl(5, VIDIOC_QUERYCAP, {driver="cal", card="cal", bus_info="platform:cal-001", version=4.4.45, capabilities=V4L2_CAP_VIDEO_CAPTURE|V4L2_CAP_READWRITE|V4L2_CAP_STREAMING|V4L2_CAP_DEVICE_CAPS|0x200000, device_caps=V4L2_CAP_VIDEO_CAPTURE|V4L2_CAP_READWRITE|V4L2_CAP_STREAMING|0x200000}) = 0
    ioctl(5, VIDIOC_QUERYCAP, {driver="vpe", card="vpe", bus_info="platform:vpe", version=4.4.45, capabilities=V4L2_CAP_VIDEO_M2M_MPLANE|V4L2_CAP_STREAMING|V4L2_CAP_DEVICE_CAPS|0x200000, device_caps=V4L2_CAP_VIDEO_M2M_MPLANE|V4L2_CAP_STREAMING|0x200000}) = 0
    ioctl(5, VIDIOC_ENUM_FMT, {index=0})    = -1 EINVAL (Invalid argument)
    ioctl(5, VIDIOC_ENUM_FMT, {index=0, type=V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, flags=0, description="Y/CbCr 4:2:2", pixelformat=v4l2_fourcc('N', 'V', '1', '6')}) = 0
    ioctl(5, VIDIOC_ENUM_FMT, {index=1, type=V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, flags=0, description="Y/CbCr 4:2:0", pixelformat=v4l2_fourcc('N', 'V', '1', '2')}) = 0
    ioctl(5, VIDIOC_ENUM_FMT, {index=2, type=V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, flags=0, description="YUYV 4:2:2", pixelformat=v4l2_fourcc('Y', 'U', 'Y', 'V')}) = 0
    ioctl(5, VIDIOC_ENUM_FMT, {index=3, type=V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, flags=0, description="UYVY 4:2:2", pixelformat=v4l2_fourcc('U', 'Y', 'V', 'Y')}) = 0
    ioctl(5, VIDIOC_ENUM_FMT, {index=4})    = -1 EINVAL (Invalid argument)
    ioctl(5, VIDIOC_ENUM_FMT, {index=0})    = -1 EINVAL (Invalid argument)
    ioctl(5, VIDIOC_ENUM_FMT, {index=0, type=V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE, flags=0, description="Y/CbCr 4:2:2", pixelformat=v4l2_fourcc('N', 'V', '1', '6')}) = 0
    ioctl(5, VIDIOC_ENUM_FMT, {index=1, type=V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE, flags=0, description="Y/CbCr 4:2:0", pixelformat=v4l2_fourcc('N', 'V', '1', '2')}) = 0
    ioctl(5, VIDIOC_ENUM_FMT, {index=2, type=V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE, flags=0, description="YUYV 4:2:2", pixelformat=v4l2_fourcc('Y', 'U', 'Y', 'V')}) = 0
    ioctl(5, VIDIOC_ENUM_FMT, {index=3, type=V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE, flags=0, description="UYVY 4:2:2", pixelformat=v4l2_fourcc('U', 'Y', 'V', 'Y')}) = 0
    ioctl(5, VIDIOC_ENUM_FMT, {index=4, type=V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE, flags=0, description="24-bit RGB 8-8-8", pixelformat=v4l2_fourcc('R', 'G', 'B', '3')}) = 0
    ioctl(5, VIDIOC_ENUM_FMT, {index=5, type=V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE, flags=0, description="32-bit A/XRGB 8-8-8-8", pixelformat=v4l2_fourcc('R', 'G', 'B', '4')}) = 0
    ioctl(5, VIDIOC_ENUM_FMT, {index=6, type=V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE, flags=0, description="24-bit BGR 8-8-8", pixelformat=v4l2_fourcc('B', 'G', 'R', '3')}) = 0
    ioctl(5, VIDIOC_ENUM_FMT, {index=7, type=V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE, flags=0, description="32-bit BGRA/X 8-8-8-8", pixelformat=v4l2_fourcc('B', 'G', 'R', '4')}) = 0
    ioctl(5, VIDIOC_ENUM_FMT, {index=8, type=V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE, flags=0, description="16-bit RGB 5-6-5", pixelformat=v4l2_fourcc('R', 'G', 'B', 'P')}) = 0
    ioctl(5, VIDIOC_ENUM_FMT, {index=9, type=V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE, flags=0, description="16-bit A/XRGB 1-5-5-5", pixelformat=v4l2_fourcc('R', 'G', 'B', 'O')}) = 0
    ioctl(5, VIDIOC_ENUM_FMT, {index=10})   = -1 EINVAL (Invalid argument)
    ioctl(1, TCGETS, {B115200 opost isig icanon echo ...}) = 0
    Setting pipeline to PAUSED ...
    ioctl(7, VIDIOC_QUERYCAP, {driver="cal", card="cal", bus_info="platform:cal-001", version=4.4.45, capabilities=V4L2_CAP_VIDEO_CAPTURE|V4L2_CAP_READWRITE|V4L2_CAP_STREAMING|V4L2_CAP_DEVICE_CAPS|0x200000, device_caps=V4L2_CAP_VIDEO_CAPTURE|V4L2_CAP_READWRITE|V4L2_CAP_STREAMING|0x200000}) = 0
    ioctl(7, VIDIOC_ENUMINPUT, {index=0, name="Camera 0", type=V4L2_INPUT_TYPE_CAMERA}) = 0
    ioctl(7, VIDIOC_ENUMINPUT, {index=1, name="Camera 1", type=V4L2_INPUT_TYPE_CAMERA}) = 0
    ioctl(7, VIDIOC_ENUMINPUT, {index=2, name="Camera 2", type=V4L2_INPUT_TYPE_CAMERA}) = 0
    ioctl(7, VIDIOC_ENUMINPUT, {index=3, name="Camera 3", type=V4L2_INPUT_TYPE_CAMERA}) = 0
    ioctl(7, VIDIOC_ENUMINPUT, {index=4})   = -1 EINVAL (Invalid argument)
    ioctl(7, VIDIOC_ENUMSTD, {index=0, name="NTSC", frameperiod=1001/30000, framelines=525}) = 0
    ioctl(7, VIDIOC_ENUMSTD, {index=1, name="NTSC-M", frameperiod=1001/30000, framelines=525}) = 0
    ioctl(7, VIDIOC_ENUMSTD, {index=2, name="NTSC-M-JP", frameperiod=1001/30000, framelines=525}) = 0
    ioctl(7, VIDIOC_ENUMSTD, {index=3, name="NTSC-M-KR", frameperiod=1001/30000, framelines=525}) = 0
    ioctl(7, VIDIOC_ENUMSTD, {index=4, name="NTSC-443", frameperiod=1001/30000, framelines=525}) = 0
    ioctl(7, VIDIOC_ENUMSTD, {index=5, name="PAL", frameperiod=1/25, framelines=625}) = 0
    ioctl(7, VIDIOC_ENUMSTD, {index=6, name="PAL-BG", frameperiod=1/25, framelines=625}) = 0
    ioctl(7, VIDIOC_ENUMSTD, {index=7, name="PAL-H", frameperiod=1/25, framelines=625}) = 0
    ioctl(7, VIDIOC_ENUMSTD, {index=8, name="PAL-I", frameperiod=1/25, framelines=625}) = 0
    ioctl(7, VIDIOC_ENUMSTD, {index=9, name="PAL-DK", frameperiod=1/25, framelines=625}) = 0
    ioctl(7, VIDIOC_ENUMSTD, {index=10, name="PAL-M", frameperiod=1001/30000, framelines=525}) = 0
    ioctl(7, VIDIOC_ENUMSTD, {index=11, name="PAL-N", frameperiod=1/25, framelines=625}) = 0
    ioctl(7, VIDIOC_ENUMSTD, {index=12, name="PAL-60", frameperiod=1001/30000, framelines=525}) = 0
    ioctl(7, VIDIOC_ENUMSTD, {index=13, name="SECAM", frameperiod=1/25, framelines=625}) = 0
    ioctl(7, VIDIOC_ENUMSTD, {index=14, name="SECAM-B", frameperiod=1/25, framelines=625}) = 0
    ioctl(7, VIDIOC_ENUMSTD, {index=15, name="SECAM-G", frameperiod=1/25, framelines=625}) = 0
    ioctl(7, VIDIOC_ENUMSTD, {index=16, name="SECAM-H", frameperiod=1/25, framelines=625}) = 0
    ioctl(7, VIDIOC_ENUMSTD, {index=17, name="SECAM-DK", frameperiod=1/25, framelines=625}) = 0
    ioctl(7, VIDIOC_ENUMSTD, {index=18, name="SECAM-L", frameperiod=1/25, framelines=625}) = 0
    ioctl(7, VIDIOC_ENUMSTD, {index=19, name="SECAM-Lc", frameperiod=1/25, framelines=625}) = 0
    ioctl(7, VIDIOC_ENUMSTD, {index=20})    = -1 EINVAL (Invalid argument)
    ioctl(7, VIDIOC_QUERYCTRL, {id=V4L2_CTRL_FLAG_NEXT_CTRL|0 => 0x980001 /* V4L2_CID_??? */, type=V4L2_CTRL_TYPE_CTRL_CLASS, name="User Controls", minimum=0, maximum=0, step=0, default_value=0, flags=V4L2_CTRL_FLAG_READ_ONLY|V4L2_CTRL_FLAG_WRITE_ONLY}) = 0
    ioctl(7, VIDIOC_QUERYCTRL, {id=V4L2_CTRL_FLAG_NEXT_CTRL|0x980001 /* V4L2_CID_??? */ => V4L2_CID_BRIGHTNESS, type=V4L2_CTRL_TYPE_INTEGER, name="Brightness", minimum=-128, maximum=127, step=1, default_value=0, flags=V4L2_CTRL_FLAG_SLIDER}) = 0
    ioctl(7, VIDIOC_QUERYCTRL, {id=V4L2_CTRL_FLAG_NEXT_CTRL|V4L2_CID_BRIGHTNESS => V4L2_CID_CONTRAST, type=V4L2_CTRL_TYPE_INTEGER, name="Contrast", minimum=0, maximum=255, step=1, default_value=100, flags=V4L2_CTRL_FLAG_SLIDER}) = 0
    ioctl(7, VIDIOC_QUERYCTRL, {id=V4L2_CTRL_FLAG_NEXT_CTRL|V4L2_CID_CONTRAST => V4L2_CID_SATURATION, type=V4L2_CTRL_TYPE_INTEGER, name="Saturation", minimum=0, maximum=255, step=1, default_value=128, flags=V4L2_CTRL_FLAG_SLIDER}) = 0
    ioctl(7, VIDIOC_QUERYCTRL, {id=V4L2_CTRL_FLAG_NEXT_CTRL|V4L2_CID_SATURATION => V4L2_CID_HUE, type=V4L2_CTRL_TYPE_INTEGER, name="Hue", minimum=-128, maximum=127, step=1, default_value=0, flags=V4L2_CTRL_FLAG_SLIDER}) = 0
    ioctl(7, VIDIOC_QUERYCTRL, {id=V4L2_CTRL_FLAG_NEXT_CTRL|V4L2_CID_HUE => V4L2_CID_AUTO_WHITE_BALANCE, type=V4L2_CTRL_TYPE_BOOLEAN, name="White Balance, Automatic", minimum=0, maximum=1, step=1, default_value=0, flags=0}) = 0
    ioctl(7, VIDIOC_QUERYCTRL, {id=V4L2_CTRL_FLAG_NEXT_CTRL|V4L2_CID_AUTO_WHITE_BALANCE => V4L2_CID_SHARPNESS, type=V4L2_CTRL_TYPE_INTEGER, name="Sharpness", minimum=0, maximum=15, step=1, default_value=1, flags=V4L2_CTRL_FLAG_SLIDER}) = 0
    ioctl(7, VIDIOC_QUERYCTRL, {id=V4L2_CTRL_FLAG_NEXT_CTRL|V4L2_CID_SHARPNESS => 0x9f0001 /* V4L2_CID_??? */, type=V4L2_CTRL_TYPE_CTRL_CLASS, name="Image Processing Controls", minimum=0, maximum=0, step=0, default_value=0, flags=V4L2_CTRL_FLAG_READ_ONLY|V4L2_CTRL_FLAG_WRITE_ONLY}) = 0
    ioctl(7, VIDIOC_QUERYCTRL, {id=V4L2_CTRL_FLAG_NEXT_CTRL|0x9f0001 /* V4L2_CID_??? */ => 0x9f0902 /* V4L2_CID_??? */, type=V4L2_CTRL_TYPE_INTEGER64, name="Pixel Rate", minimum=0, maximum=0, step=0, default_value=0, flags=V4L2_CTRL_FLAG_READ_ONLY}) = 0
    ioctl(7, VIDIOC_QUERYCTRL, {id=V4L2_CTRL_FLAG_NEXT_CTRL|0x9f0902 /* V4L2_CID_??? */}) = -1 EINVAL (Invalid argument)
    ioctl(7, VIDIOC_G_STD, std=0)           = 0
    ioctl(7, VIDIOC_G_INPUT, index=0)       = 0
    ioctl(8, DRM_IOCTL_VERSION, 0x145460)   = 0
    ioctl(8, DRM_IOCTL_VERSION, 0x145460)   = 0
    ioctl(8, DRM_IOCTL_SET_VERSION, 0xbe9df588) = -1 EACCES (Permission denied)
    ioctl(8, DRM_IOCTL_SET_VERSION, 0xbe9df588) = -1 EACCES (Permission denied)
    ioctl(8, DRM_IOCTL_GET_UNIQUE, 0xbe9df590) = 0
    ioctl(8, DRM_IOCTL_GET_UNIQUE, 0xbe9df590) = 0
    ioctl(8, DRM_IOCTL_SET_VERSION, 0xbe9df588) = 0
    ioctl(8, DRM_IOCTL_GET_UNIQUE, 0xbe9df590) = 0
    ioctl(8, DRM_IOCTL_GET_UNIQUE, 0xbe9df590) = 0
    1.742496] omap-iommu 55082000.mmu: 55082000.mmu: version 2.1
    oictl(8, DRM_IOCTL_VERSION, 0x1865a0)   = 0
    ioctl(8, DRM_IOCTL_VRSION, 0x1865a0)   = 0
    ioctl(8, DRM_IOCTL_GET_UNIQUE, 0xbe9df3c0) = 0
    ioctl(8, DRM_IOCTL_GET_UNIQUE, 0xbe9df3c0) = 0
    ioctl(9, _IOC(_IOC_WRITE, 0x72, 0x01, 0x04), 0x145464) = 0
    ioctl(8, DRM_IOCTL_MSM_GEM_INFO or DRM_IOCTL_OMAP_GEM_NEW, 0xbe9df500) = 0
    ioctl(8, DRM_IOCTL_OMAP_GEM_INFO or DRM_IOCTL_QXL_ALLOC_SURF, 0xbe9df4e0) = 0
    ioctl(8, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0xbe9df51c) = 0
    ioctl(9, _IOC(_IOC_WRITE, 0x72, 0x02, 0x08), 0xbe9df4e8) = 0
    ioctl(9, _IOC(_IOC_WRITE, 0x72, 0x03, 0x08), 0xbe9df500) = 0
    ioctl(8, DRM_IOCTL_GEM_CLOSE, 0xbe9df538) = 0
    ioctl(8, DRM_IOCTL_MSM_GEM_INFO or DRM_IOCTL_OMAP_GEM_NEW, 0xbe9df5c0) = 0
    ioctl(8, DRM_IOCTL_OMAP_GEM_INFO or DRM_IOCTL_QXL_ALLOC_SURF, 0xbe9df5a0) = 0
    ioctl(8, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0xbe9df5dc) = 0
    ioctl(9, _IOC(_IOC_WRITE, 0x72, 0x02, 0x08), 0xbe9df5a8) = 0
    ioctl(8, DRM_IOCTL_MSM_GEM_INFO or DRM_IOCTL_OMAP_GEM_NEW, 0xbe9df5c0) = 0
    ioctl(8, DRM_IOCTL_OMAP_GEM_INFO or DRM_IOCTL_QXL_ALLOC_SURF, 0xbe9df5a0) = 0
    ioctl(8, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0xbe9df5dc) = 0
    ioctl(9, _IOC(_IOC_WRITE, 0x72, 0x02, 0x08), 0xbe9df5a8) = 0
    ioctl(8, DRM_IOCTL_MSM_GEM_INFO or DRM_IOCTL_OMAP_GEM_NEW, 0xbe9df5c0) = 0
    ioctl(8, DRM_IOCTL_OMAP_GEM_INFO or DRM_IOCTL_QXL_ALLOC_SURF, 0xbe9df5a0) = 0
    ioctl(8, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0xbe9df5dc) = 0
    ioctl(9, _IOC(_IOC_WRITE, 0x72, 0x02, 0x08), 0xbe9df5a8) = 0
    ioctl(8, DRM_IOCTL_MSM_GEM_INFO or DRM_IOCTL_OMAP_GEM_NEW, 0xbe9df5c0) = 0
    ioctl(8, DRM_IOCTL_OMAP_GEM_INFO or DRM_IOCTL_QXL_ALLOC_SURF, 0xbe9df5a0) = 0
    ioctl(8, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0xbe9df5dc) = 0
    ioctl(9, _IOC(_IOC_WRITE, 0x72, 0x02, 0x08), 0xbe9df5a8) = 0
    ioctl(8, DRM_IOCTL_MSM_GEM_INFO or DRM_IOCTL_OMAP_GEM_NEW, 0xbe9df5c0) = 0
    ioctl(8, DRM_IOCTL_OMAP_GEM_INFO or DRM_IOCTL_QXL_ALLOC_SURF, 0xbe9df5a0) = 0
    ioctl(8, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0xbe9df5dc) = 0
    ioctl(9, _IOC(_IOC_WRITE, 0x72, 0x02, 0x08), 0xbe9df5a8) = 0
    ioctl(8, DRM_IOCTL_MSM_GEM_INFO or DRM_IOCTL_OMAP_GEM_NEW, 0xbe9df5c0) = 0
    ioctl(8, DRM_IOCTL_OMAP_GEM_INFO or DRM_IOCTL_QXL_ALLOC_SURF, 0xbe9df5a0) = 0
    ioctl(8, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0xbe9df5dc) = 0
    ioctl(9, _IOC(_IOC_WRITE, 0x72, 0x02, 0x08), 0xbe9df5a8) = 0
    ioctl(8, DRM_IOCTL_MSM_GEM_INFO or DRM_IOCTL_OMAP_GEM_NEW, 0xbe9df5c0) = 0
    ioctl(8, DRM_IOCTL_OMAP_GEM_INFO or DRM_IOCTL_QXL_ALLOC_SURF, 0xbe9df5a0) = 0
    ioctl(8, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0xbe9df5dc) = 0
    ioctl(9, _IOC(_IOC_WRITE, 0x72, 0x02, 0x08), 0xbe9df5a8) = 0
    Pipeline is live and does not need PREROLL ...
    /GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)UYVY\,\ framerate\=\(fraction\)100/1\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ interlace-mode\=\(string\)interleaved\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ colorimetry\=\(string\)bt601\,\ interlaced\=\(boolean\)true"
    /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)UYVY\,\ framerate\=\(fraction\)100/1\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ interlace-mode\=\(string\)interleaved\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ colorimetry\=\(string\)bt601\,\ interlaced\=\(boolean\)true"
    /GstPipeline:pipeline0/GstVpe:vpe0.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)NV12\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ framerate\=\(fraction\)100/1"
    /GstPipeline:pipeline0/GstDucatiH264Enc:ducatih264enc0.GstPad:src: caps = "video/x-h264\,\ alignment\=\(string\)au\,\ stream-format\=\(string\)byte-stream\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ framerate\=\(fraction\)100/1"
    /GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = "video/x-h264\,\ alignment\=\(string\)au\,\ stream-format\=\(string\)byte-stream\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ framerate\=\(fraction\)100/1"
    /GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:sink: caps = "video/x-h264\,\ alignment\=\(string\)au\,\ stream-format\=\(string\)byte-stream\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ framerate\=\(fraction\)100/1"
    /GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = "video/x-h264\,\ alignment\=\(string\)au\,\ stream-format\=\(string\)byte-stream\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ framerate\=\(fraction\)100/1"
    /GstPipeline:pipeline0/GstDucatiH264Enc:ducatih264enc0.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)NV12\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ framerate\=\(fraction\)100/1"
    /GstPipeline:pipeline0/GstVpe:vpe0.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)UYVY\,\ framerate\=\(fraction\)100/1\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ interlace-mode\=\(string\)interleaved\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ colorimetry\=\(string\)bt601\,\ interlaced\=\(boolean\)true"
    /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)UYVY\,\ framerate\=\(fraction\)100/1\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ interlace-mode\=\(string\)interleaved\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ colorimetry\=\(string\)bt601\,\ interlaced\=\(boolean\)true"
    Setting pipeline to PLAYING ...
    New clock: GstSystemClock
    /GstPipeline:pipeline0/GstVpe:vpe0.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)NV12\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ framerate\=\(fraction\)100/1"
    /GstPipeline:pipeline0/GstDucatiH264Enc:ducatih264enc0.GstPad:sink: caps = "video/x-raw\,\ format\=\(string\)NV12\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ framerate\=\(fraction\)100/1"
    /GstPipeline:pipeline0/GstDucatiH264Enc:ducatih264enc0.GstPad:src: caps = "video/x-h264\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ framerate\=\(fraction\)100/1\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ stream-format\=\(string\)byte-stream\,\ align\=\(string\)au\,\ num-reorder-frames\=\(int\)3\,\ profile\=\(string\)high\,\ level\=\(string\)4"
    /GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = "video/x-h264\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ framerate\=\(fraction\)100/1\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ stream-format\=\(string\)byte-stream\,\ align\=\(string\)au\,\ num-reorder-frames\=\(int\)3\,\ profile\=\(string\)high\,\ level\=\(string\)4"
    /GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = "video/x-h264\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ framerate\=\(fraction\)100/1\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ stream-format\=\(string\)byte-stream\,\ align\=\(string\)au\,\ num-reorder-frames\=\(int\)3\,\ profile\=\(string\)high\,\ level\=\(string\)4"
    /GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:sink: caps = "video/x-h264\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ framerate\=\(fraction\)100/1\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ stream-format\=\(string\)byte-stream\,\ align\=\(string\)au\,\ num-reorder-frames\=\(int\)3\,\ profile\=\(string\)high\,\ level\=\(string\)4"
    /GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:src: caps = "video/x-h264\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ framerate\=\(fraction\)100/1\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ stream-format\=\(string\)avc\,\ align\=\(string\)au\,\ num-reorder-frames\=\(int\)3\,\ profile\=\(string\)high\,\ level\=\(string\)4\,\ parsed\=\(boolean\)true\,\ alignment\=\(string\)au\,\ codec_data\=\(buffer\)01640028ffe1003c27640028ad84054562b8ac5471080a8ac57158a8e210248521393c9f27e4fe4fc9f279b9b34d081242909c9e4f93f27f27e4f93cdcd9a6cac0b4126401000528de01ae2c"
    /GstPipeline:pipeline0/GstMP4Mux:mp4mux0.GstPad:video_0: caps = "video/x-h264\,\ width\=\(int\)720\,\ height\=\(int\)576\,\ framerate\=\(fraction\)100/1\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ stream-format\=\(string\)avc\,\ align\=\(string\)au\,\ num-reorder-frames\=\(int\)3\,\ profile\=\(string\)high\,\ level\=\(string\)4\,\ parsed\=\(boolean\)true\,\ alignment\=\(string\)au\,\ codec_data\=\(buffer\)01640028ffe1003c27640028ad84054562b8ac5471080a8ac57158a8e210248521393c9f27e4fe4fc9f279b9b34d081242909c9e4f93f27f27e4f93cdcd9a6cac0b4126401000528de01ae2c"
    /GstPipeline:pipeline0/GstMP4Mux:mp4mux0.GstPad:src: caps = "video/quicktime\,\ variant\=\(string\)iso"
    /GstPipeline:pipeline0/GstFileSink:filesink0.GstPad:sink: caps = "video/quicktime\,\ variant\=\(string\)iso"

    Michel

  • I fixed the problem of the mp4 by adding -e

    Still can't figure out why only mode 4 works.

    Michel

  • Hi Michel,

    I didn't realize that your are not setting io-mode property in your pipeline. TI's ducati/vpe etc share buffers through dma-buf framework.

    io-mode 4 or 5 are the only options to use with v4l2src. io-mode=4 means directing v4l2src to allocate dma-buf buffers and io-mode=5 means importing dma-buf from next element.

    io-mode=5 works if pipeline encodes a v4l2src.

    Ex: 

    "gst-launch-1.0 -e -v v4l2src device=/dev/video1 io-mode=5 num-buffers=1000 ! 'video/x-raw, format=(string)NV12, width=(int)1280, height=(int)720, framerate=(fraction)30/1' !  ducatih264enc level=42 profile=66 bitrate=4000 ! queue ! h264parse ! qtmux ! filesink location=x.mp4"

    Here ducatih264enc allocates buffers for v4l2src and this imports the buffers.

    "gst-launch-1.0 -e -v v4l2src device=/dev/video1 io-mode=4 num-buffers=1000 ! 'video/x-raw, format=(string)YUY2, width=(int)1280, height=(int)720, framerate=(fraction)30/1' ! vpe num-input-buffers=8 ! i ducatih264enc level=42 profile=66 bitrate=4000 ! queue ! h264parse ! qtmux ! filesink location=x.mp4"

    Here v4l2src itself allocates dma-buffers.

    Thanks

    RamPrasad 

  • RamPrasad,

    After this test I tried a TI example which didn't work, the one to stream to a local port.

    Here are my scripts, the first one had to be adapted for the analog camera, the second one is the same as the one from TI except that I removed the resizing. In our current application in the vehicle used, full screen is needed.

    gst-launch-1.0 -e v4l2src device=/dev/video0 io-mode=4 ! video/x-raw,interlaced=true ! vpe ! queue ! ducatih264enc intra-interval=1 ! h264parse ! rtph264pay mtu=200 ! udpsink host=127.0.0.1 port=5000 &

    gst-launch-1.0 -v udpsrc port=5000 ! 'application/x-rtp,media=(string)video, clock-rate=(int)90000, payload=(int)96' ! rtph264depay ! h264parse ! ducatih264dec ! vpe ! 'video/x-raw,format=(string)NV12' ! waylandsink sync=false

    Thanks for your info.

    I still can't get the one for version 5 working. I don't know if it is a problem with the arago setup or not. The one based on sdk 3.04 approach uses Poky, that one works. Aside from the differences in kernel and misc video versions, the big difference is that I do not have opencl stuff at all in 3.04 but have it in 5. Is there a conflict between that and bc_examples? Our board uses a DRA726 which has only one DSP.

    The reason I use Poky is that our partners want us to move to AGL and that is what AGL is using. I saw that TI provides some support for AGL but it looks like most TI-RTOS stuff has been removed, a comment said that is because it won't compile. I haven't moved to AGL yet for that reason. That could be a lot of work to get it back in and get it to work.

    Do you have any idea why they can't get that code to compile?

    Michel Catudal

    ACTIA Corp

  • Hi Michel,

    io-mode =5 works if the v4l2src capture is progressive as the captured data directly goes to ducati and no need to get it de-interlaced.

    This could be reason for failure in your case with io-mode=5.

    Thanks

    RamPrasad

  • RamPrasad,

    We have a possibility of 4 analog cameras, they are connected to an ISL79987 from Intersil (Now Renesas) The Intersil device is connected to CSI2_1 (AG5, AH5, AG6, AH6, AG7 and AH7)

    Without de-interlacing I get double pictures.

    I use a modified cal.c with my isl79987 kernel module to read the cameras.

    About kms ...

    I do not have omapwb enabled so I only have /dev/video0 to /dev/video4, /dev/video4 being vpe

    processors.wiki.ti.com/.../Linux_Core_DSS_WB_User's_Guide

    I didn't bother enabling it when I read the comment about kms++ since I cannot get kms to work at all.

    It is compiled in but I get errors when I try to run it.  The only thing that works is waylandsink

    With the RPI I can use eglfs and loading of an application is fast. On our boards weston takes quite a while for the application to load.

    If I could achieve the speed I get on the RPI that would be a lot better.

    Our displays are either 7 inch or 12 inch display from US Micro using a THC63LVD823B connected to VOUT1

    Michel Catudal

    ACTIA Corp