Best way for using Gstreamer + Openmax with DSP on beagle board ?

Hi everyone !!!

I have been following [1] and [2] to check whether I can play an avi file using gstreamer + Openmax with DSP acceleration.
I have been using my own cooked up makefiles for building each of the gstreamer dep packages. For each packages I looked up the options from OE meta data. And by trial and error, i resolved each of the unwanted dependencies.

I tried the instruction given in the [2]

gst-launch-0.10 filesrc location=“foobar.avi” ! avidemux ! omx_mpeg4dec ! omapfbsink

Setting pipeline to PAUSED …
OMX-Component not found with current ST static component loader.
ERROR: Pipeline doesn’t want to pause.
Setting pipeline to NULL …
FREEING pipeline …

Any one else came across this problem ?

I would like to know one more thing. [2] specifies to use libomxil-ti but does not mention anything about libomxil-bellagio. Do we really need that ? I build it anyway to the rootfs.

thanks

jesslyn

[1] http://elinux.org/BeagleBoard/DSP_Howto
[2] http://elinux.org/BeagleBoard/gst-openmax
[3] http://groups.google.com/group/beagleboard/browse_thread/thread/be4d5f55bd4f8b19/6992959974d89716?lnk=gst&q=How+to+get+DSP+working+in+beagleboard%3F#6992959974d89716

I am not running that set of software, so this is just a guess based
on the output. It sounds like gst-launch cannot find/load a library
it needs to load. Where did you install or build the libraries that
do the decoding? Did you set LD_LIBRARY_PATH or any paths that gst-
launch uses to find loadable libraries? Is there anything about
setting up load paths in the instructions or manual for gst-launch?

-Preston

Hi,

Hi everyone !!!

I have been following [1] and [2] to check whether I can play an avi file
using gstreamer + Openmax with DSP acceleration.
I have been using my own cooked up makefiles for building each of the
gstreamer dep packages. For each packages I looked up the options from OE
meta data. And by trial and error, i resolved each of the unwanted
dependencies.

I tried the instruction given in the [2]

gst-launch-0.10 filesrc location="foobar.avi" ! avidemux ! omx_mpeg4dec !
omapfbsink

Setting pipeline to PAUSED ...
OMX-Component not found with current ST static component loader.
ERROR: Pipeline doesn't want to pause.
Setting pipeline to NULL ...
FREEING pipeline ...

Any one else came across this problem ?

I would like to know one more thing. [2] specifies to use libomxil-ti but
does not mention anything about libomxil-bellagio. Do we really need that ?
I build it anyway to the rootfs.

By default gst-openmax is using libomxil-bellagio, you can check that
by running:
gst-inspec-0.10 omx_mpeg4dec

You can specify which omx library to use at run-tine:
omx_mpeg4dec library-name="libOMX_Core.so" component-name="OMX.TI.Video.Decoder"

Or you can use the "omap" branch in gst-openmax's github, which has
the right default values for TI's omx.

I forgot to mention that on the howto =/

Hi Preston!

I normally install every library into /lib to avoid manually setting up the path.

Jesslyn

Hi Felipe,

By default gst-openmax is using libomxil-bellagio, you can check that
by running:
gst-inspec-0.10 omx_mpeg4dec

You can specify which omx library to use at run-tine:
omx_mpeg4dec library-name=“libOMX_Core.so” component-name=“OMX.TI.Video.Decoder”

I will try this.

Or you can use the “omap” branch in gst-openmax’s github, which has
the right default values for TI’s omx.

Btw, gst-openmax in your github [1] did not work for me. Since CVS folder is missing, it did not download the “common” module into it. Instead I tried the [2]. It downloads the “common” module using git.

I forgot to mention that on the howto =/

If I can get it working, I can contribute complete Howto on building the entire stack(gstreamer + openmax + dsp) using a single makefile to your wiki page.

  • Jesslyn


Felipe Contreras

[1] http://github.com/felipec/gst-openmax
[2] http://cgit.freedesktop.org/~bilboed/gst-openmax/

Hi Felipe,

By default gst-openmax is using libomxil-bellagio, you can check that
by running:
gst-inspec-0.10 omx_mpeg4dec

