Regarding omx h264 decoder delay in live video streaming

1,144 views
Skip to first unread message

B U J J I

unread,
May 31, 2011, 11:57:21 PM5/31/11
to panda...@googlegroups.com
Hi all,

I am using Pandaboard with Ubuntu 10.10 for developing a videoconferencing system. I read through the "Ducati for Dummies" document and understood the architecture. Also, based on the previous mail, I understood that the code that runs on the Ducati system (Cortex-M3) are available only as binaries and those are integrated into the Ubuntu to be loaded/run on boot on the Cortex-A9. Hope my understandings are correct till this.

A little background, I have worked with DM368 dvsdk4 to build a videoconferencing system (h264 based). We used gstreamer to do the encode/decode. The decode would usually start after 4 to 5 seconds of starting to receive media data. This was because of the dmaibuffer that was buffering data (as the decoder should be feed with only >= 1 frame worth of data) in gstreamer, after optimizing the buffer size, I was able to get realtime decode. Now with that as background, I now see a similar effect with Pandaboard(Ducati system). So I was wondering if there is a similar buffering, if so is there some way to tune the buffers to reduce the latency or any alternatives? One more test that makes me think of possibility of buffering is that when I send stream @800Kbps the delay to start decode is more (5-7secs) and when I send 2Mbps stream the decode starts in 3-4 secs.

Also, the "Ducati for Dummies" page reports that codecs are available for various formats H264, H263, etc. but I see that in the Ubuntu 10.10, GStreamer only the h264 decoder is available. Is it that the other codes are NOT available or they are not integrated in Gstreamer?


Thanks,
Bujji 

Rob Clark

unread,
Jun 1, 2011, 10:11:27 AM6/1/11
to panda...@googlegroups.com
On Tue, May 31, 2011 at 10:57 PM, B U J J I <siva...@gmail.com> wrote:
> Hi all,
> I am using Pandaboard with Ubuntu 10.10 for developing a videoconferencing
> system. I read through the "Ducati for Dummies" document and understood the
> architecture. Also, based on the previous mail, I understood that the code
> that runs on the Ducati system (Cortex-M3) are available only as binaries
> and those are integrated into the Ubuntu to be loaded/run on boot on the
> Cortex-A9. Hope my understandings are correct till this.
>
> A little background, I have worked with DM368 dvsdk4 to build a
> videoconferencing system (h264 based). We used gstreamer to do the
> encode/decode. The decode would usually start after 4 to 5 seconds of
> starting to receive media data. This was because of the dmaibuffer that was
> buffering data (as the decoder should be feed with only >= 1 frame worth of
> data) in gstreamer, after optimizing the buffer size, I was able to get
> realtime decode. Now with that as background, I now see a similar effect
> with Pandaboard(Ducati system). So I was wondering if there is a similar
> buffering, if so is there some way to tune the buffers to reduce the latency
> or any alternatives? One more test that makes me think of possibility of
> buffering is that when I send stream @800Kbps the delay to start decode is
> more (5-7secs) and when I send 2Mbps stream the decode starts in 3-4 secs.

