[Gstreamer-openmax] New project announcement: gst-dsp, with beagleboard demo image
Gregoire Gentil
gregoire at gentil.com
Mon Oct 12 23:26:13 PDT 2009
It definitely seems to be a very nice effort that will be very useful to
many projects. I will integrate on the Touch Book. Thanks,
Grégoire
On Tue, 2009-10-13 at 00:31 +0300, Felipe Contreras wrote:
> Hi,
>
> This is the first public release of gst-dsp; a native GStreamer plug-in to
> access Texas Instruments' DSP algorithms for OMAP3 platforms.
>
> The code came originally from a series of TI projects: tiopenmax[1], and
> libbridge[2]. gst-dsp replaces these two layers and talks directly to the DSP
> bridge driver.
>
> The main advantages are code simplification (5k vs 50k), and better performance
> (at least 4 times less CPU usage). However, not all of the codecs have been
> implemented, only MPEG-4 and H.263 video encoders and decoders, the JPEG
> encoder, and H.264 is partially supported.
>
> Currently it's used in the Nokia N900.
>
> In order to make it easier for people to try it out, I created a demo image for
> the beagleboard with all the required components: GStreamer, gst-dsp, DSP
> public binaries, and a kernel with DSS2 and DSP bridge driver.
>
> The linux kernel (DSS2 + dspbridge) is at the v2.6.32-felipec1 tag in:
> http://gitorious.org/~felipec/linux-omap/felipec
>
> The DSP algorithms are public, and come from tiopenmax:
> https://gforge.ti.com/gf/download/frsrelease/170/1399/tiopenmax-0.3.5.tar.gz
>
> Here's the demo rootfs with the kernel image and instructions:
> http://people.freedesktop.org/~felipec/beagle-2.6.32-rc3/
>
> And here's the video showing it on action for both playback and recording:
> http://www.youtube.com/watch?v=SN-Nw_yDQUs
>
> The main repository is hosted on github:
> http://github.com/felipec/gst-dsp
>
> And there's also one specific for maemo:
> http://maemo.gitorious.org/maemo-multimedia/gst-dsp
>
> This code wouldn't have been possible without all the contributions and
> specially thanks to TI for making their code open source.
>
> Here's the shortlog for 0.6.0:
>
> Andriy Shevchenko (1):
> base: fix a crash on send codec data
>
> Felipe Contreras (180):
> Initial commit
> Register dsp node
> Add README
> Fix and update copyrights
> Add ALLOCATE_HEAP and ALLOCATE_SN to dsp_bridge
> Add handy dsp_send_message
> dummy: use dsp_send_message
> Rename gstdsp.* to plugin.*
> Makefile: cleanup
> dummy: trivial clanups
> Add log utility
> Use log utility
> dmm_buffer: size_t improvements
> dmm_buffer: always unmap when freeing
> dmm_buffer: use getpagesize()
> dmm_buffer: alignment improvements
> dmm_buffer: add user_data field
> Add MPEG-4 video decoder
> README: update
> mp4vdec: trivial cleanup
> mp4vdec: send signal to output_loop
> mp4vdec: flush output buffers too
> mp4vdec: reset output port
> mp4vdec: extra check for null buffer
> mp4vdec: use atomic operations for status
> mp4vdec: use more atomic operations for status
> mp4vdec: send stop signal before
> mp4vdec: re-use comm buffers
> dmm_buffer: reorganize a bit
> dmm_buffer: add dmm_buffer_reserve
> dmm_buffer: allow to re-reserve memory
> dmm_buffer: allow re-mapping
> mp4vdec: trivial cleanup
> dmm_buffer: unmap before unreserving
> mp4vdec: re-use mappings for output buffers
> mp4vdec: convert flush condition to semaphore
> Remove cond.h
> Rename mp4vdec to vdec
> vdec: trivial cleanup
> vdec: trivial reorganization
> vdec: prepare for multiple algos
> vdec: move create_node to dsp_start
> vdec: start dsp node after getting the caps
> vdec: initial support for H.264
> vdec: add Juha to authors list
> README: update
> vdec: cleanup
> vdec: make dsp_thread static
> vdec: reorganize a bit
> New base class
> Add new video encoder
> base: handle more commands
> base: reorganize got_message a bit
> venc: improve jpeg args
> venc: send jpeg dynamic params
> base: cleanup setup_output_buffers
> base: remove unused buffer_count
> base: reorganize a bit
> base: add use_pad_alloc option
> base: free mapped buffers on dsp_stop()
> base: be more verbose on get_slot()
> README: update
> Makefile: check for missing symbols
> New utility gstdsp_register()
> base: detect dsp errors
> base: properly handle dsp errors
> base: post error in the bus
> base: extra check for status in outout_loop()
> base: free events array
> base: reinitialize state on NULL->READY
> base: use circular buffer for timestamps
> base: increase ts_array
> base: increase mapping cache
> dummy: reorganize map_buffer
> dummy: input buffers don't need alignment
> dummy: cleanup
> dummy: don't map buffers
> venc: increase framesize limit for jpeg
> base: add gstdsp_post_error()
> venc: allocate a buffer when framesize is unaligned
> base: decrease wait for events timeout
> base: more error messages
> base: re-initialize on READY->PAUSED
> base: don't panic on wrong status
> base: destroy node at the right time
> base: catch playback completed message
> base: possible memleak fixes
> vdec: send codec data for MPEG-4
> base: make map cache optional
> plugin: set more proper ranks
> vdec: add framerate workaround
> vdec: remove gstdsp_send_buffer()
> base: add create_node() vmethod
> base: add parsing facilities
> Add h263 parser
> parse: update framesize only when unset
> Random cleanups
> base: add support for stream params
> venc: add H.263
> venc: use h263 by default
> Reorganize encoders
> base: send codec data for all the codecs
> base: keep trying if parse func fails
> base: trivial cleanup
> Trivial cleanups
> log: don't display info level
> log: decrease log level for buffer allocs
> log: add pr_test
> base: rename array to cache
> base: rename 'buffer' to 'comm'
> base: event cleanup
> base: reorganize a bit
> base: assume output buffer is always there
> base: remove out_buffer, use port buffer
> base: store input buffer
> base: trivial cleanup
> base: flush ports on stop
> base: plug some possible leaks
> base: make map_buffer() more conservative
> base: trigger semaphore after buffer modifications
> base: re-use input buffer
> base: add port index field
> Add async queue
> base: allow multiple buffers
> base: allow child elements to configure the ports
> vdec: increase the number of buffers to 2
> venc: trivial fixes
> log: add missing include
> base: re-enable queues properly
> venc: decrease input buffer size
> base: wait for eos
> base: possible fix
> Initial MPEG-4 video encoder support
> gstdspvenc.h: preemptively add H.264 to the list
> base: add send_codec_data() helper
> vdec: use send_codec_data()
> vdec: extra checks
> Add skip hack
> Revert "venc: forcing mpeg4 I frame each i_frame_interval"
> venc: reorganize stream/dynamic params
> base: trivial cleanup
> base: properly set param virt addr
> Add param argument to buffer callbacks
> Add buffer argument to buffer callbacks
> base: add buffer recv_cb
> base: add check for end addr alignment
> vdec: fix extra unref for codec-data
> base: trivial cleanups
> Rename dmm_buffer_flush() to dmm_buffer_clean()
> base: fix memory read
> dmm_buffer: clean instead of flush
> dmm_buffer: add cache 'flush' function back
> Use more proper cache functions
> base: handle bad node termination
> base: make EOS alignment an option
> jpegenc: enable eos align
> venc: improve integer framerate calculation
> venc: fix bitrate calculation
> venc: cleanup bitrate calculation
> venc: remove jpeg from bitrate calculation
> venc: tweak bitrate calculation
> venc: trivial cleanups
> venc: add 'quality' field
> venc: calculate smaller buffer sizes
> Fix some static analysis warnings
> log: avoid pr_info when gst debugging is off
> base: remove use_map_cache
> Trivial cleanups
> Cleanup type registrations
> base: improve some compiler hints
> dmm-buffer: check cache flush size
> base: properly free node resources
> Create custom dsp_node_t
> dsp-bridge: store node heap ourselves
> dsp-bridge: store node msgbuf ourselves
> dsp-bridge: cleanup node_free
> base: copy buffers when appropriate
> base: remove unnecessary cache flushing
> venc: set rate-control to variable
> base: post critical error mesages to the bus
>
> Hoseok Chang (1):
> venc: tune mp4v parms for better performance
>
> Juha Alanen (5):
> vdec: set profile based on the frame size
> vdec: improve H.263 args
> vdec: initial support for WMV9
> venc: set profile correctly for H.263 and MPEG4
> venc: disable single scan output for JPEG encoder
>
> Marco Ballesio (8):
> vdec: fix srcpad setup
> venc: rename mp4venc_stream_params
> venc: add mp4venc_out_stream_params
> base: use proper buffer length
> venc: forcing mpeg4 I frame each i_frame_interval
> venc: reordered mp4venc_args initialization
> venc: added bitrate computation formula
> venc: propagate keyframes properly
>
> Mark Nauwelaerts (2):
> base: safer buffer allocation and freeing
> base: fix element ref leak
>
> Miguel Verdu (2):
> venc: tune MPEG-4 parameters
> venc: tune MPEG-4 parameters for quality
>
> René Stadler (3):
> base: fix thread leak
> base: advance timestamp pointer for empty output buffers
> base: don't use DSP flushing
>
> Tim-Philipp Müller (1):
> base: unref unused output buffer when skipping output
>
> Cheers.
>
> [1] https://gforge.ti.com/gf/project/openmax/
> [2] https://gforge.ti.com/gf/project/omapbridge/
>
More information about the Gstreamer-openmax
mailing list