You can specify which omx library to use at run-tine:
omx_mpeg4dec library-name="libOMX_Core.so"
component-name="OMX.TI.Video.Decoder"

I will try this.

Or you can use the "omap" branch in gst-openmax's github, which has
the right default values for TI's omx.

Btw, gst-openmax in your github [1] did not work for me. Since CVS folder
is missing, it did not download the "common" module into it. Instead I tried
the [2]. It downloads the "common" module using git.

Right, it's still not the official repo, so you need to download the
common submodule:
http://cgit.freedesktop.org/~bilboed/common/

I forgot to mention that on the howto =/

If I can get it working, I can contribute complete Howto on building the
entire stack(gstreamer + openmax + dsp) using a single makefile to your
wiki page.

Great! But the instructions to do it manually should be there too.

Hi Felipe,

You can specify which omx library to use at run-tine:
omx_mpeg4dec library-name=“libOMX_Core.so”
component-name=“OMX.TI.Video.Decoder”

I will try this.

I have tried the above options.
After booting the BB, i gave

modprobe bridgedriver base_img=/lib/dsp/baseimage.dof

It didnt give any messages!!

Then,

gst-launch filesrc location=video.avi ! avidemux ! omx_mpeg4dec library-name=“libOMX_Core.so” component-name=“OMX.TI.Video.Decoder” ! omapfbsink
Pipeline is PREROLLING …
***** DSPMMU FAULT ***** IRQStatus 0x2
***** DSPMMU FAULT ***** faultAddr 0x20883480
WMD_DEH_Notify: ********** DEVICE EXCEPTION **********
WMD_DEH_Notify: DSP_MMUFAULT,errInfo = 0x0
WMD_DEH_Notify: DSP_MMUFAULT, High Address = 0x2088
WMD_DEH_Notify: DSP_MMUFAULT, Low Address = 0x3480
WMD_DEH_Notify: DSP_MMUFAULT, fault address = 0x20883480
Pipeline is PREROLLED …
Setting pipeline to PLAYING …
New clock: GstSystemClock

It gets stuck after this. But I am able to see “TI” in pink color in the upper left corner of my LCD monitor.

I guess, dsp bridge driver is not working properly!! I have selected DISABLE_BRIDGE_DVFS and DISABLE_BRIDGE_PM while compiling the DSP module.

-Jesslyn.

It might related to some issue with the DSP socket nodes. I reported a
similar issue some time ago:
https://omapzoom.org/gf/project/openmax/mailman/?_forum_action=ForumMessageBrowse&thread_id=229&action=ListThreads&mailman_id=19

I heard they were supposed to update the binaries, but I'm still
waiting for tiopenmax-0.4.

I'm cc-ing the TI openmax ml. Any input on this?

Pfff, I bcc'ed the list, now I'm cc'ing.

Hi Felipe,

It might related to some issue with the DSP socket nodes.

Even I thought so. When I do a ping test. I am getting like this:
DSP device detected !!
DSPNode_Allocate failed: 0x80008008

-Jesslyn

I've updated the howto for that common issue:
http://elinux.org/BeagleBoard/DSP_Howto#ping_test

Basically you probably need to do:
./dynreg.out -r pingdyn_3430.dll64P

Hi Felipe,

Hi Felipe,

It might related to some issue with the DSP socket nodes.

Even I thought so. When I do a ping test. I am getting like this:
DSP device detected !!
DSPNode_Allocate failed: 0x80008008

I’ve updated the howto for that common issue:
http://elinux.org/BeagleBoard/DSP_Howto#ping_test

Basically you probably need to do:
./dynreg.out -r pingdyn_3430.dll64P

I got this one atleast right.

After giving ping.out:

DSP device detected !!
DSPNodeCreate succeeded
DSPNode_registerNotify succeeded
DSPNode_run succeeded
Ping: Id 1.000000 Msg 0.000000 Mem 2408232.000000
Ping: Id 1.000000 Msg 1.000000 Mem 2408232.000000

I tried the gst-launch for an avi file like I have used earlier with out any luck.

-jesslyn

Hi all,

I am trying to use DSP with Gsteamer and OpenMAX. I am following the
steps given in elinux wiki [1] & [2].
Now i want to compile gst-openmax plug-in using codesourcery arm-gnu
tool chain. I downloaded package from git sever using git clone but
after "./autogen.sh --noconfigure" command i got error "There is
something wrong with your source tree.
You are missing common/gst-autogen.sh". So i downloaded the same tar
package from [3] and followed these steps