In GStreamer, we feed just one frame at a time to the decoder.
(h264dec can also work in slice mode, but we don't utilize this.) So
there is no significant buffering on the input side.

OTOH there is a display-delay / re-order queue on the output of the
codec, to deal with B-frames. With h264, depending on the resolution,
the size of the re-order queue can be significant.. IIRC 2 x n where n
is # of reference frames, so for lower resolutions it could be a 32
frame delay.

If you know that there are no B-frames, you can explicitly disable the
re-order queue. I'm not aware of any way to do this through OMX, but
you might want to check out gst-ducati[1] which is using libdce[2] to
access the CE interface directly, which gives you a bit more control
on the a9 side.

[1] http://github.com/robclark/gst-ducati
[2] http://github.com/robclark/libdce

> Also, the "Ducati for Dummies" page reports that codecs are available for
> various formats H264, H263, etc. but I see that in the Ubuntu 10.10,
> GStreamer only the h264 decoder is available. Is it that the other codes are
> NOT available or they are not integrated in Gstreamer?

not all codecs are publicly available, but h263 is handled actually by
the mpeg4 decoder, so it is there..

BR,
-R

B U J J I

unread,
Jun 2, 2011, 10:00:18 AM6/2/11
to panda...@googlegroups.com
hi Rob Clark.

thanks for you reply.

I tried the way you have mentioned and i have compiled and installed the libdce and gst-ducati as well
i got the Ducati decoders as gstreamer plugins
but those decoders are not working 

when i did gst-inspect ducatih264dec i got this error

Done initializing RCM server.  Ready to receive requests from Ducati.
dce.c:891: dce_init error: failed to create dCE: 0xfffffff2
dce.c:407: Engine_open error: fail: ffffffef

here i suspect that codec engine name (server name ) is not correct. 
i tried chaing the name as "dCE"  to "RSrv_Ducati1" still no luck.

It would be great if you can guide me where can i get the internal documents so that i can go forward. 

thanks,
bujji

Rob Clark

unread,
Jun 2, 2011, 11:11:50 AM6/2/11
to panda...@googlegroups.com
On Thu, Jun 2, 2011 at 9:00 AM, B U J J I <siva...@gmail.com> wrote:
> hi Rob Clark.
> thanks for you reply.
> I tried the way you have mentioned and i have compiled and installed the
> libdce and gst-ducati as well
> i got the Ducati decoders as gstreamer plugins
> but those decoders are not working
> when i did gst-inspect ducatih264dec i got this error
> Done initializing RCM server.  Ready to receive requests from Ducati.
> dce.c:891: dce_init error: failed to create dCE: 0xfffffff2
> dce.c:407: Engine_open error: fail: ffffffef


oh.. I wonder if you are either still using the original omx firmware
(base_image_appm3.xem) or just haven't loaded the ducati firmare?
That would cause an error at this point.

If you are using ubuntu filesystem, have a look at
/usr/bin/omap-ducati-setup.. and modify it to load dce_app_m3.xem3
instead.

(Then I guess your next problem will be that you don't have encoders
and dce at the same time.. although if someone wants to add encoder
support to libdce and gst-ducati, patches welcome.. actually the
libdce part should be easy, but I've not had time to write encoder
elements in gst-ducati yet)

BR,
-R

B U J J I

unread,
Jun 3, 2011, 3:26:29 PM6/3/11
to panda...@googlegroups.com
hi Rob,
thanks for your reply.
I have tried libdce and gst-ducati from your git.
i have faced few  problems.
when i install my install libdce it didn't install firmware binaries, where apt-get install libdce* does this into /lib/firmware/omap4 .
so tried to put libdce into /lib/firmware manually 
then i tried changing /usr/bin/omap-ducati-setup to use  Ice*.xem3 and  dce_app_m3.xem3
then system hangs...

is this a proper way 
anything i am missing do i need to install omap-utils and syslink manully by compiling ?
brief me if you have a procedure to follow

help me 

Thanks,
bujji

Rob Clark

unread,
Jun 4, 2011, 1:45:05 PM6/4/11
to panda...@googlegroups.com
could you confirm you have:

syslink_daemon.out Notify_MPUSYS_reroute_Test_Core0.xem3 dce_app_m3.xem3

(or Ipc_MPUSYS_reroute_core0.xem3 instead of
Notify_MPUSYS_reroute_Test_Core0.xem3)

There are a few ways this can go wrong if you the syslink kernel and
userspace parts don't match what the .xem3's were built against. But
the dce_app_m3.xem3 should match what was in the 10.10 release (or at
least 10.10 w/ updates)

BR,
-R

B U J J I

unread,
Jun 6, 2011, 2:08:53 PM6/6/11
to panda...@googlegroups.com
hi Rob,
thanks for your reply.
i have tried the same 

syslink_daemon.out Ipc_MPUSYS_reroute_core0.xem3 dce_app_m3.xem3

when i run the above command system hangs and i have to reboot.
as you said there should be some version mismatch 
can you give an overview on how to build ducati framework and gstreamer plugins (versions as well)

thanks,
bujji

Rob Clark

unread,
Jun 6, 2011, 2:52:11 PM6/6/11
to panda...@googlegroups.com
On Mon, Jun 6, 2011 at 1:08 PM, B U J J I <siva...@gmail.com> wrote:
> hi Rob,
> thanks for your reply.
> i have tried the same
> syslink_daemon.out Ipc_MPUSYS_reroute_core0.xem3 dce_app_m3.xem3
> when i run the above command system hangs and i have to reboot.
> as you said there should be some version mismatch

the kernel traces would be useful here.. depending on bootargs, they
might go to UART.. or dmesg cmd would dump them

> can you give an overview on how to build ducati framework and gstreamer
> plugins (versions as well)

all the userspace stuff is pretty standard autotools build setup..
just like compiling some sw on your linux box

ducati side, is a whole different story. Hopefully someone else can
chime in with some help, since I'm a bit short on time at the moment.

Probably the easiest thing to do is use a kernel and userspace
packages that match the dca_app_m3.xem3 firmware, which should match
what is described here:

http://www.omappedia.org/wiki/Ubuntu_OMAP_trunk

(or at least used to as of last Dec-Jan timeframe)

BR,
-R

B U J J I

unread,
Jun 14, 2011, 9:04:34 AM6/14/11
to panda...@googlegroups.com
hi Rob,

I have tried compiling ducati framework for gst-ducati and followed these steps.

i downloaded userspace-syslink, kernel-syslink and tiler-userspace
when i compile userspace-syslink it compiles tiler-userspace also and puts in /usr as well
so libmemmgr syslink got installed 
then i compiled libdce from your git and compiled gst-ducati installed as well.

to put ducati framework i ran the following command and the result below

syslink_daemon.out Ipc_MPUSYS_reroute_core0.xem3 dce_app_m3.xem3

Spawning TILER server daemon...
File Ipc_MPUSYS_reroute_core0.xem3 could not be opened.

what this means ...? (files are there but its not able to load i guess)

and then i just gave command gst-inspect ducatih264dec 

the following log i got..

gst-inspect-0.10 ducatih264dec
Factory Details:
  Long name: DucatiH264Dec
  Class: Codec/Decoder/Video
  Description: Decodes video in H.264/bytestream format with ducati
  Author(s): Rob Clark <r...@ti.com>
  Rank: primary (256)

Plugin Details:
  Name: ducati
  Description: Hardware accellerated codecs for OMAP4
  Filename: /usr/lib/gstreamer-0.10/libgstducati.so
  Version: 0.10.0
  License: LGPL
  Source module: gst-ducati
  Binary package: GStreamer
  Origin URL: http://gstreamer.net/

GObject
 +----GstObject
       +----GstElement
             +----GstDucatiVidDec
                   +----GstDucatiH264Dec

Pad Templates:
  SRC template: 'src'
    Availability: Always
    Capabilities:
      video/x-raw-yuv
                 format: NV12
                  width: [ 1, 2147483647 ]
                 height: [ 1, 2147483647 ]
              framerate: [ 0/1, 2147483647/1 ]
      video/x-raw-yuv-strided
                 format: NV12
              rowstride: [ 0, 2147483647 ]
                  width: [ 1, 2147483647 ]
                 height: [ 1, 2147483647 ]
              framerate: [ 0/1, 2147483647/1 ]

  SINK template: 'sink'
    Availability: Always
    Capabilities:
      video/x-h264
                  width: [ 16, 2048 ]
                 height: [ 16, 2048 ]
              framerate: [ 0/1, 2147483647/1 ]


Element Flags:
  no flags set

Element Implementation:
  Has change_state() function: gst_ducati_viddec_change_state
  Has custom save_thyself() function: gst_element_save_thyself
  Has custom restore_thyself() function: gst_element_restore_thyself

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

Pads:
  SRC: 'src'
    Implementation:
      Has custom eventfunc(): gst_pad_event_default
      Has custom queryfunc(): gst_ducati_viddec_query
        Provides query types:
      Has custom iterintlinkfunc(): gst_pad_iterate_internal_links_default
    Pad Template: 'src'
  SINK: 'sink'
    Implementation:
      Has chainfunc(): gst_ducati_viddec_chain
      Has custom eventfunc(): gst_ducati_viddec_event
      Has custom queryfunc(): gst_pad_query_default
        Provides query types:
      Has custom iterintlinkfunc(): gst_pad_iterate_internal_links_default
    Pad Template: 'sink'

Element Properties:
  name                : The name of the object
                        flags: readable, writable
                        String. Default: null Current: "ducatih264dec0"
  version             : The codec version string
                        flags: alloced:  [p=(nil)(0x0),l=0x100,s=0]
assert: ret (=-1) !== 0 at tiler_mmap(memmgr.c:514)
assert: bufPtr (=(nil)) !!= (nil) at MemMgr_Alloc(memmgr.c:714)
Segmentation fault


where i am going wrong 
and we did not get HDMI display with this kernel as well... black screen is coming.
help appreciated

thanks,
bujji

B U J J I

unread,
Jun 14, 2011, 9:14:31 AM6/14/11
to panda...@googlegroups.com
hi Rob,

I have tried compiling ducati framework for gst-ducati and followed these steps.

i downloaded userspace-syslink, kernel-syslink and tiler-userspace
when i compile userspace-syslink it compiles tiler-userspace also and puts in /usr as well
so libmemmgr syslink got installed 
then i compiled libdce from your git and compiled gst-ducati installed as well.

to put ducati framework i ran the following command and the result below

syslink_daemon.out Ipc_MPUSYS_reroute_core0.xem3 dce_app_m3.xem3

Spawning TILER server daemon...
File Ipc_MPUSYS_reroute_core0.xem3 could not be opened.

what this means ...? (files are there but its not able to load i guess)

and then i just gave command gst-inspect ducatih264dec 

the following log i got..

gst-inspect-0.10 ducatih264dec
Factory Details:
  Long name: DucatiH264Dec
  Class: Codec/Decoder/Video
  Description: Decodes video in H.264/bytestream format with ducati
  Author(s): Rob Clark <r...@ti.com>
  Rank: primary (256)
    . 
    .
    .
Element Properties:
  name                : The name of the object
                        flags: readable, writable
                        String. Default: null Current: "ducatih264dec0"
  version             : The codec version string
                        flags: alloced:  [p=(nil)(0x0),l=0x100,s=0]
assert: ret (=-1) !== 0 at tiler_mmap(memmgr.c:514)
assert: bufPtr (=(nil)) !!= (nil) at MemMgr_Alloc(memmgr.c:714)
Segmentation fault


where i am going wrong 
and we did not get HDMI display with this kernel as well... black screen is coming.
help appreciated

thanks,
bujji

Rob Clark

unread,
Jun 14, 2011, 9:50:11 AM6/14/11
to panda...@googlegroups.com
On Tue, Jun 14, 2011 at 8:04 AM, B U J J I <siva...@gmail.com> wrote:
> Spawning TILER server daemon...
> File Ipc_MPUSYS_reroute_core0.xem3 could not be opened.


Is there some file permission issue or something like this? It sounds
like loading ducati firmware did not succeed, so I'd suspect that
nothing further would work..

BR,
-R

B U J J I

unread,
Jun 16, 2011, 8:53:13 AM6/16/11
to panda...@googlegroups.com
hi Rob,
thanks for your reply.
there is no permissions problem I have checked it properly.
I have tried again from the steps given from syslink project and i have attached my steps and logs i got as it would too big mail so i have attached my steps 

please check the attachment and suggest me how to solve this...


thanks,
Bujji

 ./syslink_daemon.out /home/pandaboard/ducati/libdce/firmware/Ipc_MPUSYS_reroute_core0.xem3 /home/pandaboard/ducati/libdce/firmware/dce_app_m3.xem3 
Spawning TILER server daemon...
root@pandaboard-desktop:/home/pandaboard/syslink/userspace-syslink/syslink/daemons/syslink# MultiProc_getId remoteId: [0x2]
MultiProc_getId remoteId: [0x1]
MultiProc_getId procId: [0x2]
RCM procId= 2
ProcMgr_open Status [0xbabe000]
ProcMgr_attach status: [0x97d2000]
After attach: ProcMgr_getState
    state [0x97d2000]
MultiProc_getId procId: [0x1]
ProcMgr_open Status [0xbabe000]
ProcMgr_attach status: [0x97d2000]
After attach: ProcMgr_getState
    state [0x97d2000]
SYSM3 Load: loading the SYSM3 image /home/pandaboard/ducati/libdce/firmware/Ipc_MPUSYS_reroute_core0.xem3

  Programming proc 2 MMU using linear address 
  Programming SysM3 memory regions
=========================================
VA = [0xa0000000] of size [0x100000] at PA = [0x9cf00000]
VA = [0x0] of size [0x1000000] at PA = [0x9d000000]
VA = [0x80000000] of size [0x1000000] at PA = [0x9e000000]
VA = [0x81000000] of size [0x1000000] at PA = [0x9f000000]
  Programming SysM3 L4 peripherals
=========================================
PA [0x60000000] VA [0x60000000] size [0x10000000]
PA [0x78000000] VA [0x78000000] size [0x8000000]
PA [0x4a000000] VA [0xaa000000] size [0x1000000]
PA [0x48000000] VA [0xa8000000] size [0x1000000]
PA [0x5a000000] VA [0xba000000] size [0x1000000]
PA [0x5b000000] VA [0xbb000000] size [0x1000000]
Error in ProcMMU_init [0xffffffff]
Error in ProcMgr_load, status [0xffffffff]
ipcSetup failed!
syslinklog-1010.txt

B U J J I

unread,
Jun 17, 2011, 3:40:18 AM6/17/11
to panda...@googlegroups.com
Hi Rob,
source from:

SysLink Kernel should be build from the Integrated Kernel

SysLink Userspace should be build from SysLink userspace GIT tree

Tiler Userspace should be build using Tiler tree

Reposotories of versions from:
L24.9
Kernel: branch - L24.9
Userspace: branch - syslink-2.0; tag - ti-syslink-mpu-rls-24.9-p1
Tiler userspace: branch - memmgr_1.0; tag - 24.9

so when i boot my pandaboard i got this following kernel from ..

uname -a
Linux ubuntu 2.6.35-g6d019da-dirty #15 SMP PREEMPT Wed Sep 8 15:33:37 CDT 2010 armv7l GNU/Linux

i compiled installed all the above for my board...
so now i got tiler memory,syslink and libdce and gst-ducati as well.(i took libdce and gst-ducati from your git and i didn't checkout any versions)
------------------------------------------------------------------------------------------------
then i ran 

./syslink_daemon.out /root/libdce/firmware/Ipc_MPUSYS_reroute_core0.xem3 

Spawning TILER server daemon...
................................
Done initializing RCM server.  Ready to receive requests from Ducati.


---------------------------------------------------------------------------------------------
next i ran the below got some error:

./syslink_daemon.out /root/libdce/firmware/dce_app_m3.xem3 

........................

ProcMgr_open Status [0xbabe000]
root@ubuntu:~/userspace-syslink/syslink/daemons/syslink# ProcMgr_attach status: [0xf2ba000]
After attach: ProcMgr_getState
    state [0xf2ba000]
SYSM3 Load: loading the SYSM3 image /root/libdce/firmware/dce_app_m3.xem3

  Programming proc 2 MMU using linear address 
  Programming SysM3 memory regions
=========================================
VA = [0xa0000000] of size [0x100000] at PA = [0x9cf00000]
VA = [0x0] of size [0x1000000] at PA = [0x9d000000]
VA = [0x80000000] of size [0x1000000] at PA = [0x9e000000]
VA = [0x81000000] of size [0x1000000] at PA = [0x9f000000]
  Programming SysM3 L4 peripherals
=========================================
PA [0x60000000] VA [0x60000000] size [0x10000000]
PA [0x78000000] VA [0x78000000] size [0x8000000]
PA [0x4a000000] VA [0xaa000000] size [0x1000000]
PA [0x48000000] VA [0xa8000000] size [0x1000000]
PA [0x5a000000] VA [0xba000000] size [0x1000000]
PA [0x5b000000] VA [0xbb000000] size [0x1000000]
Starting ProcMgr for procID = 2
ProcMgrDrvUsr_ioctl 403 proc id = 2
*** ProcMgrDrvUsr_ioctl: Driver ioctl failed!
Error [0x8f2ba006] at Line no: 418 in file ProcMgrDrvUsr.c
*** ProcMgr_start: API (through IOCTL) failed on kernel-side!
Error [0x8f2ba006] at Line no: 1753 in file ProcMgr.c
Error in ProcMgr_start, status [0x8f2ba006]
ipcSetup failed!

----------------------------------------------------------------------
and continouos error message on boot console:

ipc_proc_sync_start failed: status [0xffffffff]
ipc_attach : ipc_proc_sync_start failed [0xffffffff]
...

please help me to solev this problem...

thanks,
bujji.

Vladimir Pantelic

unread,
Jun 17, 2011, 3:47:41 AM6/17/11
to panda...@googlegroups.com

do you have the syslink entries in /dev?

e.g.:

crw-rw---- 1 root root 240, 0 Jun 17 00:30 /dev/syslink-proc4430
crw-rw---- 1 root root 241, 0 Jun 17 00:30 /dev/syslink-procmgr
crw-rw---- 1 root root 242, 0 Jun 17 00:30 /dev/syslink_ipc

B U J J I

unread,
Jun 17, 2011, 3:50:23 AM6/17/11
to panda...@googlegroups.com
hi,

yes i have syslink_ipc       syslink-proc4430  syslink-procmgr in /dev

thanks,
bujji

Rob Clark

unread,
Jun 18, 2011, 11:18:17 AM6/18/11
to panda...@googlegroups.com

Well, syslink can be a bit temperamental about mismatches between
version on linux vs ducati side. The current dce_app_m3.xem firmware
was built against 10.10 plus mid-term updates, see:

http://www.omappedia.org/wiki/Ubuntu_OMAP_trunk

I suggest using ubuntu 10.10 plus updates described at above wiki page.

I'm starting to put together instructions on rebuilding dce firmware,
now that public codec libs are available. (On ducati-build branch..
although that is still work in progress.. setting up the build
environment for ducati side is not so straightforward, and it is
something I'm just working on when I have a few free minutes here and
there, so it is a bit slow going.)

BR,
-R

B U J J I

unread,
Jun 20, 2011, 7:07:21 AM6/20/11
to panda...@googlegroups.com
Hi Rob,
Thanks for your reply
You have mentioned like public codecs are available.
where can i get the code and build steps.

and for building gst-ducati do you have any particular versions working
please let me know.

where can i find openmax test bench  and WTSD_DucatiMMSW as mentioned in http://www.omappedia.org/wiki/Ducati_For_Dummies

Thanks,
bujji

Vladimir Pantelic

unread,
Jun 20, 2011, 7:19:21 AM6/20/11
to panda...@googlegroups.com
B U J J I wrote:
> Hi Rob,
> Thanks for your reply
> You have mentioned like public codecs are available.
> where can i get the code and build steps.
>
> and for building gst-ducati do you have any particular versions working
> please let me know.
>
> where can i find openmax test bench and WTSD_DucatiMMSW as mentioned in http://www.omappedia.org/wiki/Ducati_For_Dummies

you can't. As I understand it these are TI internal releases that get mentioned on public wikis,
it isn't the first time that happens....

Rob Clark

unread,
Jun 21, 2011, 6:53:00 AM6/21/11
to panda...@googlegroups.com

that is correct, ducati OpenMAX is not opensrc.

As far as building (a libdce/gst-ducati) ducati image, I've started
putting together instructions:

http://www.omappedia.org/wiki/DistributedCodecEngine

this is based on GA codec, BIOS, CE, FC, etc, releases, and newer
syslink/tiler compared to 10.10 kernel / 2.6.35, and (currently) the
version of syslink kernel driver that is in 2.6.38 ubuntu/linaro
kernels. But I don't recommend that you look at that yet *unless* you
know what you are doing and want to help (ie. it is still work in
progress).

BR,
-R

Buru

unread,
Jul 18, 2011, 3:03:11 PM7/18/11
to pandaboard
Hi Rob,

I am trying to Build dce-app_me.xem3 but I am getting error
mentioned below.

I have
kernel ti-2.6.35-omap4-L24.9-p4
userspace-syslink ti-syslink-mpu-rls-24.9-p1
tiler-userspace 24.9
bios-syslink ti-bios-ipc-rls-2.2-p1.2
libdce L24.9-21-gb253492

My ENV is as follows :
XDCPATH=/opt/BIOS_TOOLS/bios-syslink/packages;/opt/BIOS_TOOLS/
codec_engine_2_26_02_11/packages;/opt/BIOS_TOOLS/
framework_components_3_20_02_29/packages;/opt/BIOS_TOOLS/
ivahd_h264dec_01_00_00_00_production/packages;/opt/BIOS_TOOLS/
ivahd_hdvicp20api_01_00_00_19_production/packages;/opt/BIOS_TOOLS/
ivahd_jpegvdec_01_00_00_00_production/packages;/opt/BIOS_TOOLS/
ivahd_mpeg2vdec_01_00_00_00_production/packages;/opt/BIOS_TOOLS/libdce/
packages;/opt/BIOS_TOOLS/xdais_7_21_00_02/packages;/opt/BIOS_TOOLS/
xdctools_3_20_02_59/packages;
XDCBUILDCFG=/opt/BIOS_TOOLS/libdce/ducati/build/config.bld
XDCROOT=/opt/BIOS_TOOLS/xdctools_3_20_02_59
XDCARGS=profile=release


Errors I get are :

configuring out/app_m3/release/dce_app_m3.xem3 from package/cfg/
out/app_m3/release/dce_app_m3_xem3.cfg ...
js: "./dce_app_m3.cfg", line 4: xdc.services.global.XDCException:
xdc.PACKAGE_NOT_FOUND: can't locate the package
'ti.sysbios.hal.unicache' along the path: '/opt/BIOS_TOOLS/bios-
syslink/packages;/opt/BIOS_TOOLS/codec_engine_2_26_02_11/packages;/opt/
BIOS_TOOLS/framework_components_3_20_02_29/packages;/opt/BIOS_TOOLS/
ivahd_h264dec_01_00_00_00_production/packages;/opt/BIOS_TOOLS/
ivahd_hdvicp20api_01_00_00_19_production/packages;/opt/BIOS_TOOLS/
ivahd_jpegvdec_01_00_00_00_production/packages;/opt/BIOS_TOOLS/
ivahd_mpeg2vdec_01_00_00_00_production/packages;/opt/BIOS_TOOLS/libdce/
packages;/opt/BIOS_TOOLS/xdais_7_21_00_02/packages;/opt/BIOS_TOOLS/
xdctools_3_20_02_59/packages;/opt/BIOS_TOOLS/xdctools_3_20_02_59/
packages;../../..;'. Ensure that the package path is set correctly.

I also get similar error for package "ti.omap.dhe"

Thank you
Buru

On Jun 21, 6:53 am, Rob Clark <robdcl...@gmail.com> wrote:

Rob Clark

unread,
Jul 18, 2011, 9:08:54 PM7/18/11
to panda...@googlegroups.com
On Mon, Jul 18, 2011 at 2:03 PM, Buru <mdb...@gmail.com> wrote:
> Hi Rob,
>
>  I am trying to Build dce-app_me.xem3 but I am getting error
> mentioned below.
>
>  I have
>             kernel                          ti-2.6.35-omap4-L24.9-p4
>             userspace-syslink        ti-syslink-mpu-rls-24.9-p1
>             tiler-userspace             24.9
>             bios-syslink                 ti-bios-ipc-rls-2.2-p1.2
>             libdce                          L24.9-21-gb253492
>


I'm not entirely sure this combo will work, due to syslink changes
between 2.6.35 kernel and 2.6.38 kernel.. you'd probably need older
versions of some of the other components to get a matching set, and
these earlier engineering release versions were not all publicly
available.

BR,
-R

Buru

unread,
Jul 20, 2011, 12:48:12 PM7/20/11
to pandaboard

Hello Rob,

I downloaded everything as listed in https://github.com/robclark/libdce.

I built bios-syslink.

I tried then to build libdce.

Now error I get is "xdc.PACKAGE_NOT_FOUND: can't locate the
package 'ti.sdo.ce.video3'..."

I saw that this package is located under libce/packages/
codec_engine and I verfied XDCPATH contains libdce/packages.

Thank you
Biru

Buru

unread,
Jul 21, 2011, 12:00:07 PM7/21/11
to pandaboard
OK , got it... I had incorrect version of codec_engine.

Thank you

On Jul 20, 12:48 pm, Buru <mdb...@gmail.com> wrote:
> Hello Rob,
>
>    I downloaded everything as listed inhttps://github.com/robclark/libdce.
> > >> >> and for buildinggst-ducatido you have any particular versions working

B U J J I

unread,
Jul 22, 2011, 3:51:45 AM7/22/11
to panda...@googlegroups.com
hi Buru,

Can you share the versions(kernel,syslink etc...) of all the components u have used for successful ducati setup and steps.

Thanks,
Bujji

Biju

unread,
Jul 24, 2011, 1:15:43 PM7/24/11
to panda...@googlegroups.com
Rob Clark <robdclark@...> writes:

>
> On Fri, Jun 17, 2011 at 2:40 AM, B U J J I <sivaits4u@...> wrote:
> >
> > ProcMgr_open Status [0xbabe000]
> > root <at> ubuntu:~/userspace-syslink/syslink/daemons/syslink# ProcMgr_attach


Hi,

I get the same errors too :

I build everyting according to https://github.com/robclark/libdce.

My configuration is as follows :

bios_6_31_03_25
codec_engine_3_20_00_16
framework_components_3_20_02_29
ivahd_h264dec_01_00_00_00_production
ivahd_hdvicp20api_01_00_00_19_production
ivahd_jpegvdec_01_00_00_00_production
ivahd_mpeg2vdec_01_00_00_00_production
TMS470CGT4.6.6
xdctools_3_20_07_86
xdais_7_21_00_02
userspace syslink
ti-syslink-mpu-rls-27.12-p1-27gee7e519
(git://git.omapzoom.org/platform/hardware/ti/tiler.git origin/memmgr_2.0)
userspace tiler
24.7.2-39-ga6dda46
(git://git.omapzoom.org/platform/hardware/ti/syslink.git)

and

kernel-omap4
24.7.2-39-ga6dda46
(git://github.com/robclark/kernel-omap4.git ti-omap4-drm branch)

This error also occurs with kernel 2.6.35-903-omap4.

Was anyone able to resolve this issue? if so, how was it done?
Any insights on what may be cause?

Thank you
Biju
~


kozak | Subbu

unread,
Jul 24, 2011, 9:20:25 PM7/24/11
to panda...@googlegroups.com
If you are trying to to run syslink daemon a second daemon without killing it you might see this issue. I suspect thats what is happening in your case.

kozak | Subbu

unread,
Jul 24, 2011, 9:52:03 PM7/24/11
to panda...@googlegroups.com
Also like Rob mentioned, k-2.6.35 and memmgr-2.0 wont fly. You have to have a couple of patches taken in for k35 to work with memmgr-2.0 I guess. You should be good on the user space side though.

B U J J I

unread,
Jul 28, 2011, 7:11:17 AM7/28/11
to panda...@googlegroups.com
Hi all,
I tried the setup from the given instructions  http://www.omappedia.org/wiki/DistributedCodecEngine  and i am able to create .xem3 files successfully as well.

Now I ran the .xem3 files using syslink_dameon i got the following errors...

sudo ./syslink_daemon /home/vu/ducati/Notify_MPUSYS_reroute_Test_Core0.xem3 
Spawning SysLink Daemon...
vu@vu-desktop:~/ducati/syslink/syslink/daemons/syslink$ MultiProc_getId remoteId: [0x2]
MultiProc_getId remoteId: [0x1]
MultiProc_getId remoteId: [0x0]
MultiProc_getId procId: [0x2]
ProcMgr_open Status [0xca11000]
ProcMgr_attach status: [0x0]
After attach: ProcMgr_getState
  state [0x0]
SysM3 Load: loading the SysM3 image /home/vu/ducati/Notify_MPUSYS_reroute_Test_Core0.xem3

  Programming proc 2 MMU using linear address 
  Programming SysM3 memory regions
=========================================
VA = [0xa0000000] of size [0x100000] at PA = [0x9cf00000]
VA = [0x0] of size [0x1000000] at PA = [0x9d000000]
VA = [0x80000000] of size [0x1000000] at PA = [0x9e000000]
VA = [0x81000000] of size [0x1000000] at PA = [0x9f000000]
  Programming SysM3 L4 peripherals
=========================================
PA [0x60000000] VA [0x60000000] size [0x10000000]
PA [0x70000000] VA [0x70000000] size [0x8000000]
PA [0x78000000] VA [0x78000000] size [0x8000000]
PA [0x4a000000] VA [0xaa000000] size [0x1000000]
PA [0x48000000] VA [0xa8000000] size [0x1000000]
PA [0x5a000000] VA [0xba000000] size [0x1000000]
PA [0x5b000000] VA [0xbb000000] size [0x1000000]
PA [0x54000000] VA [0xb4000000] size [0x1000000]
SysM3: Creating Ducati DMM pool of size 0x10000000
Starting ProcMgr for procID = 2
*** ProcMgrDrvUsr_ioctl: Driver ioctl failed!
Error [0x8f2ba006] at Line no: 425 in file ProcMgrDrvUsr.c
*** ProcMgr_start: API (through IOCTL) failed on kernel-side!
Error [0x8f2ba006] at Line no: 1820 in file ProcMgr.c
Error in ProcMgr_start, status [0x8f2ba006]
ipcSetup failed!



sudo ./syslink_daemon /home/vu/ducati/dce_app_m3.xem3 
Spawning SysLink Daemon...
vu@vu-desktop:~/ducati/syslink/syslink/daemons/syslink$ MultiProc_getId remoteId: [0x2]
MultiProc_getId remoteId: [0x1]
MultiProc_getId remoteId: [0x0]
MultiProc_getId procId: [0x2]
ProcMgr_open Status [0xca11000]
ProcMgr_attach status: [0x0]
After attach: ProcMgr_getState
  state [0x0]
SysM3 Load: loading the SysM3 image /home/vu/ducati/dce_app_m3.xem3

  Programming proc 2 MMU using linear address 
  Programming SysM3 memory regions
=========================================
VA = [0xa0000000] of size [0x100000] at PA = [0x9cf00000]
VA = [0x0] of size [0x1000000] at PA = [0x9d000000]
VA = [0x80000000] of size [0x1000000] at PA = [0x9e000000]
VA = [0x81000000] of size [0x1000000] at PA = [0x9f000000]
  Programming SysM3 L4 peripherals
=========================================
PA [0x60000000] VA [0x60000000] size [0x10000000]
PA [0x70000000] VA [0x70000000] size [0x8000000]
PA [0x78000000] VA [0x78000000] size [0x8000000]
PA [0x4a000000] VA [0xaa000000] size [0x1000000]
PA [0x48000000] VA [0xa8000000] size [0x1000000]
PA [0x5a000000] VA [0xba000000] size [0x1000000]
PA [0x5b000000] VA [0xbb000000] size [0x1000000]
PA [0x54000000] VA [0xb4000000] size [0x1000000]
SysM3: Creating Ducati DMM pool of size 0x10000000
Starting ProcMgr for procID = 2
*** ProcMgrDrvUsr_ioctl: Driver ioctl failed!
Error [0x8f2ba006] at Line no: 425 in file ProcMgrDrvUsr.c
*** ProcMgr_start: API (through IOCTL) failed on kernel-side!
Error [0x8f2ba006] at Line no: 1820 in file ProcMgr.c
Error in ProcMgr_start, status [0x8f2ba006]
ipcSetup failed!


please give some inputs...


Thanks,
Bujji

kozak | Subbu

unread,
Jul 28, 2011, 12:22:16 PM7/28/11
to panda...@googlegroups.com
Did you check if syslink_daemon is already running?

B U J J I

unread,
Jul 28, 2011, 3:43:36 PM7/28/11
to panda...@googlegroups.com
Hi,
thanks for your reply. 
yes i checked it. 
its not running before.

Thanks,
Bujji

Rob Clark

unread,
Jul 29, 2011, 5:03:28 PM7/29/11
to panda...@googlegroups.com
I believe you need to run syslink_daemon in one shot w/ both xem3's, ie:

syslink_daemon /home/vu/ducati/Notify_MPUSYS_reroute_Test_Core0.xem3
/home/vu/ducati/dce_app_m3.xem3

(note that in syslink v3.0, the xem3 images actually get combined into
a single firmware binary..)

BR,
-R

B U J J I

unread,
Aug 1, 2011, 10:16:22 AM8/1/11
to panda...@googlegroups.com
Hi Rob,
thanks for your reply.

I have tried same way as you mentioned both at once but syslink is not syslink3
i took all the versions as mentioned in http://www.omappedia.org/wiki/DistributedCodecEngine

I took the kernel from your repo https://github.com/robclark/kernel-omap4
what is the git branch version of kernel should i use ?
and what is the defconfig for it ?

when compiling gst-ducati/libdce i got error that libmemgr is not there so i have changed configure file it as libtimemgr
then its compiling..

when i ran 
syslink_daemon Notify_MPUSYS_reroute_Test_Core0.xem3  dce_app_m3.xem3

it got loaded with default ubuntu (11.04) kernel but errors with ducatih264dec 
and when i use your kernel i got errors while loading with syslink_daemon Notify_MPUSYS_reroute_Test_Core0.xem3  dce_app_m3.xem3

please give me complete details with all versions.

I think we are almost there but still we have find the right solution and we are expecting from you.

Thanks,
Bujji

B U J J I

unread,
Aug 2, 2011, 8:44:46 AM8/2/11
to panda...@googlegroups.com
Hi Rob,
I ran both binaries at once but no luck.
i tried with two kernels one is from your git repo and other from ubuntu-natty. i added logs in the mail and attached dmesg log after syslink_dameon run please check and give me solution.
give me proper versions all the setup softwares

with kernel from Rob Clark git
sudo syslink_daemon Notify_MPUSYS_reroute_Test_Core0.xem3 dce_app_m3.xem3 
Spawning SysLink Daemon...
ubuntu@ubuntu-desktop:~/ducati$ MultiProc_getId remoteId: [0x2]
MultiProc_getId remoteId: [0x1]
MultiProc_getId remoteId: [0x0]
MultiProc_getId procId: [0x2]
ProcMgr_open Status [0xca11000]
ProcMgr_attach status: [0x0]
After attach: ProcMgr_getState
  state [0x0]
MultiProc_getId procId: [0x1]
ProcMgr_open Status [0xca11000]
ProcMgr_attach status: [0x0]
After attach: ProcMgr_getState
  state [0x0]
SysM3 Load: loading the SysM3 image Notify_MPUSYS_reroute_Test_Core0.xem3

  Programming proc 2 MMU using linear address 
  Programming SysM3 memory regions
=========================================
VA = [0xa0000000] of size [0x100000] at PA = [0x9cf00000]
VA = [0x0] of size [0x1000000] at PA = [0x9d000000]
VA = [0x80000000] of size [0x1000000] at PA = [0x9e000000]
VA = [0x81000000] of size [0x1000000] at PA = [0x9f000000]
  Programming SysM3 L4 peripherals
=========================================
PA [0x60000000] VA [0x60000000] size [0x10000000]
PA [0x70000000] VA [0x70000000] size [0x8000000]
PA [0x78000000] VA [0x78000000] size [0x8000000]
PA [0x4a000000] VA [0xaa000000] size [0x1000000]
PA [0x48000000] VA [0xa8000000] size [0x1000000]
PA [0x5a000000] VA [0xba000000] size [0x1000000]
PA [0x5b000000] VA [0xbb000000] size [0x1000000]
PA [0x54000000] VA [0xb4000000] size [0x1000000]
*** DLoad4430_load: Failed to open file!
Error [0x8fade003] at Line no: 597 in file elfload/dload4430.c
*** ProcMgr_load: DLoad4430_load failed.
Error [0x8f2ba003] at Line no: 1544 in file ProcMgr.c
Error in ProcMgr_load, status [0x8f2ba003]
ipcSetup failed!


with ubuntu-natty-pandaboard kernel...

syslink_daemon Notify_MPUSYS_reroute_Test_Core0.xem3 dce_app_m3.xem3 
Spawning SysLink Daemon...
root@ubuntu-desktop:/home/ubuntu/ducati# MultiProc_getId remoteId: [0x2]
MultiProc_getId remoteId: [0x1]
MultiProc_getId remoteId: [0x0]
MultiProc_getId procId: [0x2]

please help.

Thanks & Regards,
Bujji


dmesglog_rob_kernel
dmesglog_ubuntu_kernel

Vijay

unread,
Aug 2, 2011, 5:09:21 AM8/2/11
to pandaboard
Hi Bujji,
Even I have faced similar issue. But As Kozak pointed out, I already
had a syslink.out running. I had killed that process and loaded the
binaries again. And it worked. May be you kill as a normal user and
not as root.. This should help.

try the commands as given below
ps –A | grep syslink*
kill <pid>

After this if u type
ps –A | grep syslink* you will get the syslink daemon de-functioning.

Again you load the binaries. This should help.

Regards,
VIjay

On Jul 28, 4:11 pm, B U J J I <sivait...@gmail.com> wrote:
> Hi all,
> I tried the setup from the given instructionshttp://www.omappedia.org/wiki/DistributedCodecEngine and i am able to
> create .xem3 files successfully as well.
>
> Now I ran the .xem3 files using syslink_dameon i got the following errors...
>
> *sudo ./syslink_daemon
> /home/vu/ducati/Notify_MPUSYS_reroute_Test_Core0.xem3 *
> *sudo ./syslink_daemon /home/vu/ducati/dce_app_m3.xem3 *

B U J J I

unread,
Aug 3, 2011, 6:39:48 AM8/3/11
to panda...@googlegroups.com
Hi Vijay,

Thanks for your reply.

I tried as you said. but no luck

my steps for running:

syslink_daemon Notify_MPUSYS_reroute_Test_Core0.xem3 dce_app_m3.xem3 
Spawning SysLink Daemon...
root@vu-desktop:/home/vu/ducati# MultiProc_getId remoteId: [0x2]
MultiProc_getId remoteId: [0x1]
MultiProc_getId remoteId: [0x0]
MultiProc_getId procId: [0x2]
ProcMgr_open Status [0xca11000]
ProcMgr_attach status: [0x0]
After attach: ProcMgr_getState
  state [0x0]
MultiProc_getId procId: [0x1]
ProcMgr_open Status [0xca11000]
ProcMgr_attach status: [0x0]
After attach: ProcMgr_getState
  state [0x0]
SysM3 Load: loading the SysM3 image Notify_MPUSYS_reroute_Test_Core0.xem3

  Programming proc 2 MMU using linear address 
  Programming SysM3 memory regions
=========================================
VA = [0xa0000000] of size [0x100000] at PA = [0x9cf00000]
VA = [0x0] of size [0x1000000] at PA = [0x9d000000]
VA = [0x80000000] of size [0x1000000] at PA = [0x9e000000]
VA = [0x81000000] of size [0x1000000] at PA = [0x9f000000]
  Programming SysM3 L4 peripherals
=========================================
PA [0x60000000] VA [0x60000000] size [0x10000000]
PA [0x70000000] VA [0x70000000] size [0x8000000]
PA [0x78000000] VA [0x78000000] size [0x8000000]
PA [0x4a000000] VA [0xaa000000] size [0x1000000]
PA [0x48000000] VA [0xa8000000] size [0x1000000]
PA [0x5a000000] VA [0xba000000] size [0x1000000]
PA [0x5b000000] VA [0xbb000000] size [0x1000000]
PA [0x54000000] VA [0xb4000000] size [0x1000000]
*** DLoad4430_load: Failed to open file!
Error [0x8fade003] at Line no: 597 in file elfload/dload4430.c
*** ProcMgr_load: DLoad4430_load failed.
Error [0x8f2ba003] at Line no: 1544 in file ProcMgr.c
Error in ProcMgr_load, status [0x8f2ba003]
ipcSetup failed!

and 

ps -A | grep syslink 
gives nothing

So I am again confirming that syslink_dameon is not running already.

Let me share my setup steps also as well as you said like your setup is working so i can get help from you:

1. downloaded ubuntu-netbook-10.10-preinstalled-netbook-armel+omap4.img.gz and installed into sdcard and finished installtion. y 

i didn't install ubuntu-omap4-extras so i didn't install any syslink related componets so i don't have any syslink now.

2. Now i downloaded kernel from rob clark git
    cd kernel-omap4
    git checkout remotes/origin/ti-omap4-drm
   ( checked out remotes/origin/ti-omap4-drm version branch)

appiled patch also from http://review.omapzoom.org/#change,13113 ( i tried both with/without patch)

   from this kernel with omap4_defconfig i got uImage after make.


3.Now I am created 

Building Ducati/M3 Side

Install TMS470/ARM Compiler

TMS470/ARM Code Generation Tools (CGT) - 4.6.1

Install Code Generation Tools (CGT) from:

Install to $HOME/ducati/ti_cgt_tms470_<version>

Install XDC tools

Download XDC tools from:

XDC tools - 3.20.07.86

Install to $HOME/ducati/xdctools_<version>

Install BIOS

BIOS (the RTOS) - 6.31.03.25

Download BIOS (the RTOS) from:

Install to $HOME/ducati/bios_<version>

Install Codec Engine

Codec Engine (CE) - 3.20.00.16

Download Codec Engine (CE) from:

The lite version is fine. Install to $HOME/ducati/codec_engine_<version>

Install Framework Components

Framework Component (FC) - 3.20.00.22

Download Framework Components (FC) from:

The lite version without fctools is fine. Install to $HOME/ducati/framework_components_<version>

Install XDAIS

XDAIS - 7.20.00.07

Download XDAIS from:

Untar to $HOME/ducati/xdais_<version>

Install HDVICP2 library codecs

HDVICP2 API and HDVICP2_CODECS - 1.00.000

Install HDCICP2 plus desired codecs from:


then

export TMS470_C_DIR="$HOME/ducati/ti_cgt_tms470_4_6_1/include;$HOME/ducati/ti_cgt_tms470_4_6_1/lib"
export TMS470CGTOOLPATH="$HOME/ducati/ti_cgt_tms470_4_6_1"
XDCPATH=""
for f in $HOME/ducati/*/packages; do
  XDCPATH="$XDCPATH$f;"
done
export XDCPATH
export XDCROOT="$HOME/ducati/xdctools_3_20_07_86"
export XDCARGS="profile=release"

then 


cd $HOME/ducati
git clone git://gitorious.org/bios-syslink/bios-syslink.git
cd bios-syslink/packages
git checkout 48e98007e21e311c126f89ff51616bf6d7067b9d
then

diff --git a/packages/config.bld b/packages/config.bld
index 01113a1..17e9862 100644
--- a/packages/config.bld
+++ b/packages/config.bld
@@ -228,6 +228,5 @@ M3.platform = M3.platforms[0];
 
 //Uncomment the require targets
 Build.targets = [
-                    C64T,
                     M3,
                 ];
next

export XDCBUILDCFG="`pwd`/config.bld"
$XDCROOT/xdc clean -PR ./ti
$XDCROOT/xdc -PR ./ti/sdo ./ti/omap/uart/ ./ti/omap/mem/ ./ti/omap/platform/ ./ti/omap/slpm/ ./ti/omap/deh ./ti/omap/hdmiwa
$XDCROOT/xdc -PR ./ti/omap/samples/notify
this has given me
ti/omap/samples/notify/ti_omap_platform_core0/release/Notify_MPUSYS_reroute_Test_Core0.xem3.

Build DCE


cd $HOME/ducati
git clone git://github.com/robclark/libdce.git
cd libdce

export XDCBUILDCFG="`pwd`/ducati/build/config.bld"
cd ducati/platform/base_image
$XDCROOT/xdc -j4 -PD .

now i got out/app_m3/release/dce_app_m3.xem3.


$TMS470CGTOOLPATH/bin/strip470 Notify_MPUSYS_reroute_Test_Core0.xem3 
$TMS470CGTOOLPATH/bin/strip470 dce_app_m3.xem3

with this i got my Notify_MPUSYS_reroute_Test_Core0.xem3 and dce_app_m3.xem3 and i have these two binaries.

Now I changed took the uImage to boot partion of my sdcard from kernel-omap4 (from rob clark)  and booted with this.

Now On Pandaboard i compiled and installed following things

TILER userspace


git clone git://git.omapzoom.org/platform/hardware/ti/tiler.git
cd tiler
git checkout origin/memmgr_2.0
./bootstrap.sh
./configure --prefix=/usr
make -j4
sudo make install

Build Syslink userspace


git clone git://git.omapzoom.org/platform/hardware/ti/syslink.git
cd syslink/syslink
git checkout origin/syslink-2.0
./bootstrap.sh
./configure --prefix=/usr
make -j4
sudo make install

[edit]Build DCE userspace


cd libdce
./autogen --prefix=/usr
make -j4
sudo make install

now I took Notify_MPUSYS_reroute_Test_Core0.xem3 and dce_app_m3.xem3  from my system where they got created and copied to 
Pandaboard.
and ran like this
sudo syslink_daemon Notify_MPUSYS_reroute_Test_Core0.xem3 dce_app_m3.xem3 

this has failed ofcourse starting of this i have put the log that I got.


Now tell me where I am going wrong Is this the correct procedure with all versions if not tell me what u did ?

please reply back to me with all the software u used and tried that is working successfully...

Thanks and Regards,
Bujji

kozak | Subbu

unread,
Aug 3, 2011, 9:26:07 AM8/3/11
to panda...@googlegroups.com
From the logs that you posted it seems like the file you are trying to load is not there.

DLoad4430_load: Failed to open file!

Please check if toy have both the files in the path that you are passing to daemon

Kozak

wolfgar

unread,
Aug 13, 2011, 10:18:39 PM8/13/11
to pandaboard
Hi there,

I am currently trying to build and use gst-ducati on my new
pandaboard.
I followed very carefully the great explanations from rob at
http://www.omappedia.org/wiki/DistributedCodecEngine and managed to
build the two xem3 for the M3 and tiler/syslink/libdce for the A9.
Unfortunately, syslink_daemon fails that way when I launch it :
http://pastebin.com/uzeLDMhW
(I post both the error from daemon and a dmesg from the kernel)

I ask in this thread because my dmesg is VERY similar from the one
posted by bujji...

I thank you very much by advance for any help regarding this issue

Best regards

wolfgar

unread,
Aug 14, 2011, 10:48:58 PM8/14/11
to pandaboard
I answer myself :
this syslink commit
http://git.omapzoom.org/?p=platform/hardware/ti/syslink.git;a=commit;h=bbbedc6f626b016a78bf51bd95dc75714986cfc6
broke the compatibility with the kernel because RPROC_IOCSTART and
RPROC_IOCSTOP are no longer the same for the kernel (arch/arm/plat-
omap/include/plat/remoteproc.h) and for syslink (syslink/api/include/
ProcMgrDrvDefs.h)...

@Bujji : I think it was also your issue...

Best regards,

PS : Rob , sorry for cross posting as a comment on your blog : My
message was so long to appear in this list that i though it was
lost...

Pavan

unread,
Aug 17, 2011, 6:11:20 AM8/17/11
to pandaboard
Hi,

Thanks wolfgar for the suggestion and bujji has reverted the patches
of syslink and now he is now able to load the syslink properly.

Now When we run below Pipeline on Panda after syslink_daemon is
loaded,we see the tiler ioctl issues shown below:

"assert: ioctl(td, TILIOC_GBLK, blk) (=-1) !== 0 at
tiler_alloc(memmgr.c:438): Cannot allocate memory
assert: tiler_alloc(blks + ix) (=-1) !== 0 at MemMgr_Alloc(memmgr.c:
771)

"
Pipeline:gst-launch-0.10 playbin2 uri=file:///home/work/
sample.mp4 video-sink=fakesink -v
Note:Tile format is 8Bit and width =1 height=2.

I tried debugging the same in kernel and found at /tiler/tiler-main.c
the function alloc_block() function is returning -ENOMEM

we also tried with 2 different mem size combination in boot.script as
shown below:
1.setenv bootargs ro elevator=noop vram=32M mem=460M@0x80000000
mem=256M@0xA0000000
2.setenv bootargs ro elevator=noop vram=32M mem=456M@0x80000000
mem=512M@0xA0000000

I guess we have given enough mem space as shown above.

Please do let me know for any suggestion on why there is no memory for
Tiler.

Thanks
pavandsp



On Aug 15, 7:48 am, wolfgar <stephan.ra...@gmail.com> wrote:
> I answer myself :
> this syslink commithttp://git.omapzoom.org/?p=platform/hardware/ti/syslink.git;a=commit;...

wolfgar

unread,
Aug 17, 2011, 10:06:13 AM8/17/11
to pandaboard
Hi pavandsp,

Nice to read it helped...
It seems that we follow the same (hard) way : I also got these errors.
For now i have not searched how to increase the bufferpool but I found
a way to bypass the error.
I added the property flags=0x00000067 for playbin2 : It seems that
when doing so, there is less queuing (not sure, I am not a gstreamer
expert).
At least it worked for me ! Just try that way :
gst-launch-0.10 playbin2 flags=0x00000067 uri=file:///home/work/
sample.mp4 video-sink=fakesink -v

Regards,

Wolfgar
PS : If you find how to increase the bufferpool, please share it...

Vladimir Pantelic

unread,
Aug 17, 2011, 10:20:03 AM8/17/11
to panda...@googlegroups.com
wolfgar wrote:
> Hi pavandsp,
>
> Nice to read it helped...
> It seems that we follow the same (hard) way : I also got these errors.
> For now i have not searched how to increase the bufferpool but I found
> a way to bypass the error.

how many buffer is gst trying to allocate?

you can get up to 20 1080p buffers from tiler for sure.

please do:

echo 1 > /sys/module/tiler_omap/parameters/alloc_debug

and rerun

> I added the property flags=0x00000067 for playbin2 : It seems that
> when doing so, there is less queuing (not sure, I am not a gstreamer
> expert).
> At least it worked for me ! Just try that way :
> gst-launch-0.10 playbin2 flags=0x00000067 uri=file:///home/work/
> sample.mp4 video-sink=fakesink -v
>
> Regards,
>
> Wolfgar
> PS : If you find how to increase the bufferpool, please share it...
>

wolfgar

unread,
Aug 17, 2011, 11:20:46 AM8/17/11
to pandaboard
Hi Vladimir,

/sys/module/tiler_omap/parameters/alloc_debug does not exist with my
kernel build. (I only have align, grain, security, ssptr_lookup,
cache, offset_lookup, ssptr_id in this folder)
I suppose I have to enable some kind of debug option for tiler in the
kernel configuration to have it...

Yet, for now, I have a debug log from gst which shows that there are
many allocations (more than 400 !) before the errors occur. Here is
the log : http://pastebin.pandaboard.org/index.php/view/28385656

I get this error with this command :

gst-launch --gst-debug-no-color --gst-debug=playbin2:4,ducati:4
playbin2
uri=file:///CRYS2multPROPHETSeV70hd.mkv video-sink=fakesink audio-
sink=fakesink

If I add the flags=0x00000067 property, it just works (while
ffmpegcolorspace and videoscale are not used by playbin2 for my
sample)

If I perform the test :

gst-launch --gst-debug=ducati:5 filesrc location=/
CRYS2multPROPHETSeV70hd.mkv ! matroskademux ! nal2bytestream_h264 !
ducatih264dec ! fakesink

It also works great (there are only a few allocations before the
switching to playing state in these 2 later cases)

As a conclusion, I fear that we hit a strange queuing mechanism
related to playbin2 and the tiler allocations are not responsible in
any way for our troubles (Well it is only the symptom but we can
easily understand that the pool runs out of memory after so many
allocations)

Best regards

Wolfgar

Rob Clark

unread,
Aug 17, 2011, 4:01:48 PM8/17/11
to panda...@googlegroups.com

no problem.. I think the problem is the wiki was pointing to wrong
kernel branch (there was one linux side kernel patch needed if you
have the above patch) and the branch I was originally pointing to
didn't have it. Sorry 'bout that.

BR,
-R

Rob Clark

unread,
Aug 17, 2011, 4:07:34 PM8/17/11
to panda...@googlegroups.com
On Wed, Aug 17, 2011 at 10:20 AM, wolfgar <stepha...@gmail.com> wrote:
> Hi Vladimir,
>
> /sys/module/tiler_omap/parameters/alloc_debug does not exist with my
> kernel build. (I only have align, grain, security, ssptr_lookup,
> cache, offset_lookup, ssptr_id in this folder)
> I suppose I have to enable some kind of debug option for tiler in the
> kernel configuration to have it...
>
> Yet, for now, I have a debug log from gst which shows that there are
> many allocations (more than 400 !) before the errors occur. Here is
> the log : http://pastebin.pandaboard.org/index.php/view/28385656


hmm, yeah, it sounds like there is definitely some sort of leak going on.

fwiw, it might be helpful to visualize the pipeline to see what
elements end up in the pipeline:

http://gstreamer.freedesktop.org/wiki/DumpingPipelineGraphs

in the TI gst packages we had patched playbin2 to pick the
'stridetransform' element instead of ffmpegcolorspace. Possibly
missing that patch causes some issue.

/me looks fwd to gst 0.11/1.0 with proper stride support and not so
many TI patches ;-)


BR,
-R

wolfgar

unread,
Aug 17, 2011, 7:36:45 PM8/17/11
to pandaboard
> no problem.. I think the problem is the wiki was pointing to wrong
> kernel branch (there was one linux side kernel patch needed if you
> have the above patch) and the branch I was originally pointing to
> didn't have it.  Sorry 'bout that.
>
> BR,

Hi Rob,
Many thanks for pointing the right commit in the other branch for for
updating the wiki for the newcomers...
(I was too lazy to solve the issue the proper way and reverted the
syslink patch ;) )
Regards

wolfgar

unread,
Aug 17, 2011, 8:04:32 PM8/17/11
to pandaboard

> hmm, yeah, it sounds like there is definitely some sort of leak going on.
>
> fwiw, it might be helpful to visualize the pipeline to see what
> elements end up in the pipeline:
>
>  http://gstreamer.freedesktop.org/wiki/DumpingPipelineGraphs

Thanks for the tip, I will give it a try !


> in the TI gst packages we had patched playbin2 to pick the
> 'stridetransform' element instead of ffmpegcolorspace.  Possibly
> missing that patch causes some issue.
>

Again many thanks for this info : It really helps !
In fact I was aware of ti patches but unable to sort the ones required
for my needs :
In the wiki pages I found, it is always alluded to davinci omap3530 or
DMxx and not omap4
I also had a look at arago project but when I saw there were private
links in some recipes, I dropped it...

So I ended up building a standard gstreamer using your nal2bytestream
plugin from gitorious and your gst-ducati plugin from github
But obviously i still lack some little pieces to get a perfect
solution ;)

A friend has just borrowed my board but as soon as I get it back I
will try to push the playbin2 patch and give it a try...
Many thanks for your very valuable help ...

Regards,
Stephan

PS : My final goal is to build a mediacenter on my panda which would
be based on native EGL + clutter + media explorer with gst-ducati as a
backend to play video. As soon as i get a working solution, i will
publish the image and all the open embedded recipes/patches to build
it from scratch. I am not so far... At least I hope so ;))

Rob Clark

unread,
Aug 17, 2011, 8:29:32 PM8/17/11
to panda...@googlegroups.com
On Wed, Aug 17, 2011 at 7:04 PM, wolfgar <stepha...@gmail.com> wrote:
>
>> hmm, yeah, it sounds like there is definitely some sort of leak going on.
>>
>> fwiw, it might be helpful to visualize the pipeline to see what
>> elements end up in the pipeline:
>>
>>  http://gstreamer.freedesktop.org/wiki/DumpingPipelineGraphs
>
> Thanks for the tip, I will give it a try !
>
>
>> in the TI gst packages we had patched playbin2 to pick the
>> 'stridetransform' element instead of ffmpegcolorspace.  Possibly
>> missing that patch causes some issue.
>>
>
> Again many thanks for this info : It really helps !
> In fact I was aware of ti patches but unable to sort the ones required
> for my needs :
> In the wiki pages I found, it is always alluded to davinci omap3530 or
> DMxx and not omap4
> I also had a look at arago project but when I saw there were private
> links in some recipes, I dropped it...
>
> So I ended up building a standard gstreamer using your nal2bytestream
> plugin from gitorious and your gst-ducati plugin from github
> But obviously i still lack some little pieces to get a perfect
> solution ;)
>
> A friend has just borrowed my board but as soon as I get it back I
> will try to push the playbin2 patch and give it a try...
> Many thanks for your very valuable help ...


I'd recommend using the tree's at:

http://gitorious.org/gstreamer-omap

the L24.14 tags should be good

BR,
-R

Stephan Heuser

unread,
Aug 18, 2011, 3:51:24 AM8/18/11
to panda...@googlegroups.com

I'm actually working on a similar solution, using Xbox Media Center, the
experimental gstreamer backend and gst-ducati. Unfortunatly i currently
do not have to much time for this project. Current status is XBMC is
running fine and i started to set up gst-ducati. Please keep us posted
with your progress on getting gst-ducati up and running! It is much
appreciated.

Best regards,
Stephan

>
>
>> BR,
>> -R
>>
>>> I get this error with this command :
>>
>>> gst-launch --gst-debug-no-color --gst-debug=playbin2:4,ducati:4
>>> playbin2
>>> uri=file:///CRYS2multPROPHETSeV70hd.mkv video-sink=fakesink audio-
>>> sink=fakesink
>>
>>> If I add the flags=0x00000067 property, it just works (while
>>> ffmpegcolorspace and videoscale are not used by playbin2 for my
>>> sample)
>>
>>> If I perform the test :
>>
>>> gst-launch --gst-debug=ducati:5 filesrc location=/
>>> CRYS2multPROPHETSeV70hd.mkv ! matroskademux ! nal2bytestream_h264 !
>>> ducatih264dec ! fakesink
>>
>>> It also works great (there are only a few allocations before the
>>> switching to playing state in these 2 later cases)
>>
>>> As a conclusion, I fear that we hit a strange queuing mechanism
>>> related to playbin2 and the tiler allocations are not responsible in
>>> any way for our troubles (Well it is only the symptom but we can
>>> easily understand that the pool runs out of memory after so many
>>> allocations)
>>
>>> Best regards
>>
>>> Wolfgar
>>

wolfgar

unread,
Sep 1, 2011, 3:09:43 PM9/1/11
to pandaboard
Hi there,

Sorry for the delay of my answer : I was unable to work on my board
during the last 2 weeks.

Anyway, here are some news :
- First, Thanks again Rob ! You were right : When building the L24.14
gstreamer-omap there is no longer the strange allocation issue with
playbin2 even without the specific flags attribute.

- Then I ran into new troubles :
* A first one is related to syslink : In a given context the server
thread which is waiting on a semaphore before entering his main loop
is not awaken when the semaphore is signaled. This is weird. I have a
very quick and dirty workaround for now but I will investigate further
to understand the real issue and post a full report if the issue is
not related the context(obviously as it happens only in some
applications and not in others I am not 100% sure the "real" issue is
in librcm.so).

* Then I tried to achieve my goal : Use clutter-gst as a video sink
behind gst-ducati.
For now I have the following issue : gst-ducati produces a NV12 format
and clutter-gst is not able to accept such a format (yet it has
support for YV12, I420, and other RGB formats)
Between the 2 elements there is the video converter stridetransform
which is unable to perform the required conversion (It only deals with
the stride attribute but not with the format itself if I understand
correctly...)
Of course I could transform the buffer in clutter-gst or I could add
some additional computing in stridetransform or I could try to add
ffmpegcolorspace in the pipeline but I fear it would be a inefficient
way to address this issue.
Instead, I had a look at TI codec Engine API and I think that I could
modify gst-ducati so that it directly outputs a I420 format.
If I understand correctly : I would have to change the params-
>forceChromaFormat from XDM_YUV_420SP to XDM_YUV_420P and I also would
have to modify the codec_prepare_outbuf function to configure 3
buffers instead of 2. The total buffer size would be the same if I
switch from NV12 to I420...
In fact, maybe the better generic solution would be to enable
gst_ducati to produce different formats and to select the most
appropriate during caps negotiation ?
Am I right ? Do you think it is a correct/doable approach ?

Anyway, I will keep you informed about my progress...

Best regards

Stephan

wolfgar

unread,
Sep 1, 2011, 6:23:57 PM9/1/11
to pandaboard
I answer myself :

I was stupid : The ducati decoder is unable to output another format
than NV12. I was fooled by the generic API but in fact we have to
stick to NV12 format...
After getting errors when I tried to create the codec with another
format I found the H264_Decoder_HDVICP2_UserGuide and I understood
that I am out of luck to get another format out of the ducati
decoder ...

So I will switch to a software conversion from NV12 to I420...

Yet, I have another silly question : gst-ducati advertises caps with
padded dimensions.
How the gstreamer video sinks are supposed to extract the useful part
of the image and to know the "real" dimensions ?
I thank you for any help...

Regards,

Rob Clark

unread,
Sep 2, 2011, 12:00:09 AM9/2/11
to panda...@googlegroups.com
On Thu, Sep 1, 2011 at 5:23 PM, wolfgar <stepha...@gmail.com> wrote:
> I answer myself :
>
> I was stupid : The ducati decoder is unable to output another format
> than NV12. I was fooled by the generic API but in fact we have to
> stick to NV12 format...

yes, only NV12

> After getting errors when I tried to create the codec with another
> format I found the H264_Decoder_HDVICP2_UserGuide and I understood
> that I am out of luck to get another format out of the ducati
> decoder ...
>
> So I will switch to a software conversion from NV12 to I420...
>
> Yet, I have another silly question : gst-ducati advertises caps with
> padded dimensions.
> How the gstreamer video sinks are supposed to extract the useful part
> of the image and to know the "real" dimensions ?
> I thank you for any help...

There is a crop event that is pushed downstream towards the sink
element to tell what are the real dimensions and what part of the
buffer should be displayed

See the GST_EVENT_CROP stuff in v4l2sink (on TI branch) for example

BR,
-R

> Regards,
>

Vladimir Pantelic

unread,
Sep 2, 2011, 2:43:44 AM9/2/11
to panda...@googlegroups.com
On 09/02/2011 12:23 AM, wolfgar wrote:
> I answer myself :
>
> I was stupid : The ducati decoder is unable to output another format
> than NV12. I was fooled by the generic API but in fact we have to
> stick to NV12 format...
> After getting errors when I tried to create the codec with another
> format I found the H264_Decoder_HDVICP2_UserGuide and I understood
> that I am out of luck to get another format out of the ducati
> decoder ...
>
> So I will switch to a software conversion from NV12 to I420...

Are you sure you cant teach the downstream element to handle NV12?
Most likely it will touch that data anyway and convert it to RGB or so,
so doing another memory2memory conversion inbetween seems pointless

Vladimir Pantelic

unread,
Sep 2, 2011, 2:55:28 AM9/2/11
to panda...@googlegroups.com
On 09/01/2011 09:09 PM, wolfgar wrote:

> ffmpegcolorspace in the pipeline but I fear it would be a inefficient

whatever you do, please do not consider ffmpegcolorspace, despite having
FFmpeg in its name it is slow, pure C code with no assembler
optimization whatsoever..

wolfgar

unread,
Sep 2, 2011, 8:46:24 PM9/2/11
to pandaboard
Hi

> There is a crop event that is pushed downstream towards the sink
> element to tell what are the real dimensions and what part of the
> buffer should be displayed
Many thanks for your answer Rob : always very useful !
Sorry, I should have though about v4l2sink as a good instance to look
at...
I am going to adapt clutter-gst to deal with this event.

> Are you sure you cant teach the downstream element to handle NV12?
> Most likely it will touch that data anyway and convert it to RGB or so,
> so doing another memory2memory conversion inbetween seems pointless
Vladimir : You are definitively right it is the best option and I will
implement the way you suggest ...
Thanks for the tips

Regards

Stephan

wolfgar

unread,
Sep 4, 2011, 9:04:02 PM9/4/11
to pandaboard
Me again,

Well, I have a kind of working solution but it is not good at all for
now : I have to come across stridetransform, a slow and inefficient
NV12 to I420 conversion and slow GL textures uploads.
So at the end, obviously, I am not able to decode and display a full
HD H264 video with this mess...

I tried to find a solution and I think that the only really efficient
solution would be to add support for the bc_cat driver to cogl (which
is the clutter openGL abstraction library)
That way I could directly submit the NV12 buffers to create the
texture and I would have an efficient workaround for GL textures
uploads.
I found Rob's bcsink project (http://gitorious.org/gst-plugin-bc/) and
well, it is not only a great piece of code but It also seems quite
close from my need (except that I would like to make it fit in clutter
world)

What do you think about this solution ? Do you think it is worthy to
dig this approach ?
If yes, I have another question :
I had a look at bcsink and this video sink tries to provide the gst
buffers by asking bc_cat to allocate them. Yet, in my solution, I
would rather have to move the gst-ducati allocater in the video sink
and to register the buffers to bc_cat with BCIOSET_BUFFERPHYADDR,
right ?

I thank you for any feedback and tips.
If the way I describe is not doable, I will stop trying to use EGL +
clutter + media explorer and I will try to setup an image based on
more conventional stuff like enna I think...

Best regards,

Stephan

Vladimir Pantelic

unread,
Sep 5, 2011, 5:07:33 AM9/5/11
to panda...@googlegroups.com
wolfgar wrote:

> If the way I describe is not doable, I will stop trying to use EGL +
> clutter + media explorer and I will try to setup an image based on
> more conventional stuff like enna I think...

and using one of the hardware overlays directly is not an option
at all?

Or do you need to further "transform" the video using the sgx unit?

Rob Clark

unread,
Sep 5, 2011, 2:58:31 PM9/5/11
to panda...@googlegroups.com
btw, you might want to look at:

http://omapedia.org/wiki/V4L2-GFX

bc-cat is a bit old, and was never updated for NV12/tiler buffers on
omap4.. v4l2-gfx accomplishes basically the same thing but is updated
to support the hw codecs on omap4.

BR,
-R

wolfgar

unread,
Sep 5, 2011, 7:16:49 PM9/5/11
to pandaboard

> btw, you might want to look at:
>  http://omapedia.org/wiki/V4L2-GFX
Once again you are the man !
Many thanks Rob...

> bc-cat is a bit old, and was never updated for NV12/tiler buffers on
> omap4..  v4l2-gfx accomplishes basically the same thing but is updated
> to support the hw codecs on omap4.
You saved my few remaining hairs ! lol

OK I go this way and try to find a way to use this method with clutter
so that it just appears as a standard cluttermedia...
Thanks again

Regards



>
> BR,
> -R

wolfgar

unread,
Sep 5, 2011, 7:40:24 PM9/5/11
to pandaboard

> and using one of the hardware overlays directly is not an option
> at all?
You mean by using v4l2sink ?
That would mean I give up the idea of the video frames being handled
as GL textures.
Well I have a look at v4l2-gfx as rob suggested and if i cant make it
work then you are right i will go this way...
Thanks for your help !
Regards

Rob Clark

unread,
Sep 7, 2011, 5:44:20 PM9/7/11
to panda...@googlegroups.com

Note that, if you don't need transformational effects on the video,
you could perhaps put the video overlay layer *behind* the fb layer.
I guess there must be some way with some shader tricks to convince GL
to output ARGB with a hole left for video? (It would let you use GL
to implement OSD and that sort of thing, while still using using
overlay for the video layer.)

Not sure if that is harder/easier than v4l2-gfx.. but just throwing an
idea out there.

BR,
-R

kuze...@gmail.com

unread,
Apr 29, 2012, 4:35:34 PM4/29/12
to panda...@googlegroups.com
Hello!
Where to get
HDVICP2 codec package?

Vladimir Pantelic

unread,
May 1, 2012, 6:29:45 PM5/1/12
to panda...@googlegroups.com
On 04/29/2012 10:35 PM, kuze...@gmail.com wrote:
> Hello!
> Where to get *HDVICP2 codec package?

from TI, at least that is where I got it from.
Entering into some kind of "business deal" at the
same time might help though...


Reply all
Reply to author
Forward
0 new messages