I've been trying to get the dspjpegencoder to work for the last couple days or so on my beagleboard-XM. I want to use it to encode mjpeg from my webcam. I know the one in L23.i3.8 doesn't work, so I tried to get the one from L23.i3.3, but I get an "algo error"
This line works great without dsp:
gst-launch videotestsrc num_buffers=200 ! jpegenc ! fakesink -v
gst-launch videotestsrc num_buffers=200 ! dspjpegenc ! fakesink -v
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
create_node: dsp node create failed
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 283599854 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
create_node: dsp node create failed
sink_setcaps: dsp node creation failed
Setting pipeline to NULL ...
Freeing pipeline ...
and with only the jpegenc_sn.dll64P binary from L23.i3.3 (248k):
Setting pipeline to PAUSED ...
/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0.GstPad:src: caps = video/x-raw-yuv, format=(fourcc)UYVY, width=(int)320, height=(int)240, color-matrix=(string)sdtv, chroma-site=(string)mpeg2, framerate=(fraction)30/1
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstDspJpegEnc:dspjpegenc0.GstPad:src: caps = image/jpeg, width=(int)320, height=(int)240, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstDspJpegEnc:dspjpegenc0.GstPad:sink: caps = video/x-raw-yuv, format=(fourcc)UYVY, width=(int)320, height=(int)240, color-matrix=(string)sdtv, chroma-site=(string)mpeg2, framerate=(fraction)30/1
got_message: DSP event: cmd=0x0E00, arg1=2, arg2=0x0F07
gstdsp_got_error: algo error
ERROR: from element /GstPipeline:pipeline0/GstDspJpegEnc:dspjpegenc0: algo error
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
/GstPipeline:pipeline0/GstDspJpegEnc:dspjpegenc0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstDspJpegEnc:dspjpegenc0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0.GstPad:src: caps = NULL
Freeing pipeline ...
dspmp4venc and dsph263enc work fine so I know DSP is working. I've tried compiling gst-dsp with both SN_API=1 and SN_API=2, still not works.
#uname -a
#Linux arm 3.7.2-x6 #1 SMP Sat Jan 12 10:19:51 UTC 2013 armv7l armv7l armv7l GNU/Linux
#ls -lh /lib/dsp
total 22M
-rwxrwxrwx 1 500 500 1.3M Jul 2 2010 baseimage.dof
-rwxrwxrwx 1 500 500 51K Jul 2 2010 conversions.dll64P
-rwxrwxrwx 1 500 500 13K Jul 2 2010 dctn_dyn.dll64P
-rwxrwxrwx 1 root root 7.1M Aug 5 11:22 dsp.tar
-rwxrwxrwx 1 500 500 191 Sep 18 2010 get-version
-rwxrwxrwx 1 500 500 2.5M Jul 2 2010 h264vdec_sn.dll64P
-rwxrwxrwx 1 500 500 481K Aug 6 16:18 jpegdec_sn.dll64P
-rw-r--r-- 1 root root 248K Aug 6 11:16 jpegenc_sn.dll64P
-rwxrwxrwx 1 500 500 9.1K Jul 2 2010 LICENSE
-rwxrwxrwx 1 500 500 767K Jul 2 2010 m4venc_sn.dll64P
-rwxrwxrwx 1 500 500 292 Sep 18 2010 Makefile
-rwxrwxrwx 1 500 500 890K Jul 2 2010 mp4vdec_sn.dll64P
-rwxrwxrwx 1 500 500 707K Jul 2 2010 mpeg4aacdec_sn.dll64P
-rwxrwxrwx 1 500 500 15K Jul 2 2010 qosdyn_3430.dll64P
-rwxrwxrwx 1 500 500 14K Jul 2 2010 ringio.dll64P
-rwxrwxrwx 1 500 500 4.3K Aug 6 16:38 test.dll64P
drwxr-xr-x 2 root root 4.0K Aug 6 16:17 tidsp-binaries-23.i3.8
-rwxrwxrwx 1 root root 7.1M Aug 6 10:53 tidsp-binaries-23.i3.8.tar
-rwxrwxrwx 1 root root 9.1K Jul 31 12:31 TSPA_Object_Code_Software_License_Agreement.txt
-rwxrwxrwx 1 500 500 53K Jul 2 2010 usn.dll64P
-rwxrwxrwx 1 500 500 245K Jul 2 2010 vpp_sn.dll64P
# gst-inspect | grep dsp
dsp: dspdummy: DSP dummy element
dsp: dspvdec: DSP video decoder
dsp: dspadec: DSP audio decoder
dsp: dsph263enc: DSP video encoder
dsp: dspmp4venc: DSP MPEG-4 video encoder
dsp: dspjpegenc: DSP video encoder
dsp: dsph264enc: DSP video encoder
dsp: dspvpp: DSP VPP filter
dsp: dspipp: DSP IPP
dvdspu: dvdspu: Sub-picture Overlay
spandsp: spanplc: SpanDSP PLC
# zcat /proc/config.gz | grep TIDSP
CONFIG_TIDSPBRIDGE=m
CONFIG_TIDSPBRIDGE_MEMPOOL_SIZE=0x600000
CONFIG_TIDSPBRIDGE_RECOVERY=y
# CONFIG_TIDSPBRIDGE_CACHE_LINE_CHECK is not set
# CONFIG_TIDSPBRIDGE_NTFY_PWRERR is not set
Is there anyway to get mjpeg encoding on the beagleboard's DSP with ubuntu?