step-1.. ./autogen.sh --noconfigure
step-2.. ./configure --prefix=/usr --host=arm-none-linux-gnueabi

after this command i got the following error

"configure: Package gstreamer-0.10 was not found in the pkg-config
search path.
Perhaps you should add the directory containing `gstreamer-0.10.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gstreamer-0.10' found
configure: error: no gstreamer-0.10 >= 0.10.0 (GStreamer) found"

So i exported the path as

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH

after this also i am getting the same error.

So how to fix this issue or plz currect me if any thing wrong in my
steps??

Thanx,
Kumar

[1] http://elinux.org/BeagleBoard/DSP_Howto
[2] http://elinux.org/BeagleBoard/gst-openmax
[3] http://gstreamer.freedesktop.org/src/gst-openmax/pre/

Hi,

I fixed my problem by installing gstreamer-devel library.

Thanks
kumar

Hi kumar,

I am assuming that you have cross compiled gstreamer prior to performing these steps. While you were at it , was “/usr/local/” the installation prefix ?
Since your PKG_CONFIG_PATH was “/usr/loca/lib/pkgconfig” it looks like that /usr/local is not the place where you have installed gstreamer.

But if it is the place where you have installed gstreamer then try configuring gst-openmax like this :

cd gst-openmax
./configure CC=arm-linux-gcc --prefix=/usr/local --host=arm-linux PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
make
make install

But I would STRONGLY RECOMMEND that you give a different installation prefix than /usr/local while cross compiling packages

  • Jesslyn

Regards

  • Jesslyn

Hi all,

Thanks Jesslyn for your reply,
Actually i am using the gstreamer binaries given by filipe at [1]. So i took those binaries and placed at /opt in my target root filesystem. Now i am following wiki [2] to cross compile the gst-openmax plugin. can i use those binaries and do this step??.I think i gave my host machine’s /usr/local path for installation. I am little confused, could you please give me steps with right path to install in target root filesystem(/media/LABEL2) using codesourcery arm-gnu tool chain instead of scratchbox.

Thanks
Kumar

Hi all,

Thanks Jesslyn for your reply,
Actually i am using the gstreamer binaries given by filipe at [1]. So i took those binaries and placed at /opt in my target root filesystem. Now i am following wiki [2] to cross compile the gst-openmax plugin. can i use those binaries and do this step??.I think i gave my host machine’s /usr/local path for installation. I am little confused, could you please give me steps with right path to install in target root filesystem(/media/LABEL2) using codesourcery arm-gnu tool chain instead of scratchbox.

Thanks
Kumar

[1] http://people.freedesktop.org/~felipec/beagle/beagle-gstreamer-dsp.tar.bz2
[2] http://elinux.org/BeagleBoard/gst-openmax

Compilation without scratchbox is a little more complicated and no,
you can't use the binaries I provided for development, you would need
at least the headers.

Here I'm explaining how to cross-compile GStreamer with scratchbox.
http://gstreamer.freedesktop.org/wiki/HowToCompileForEmbedded

And here are some easy steps to setup a scratchbox environment for
armv7 development:
http://gist.github.com/13986

Then you stumbled upon the same problem as I did.

Chris Kelly from TI said they are aware and planing to fix that:
https://omapzoom.org/gf/project/omapandroid/mailman/?_forum_action=ForumMessageBrowse&thread_id=387&action=ListThreads&mailman_id=22

Hello All,

I am using 3430 ldp. I extracted the tiopenmax 0.3.5 binaries and put them into lib/dsp/ folder and I was able to ping . I followed
http://elinux.org/BeagleBoard/gst-openmax

to setup gstreamer . After building libomxil-ti and gst-openmax I tried to play a video

gst-launch filesrc location=320x240_mpeg4_aac.mp4 ! qtdemux name=demux demux.video_00 ! omx_mpeg4dec library-name=“libOMX_Core.so” component-name=“OMX.TI.Video.Decoder” ! fakesink

But it stuck at prerolling .

Is there any way to debug it ? are there any debug msgs that could be enabled on the dspbridge ?