gst-dsp on BeagleBoard-xM

hello!

I have BeagleBoard-xM rev C with kernel 3.6 (from [1]) with tidspbridge enabled:

cat .config | grep dsp
3846:CONFIG_TIDSPBRIDGE=m
3847:CONFIG_TIDSPBRIDGE_MEMPOOL_SIZE=0x600000
3848:CONFIG_TIDSPBRIDGE_RECOVERY=y
3849:# CONFIG_TIDSPBRIDGE_CACHE_LINE_CHECK is not set
3850:# CONFIG_TIDSPBRIDGE_NTFY_PWRERR is not set
3851:CONFIG_TIDSPBRIDGE_BACKTRACE=y
Kernel is run with following args:

[ 0.000000] Kernel command line: console=ttyO2,115200n8 consoleblank=0 mpurate=1000 buddy=none camera=none vram=16M
omapfb.mode=dvi:armphone omapfb.vram=0:8M,1:4M,2:4M omapdss.def_disp=dvi mem=99M@0x80000000 mem=384@0x88000000
noinitrd ip=192.168.2.3::255.255.255.0 rw root=/dev/nfs nfsroot=192.168.2.1:/home/armphone/rootfs2 nolock rsize=4096 wrsize=4096

rootfs is based on buildroot buildroot-2013.02 with:

  • gstreamer-0.10.36
  • gst-omapfb-1.0
  • gst-plugins-bad-0.10.23
  • gst-plugins-base-0.10.36
  • gst-plugins-good-0.10.31
  • gst-plugins-ugly-0.10.19
  • gst-ffmpeg-0.10.13
  • gst-dsp-0.10.2 with DSP_API=2 and SN_API=2

DSP binaries are the latest ones from [2] - L23.i3.8.

Loading the modules:

modprobe mailbox
modprobe mailbox_mach
modprobe tidspbridge base_img=/lib/dsp/baseimage.dof

[ 168.266357] tidspbridge: module is from the staging directory, the quality is unknown, you have been warned.
[ 168.355407] proc_load: Processor Loaded /lib/dsp/baseimage.dof
[ 168.371551] proc_start: dsp in running state
[ 168.378784] DSP Bridge driver loaded

And this is when magic starts to happen - lets test h263 and mp4 encoders:

gst-launch-0.10 -v -e --gst-debug-level=1 v4l2src device=$1
! ‘image/jpeg,width=640,height=480,framerate=30/1’
! jpegdec
! ffmpegcolorspace
! dspmp4venc name=habababa
! fakesink

results with working pipe, but changing dspmp4venc to dsph263enc results in:

/root/video/dsp_test.sh /dev/video0

Setting pipeline to PAUSED …
/GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps = image/jpeg, width=(int)640, height=(int)480, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, format=(fourcc)UYVY, sof-marker=(int)0
Pipeline is live and does not need PREROLL …
Setting pipeline to PLAYING …
New clock: GstSystemClock
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = image/jpeg, width=(int)640, height=(int)480, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, format=(fourcc)UYVY, sof-marker=(int)0
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = image/jpeg, width=(int)640, height=(int)480, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, format=(fourcc)UYVY, sof-marker=(int)0
/GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:sink: caps = image/jpeg, width=(int)640, height=(int)480, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, format=(fourcc)UYVY, sof-marker=(int)0
/GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:src: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)640, height=(int)480, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:src: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)640, height=(int)480, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:sink: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)640, height=(int)480, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstDspH263Enc:habababa.GstPad:src: caps = video/x-h263, variant=(string)itu, width=(int)640, height=(int)480, framerate=(fraction)30/1
create_node: dsp node create failed
0:00:03.740326287 126 0x12d9708 ERROR dsp gstdspvenc.c:150:create_node: dsp node create failed
sink_setcaps: dsp node creation failed
0:00:03.750183466 126 0x12d9708 ERROR dsp gstdspvenc.c:409:sink_setcaps: dsp node creation failed
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data flow error.
Additional debug info:
gstbasesrc.c(2625): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
streaming task paused, reason not-negotiated (-4)
Execution ended after 251556427 ns.
Setting pipeline to PAUSED …
Setting pipeline to READY …
/GstPipeline:pipeline0/GstDspH263Enc:habababa.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps = NULL
Setting pipeline to NULL …
Freeing pipeline …

and from kernel log:

[ 601.779083] procwrap_detach: deprecated dspbridge ioctl

Do you guys have ANY idea whats wrong? I have tested previous DSP images (L23.i3.3), different DSP_API and SN_API, and only mp4 is working… :smiley:

[1] https://github.com/beagleboard/kernel
[2] https://gforge.ti.com/gf/project/openmax/frs/