Hi, gst-openmax is a GStreamer plug-in that allows communication with OpenMAX IL components. OpenMAX IL is an industry standard that provides an abstraction layer for computer graphics, video, and sound routines. It has been pushed specially by key industry players in embedded systems. After almost one year of development it's time for another pre-release (hopefully the last before the first release). The list of changes is huge, but I'll try to summarize them: * Massive stability improvements, specially while seeking and init/deinitalizing * Speech elements now actually work in real RTP calls * H.264 and AAC extradata handled properly * Error handling and safety checks implemented * A lot of code refactoring and cleanups * Improved unit tests * Many bug fixes Part of the old 'tunneling' branch has been merged, and another part has been rebased on top of the new master, however more work needs to be done. After the branch has been rebased, work on the code-style update can start, if GStreamer developers still wish to do that. A new official 'omap' (long-lived) branch has been created for Texas Intruments' OpenMAX IL implementation. The patches are distributed in the tarball. Also, there are patches to use gst-openmax on Android's OpenMAX IL implementation[1]. Work has been started to merge them into the master branch. [1] http://groups.google.com/group/prajnashi AFAIK the only thing missing for the first release is documentation, so I'll try to work on that, but maybe it can wait for 0.10.2, let's see. Thanks to all the people that contributed to the release. Tarballs can be found here: http://gstreamer.freedesktop.org/src/gst-openmax/pre/ Bugs resolved: * 548776: gstomx mpe4dec can not work with qtdemux * 569014: Dependency for check should be optional * 576114: omx_vorbisdec trumps oggdemux while accepting all applica... * 576499: build scripts use -Werror option, and build fails because... Changes since 0.10.0.4: Edward Hervey (2): autogen.sh : Use git submodule Install and use pre-commit indentation hook from common Felipe Contreras (335): Initial commit. Use GStreamer's common autotools macros. Add GNU standard files. Add some error handling. Generate proper capabilities for the output buffer in the vorbis decoder. Add some sample gst-launch pipelines. Set version to 1.1 for now. Remove base "set_caps" and use "settings_changed_cb". New MPEG4v decoder. Now the ports are extensible. Set omx parameters from gst caps. Rename Base to BaseFilter. Add missing files. Add ALSA sink. Improve logging. Fix a small memory leak. Fix zerocopy. Implement zerocopy on the base sink. This looks better. More readable. Add timestamp information. Whitespace fixes. Add more capabilities for MPEG-4 video dec. Add use-timestamps property. Add property for the OpenMAX component name. Add video sink. More proper autoconf. Don't hang if not properly initialized. Specify the srcpad capabilities of the videosink. Use timestamps by default on the base filter Add flush support for seeking on the base filter Add more debugging stuff to the base filter Fixes for new Bellagio versions New H.263 video decoder Fix description for video decoder elements Whitespace fixes Allow multiple OpenMAX IL implementations at the same time. Update README. Make some elements primary by default. Update the README. Include common release make commands. Update to first pre-release version. Add missing files to the tarball. Add more missing files. Bump version. Add more missing files. Make logging level 4(DEBUG) more verbose. Add comment about wring to a read-only parameter. Add multiple new component wrappers. Add AMR-NB decoder wrapper. Add compilation time flag for zero-copy. Small cleanups for AAC decoder. Add omx_setup to set some component configurations early. Modify AAC decoder temporarily to allow decoding without a parser. Don't crash if the GStreamer input buffer are owned by the previous element. Modify the MP3 decoder to use parsed input stream. Upgrade the rank of AAC and AMR-NB decoders. Fixes for non-zero-copy behavior. Generate ChangeLog. Fix wrong H.264 decoder and MPEG-4 encoder element initialization. Add videosink rotation. Fix MPEG-4 video encoder, and cleanups. Copy H.264 decoder changes to MPEG-4. Reorganize parameters' setup. More verbose debugging. Whitespace fixes for video decoders. Update ChangeLog. Reorganize parameters's setup for H.263 decoder. New videodec base element. Add missing files from last commit. Update copyright. Don't use reserved prefix on header definitions. Rename alsasink to audiosink. Dumb fixes. Don't try to set wrong color format on base videodec. More zero-copy flexibility and fixes on base filter. Add GLib misc macros for base filter. Enforce OpenMAX components to call the settings changed event. Remove unneeded stuff on util, and use inline. Use proper inline keywords. Fix vorbisdec. Improve timestamp handling on base filter. Use "libomx.so.0" by default. Whitespace fixes. Set OpenMAX parameters more properly for video elements. New base videoenc class. Free pBuffer data. Properly allocate memory that would eventually be freed. Allow fake settings changed notification for now. Update audiosink and other cleanups. Fix amrnbdec default component name. Update ChangeLog. Update README. Add Khronos headers to the distribution. Update ChangeLog. Fix screwed up ChangeLog. Bump version number, we are in development again. Use right caps for amrnbdec (not contained). Add new AMR-WB decoder element. Handle video encoder's real codec. New H.263 encoder. New WMV decoder wrapper. Destroy ports when finishing decoding. Properly set the coloformat in the base videoenc. Random cleanups for base video stuff. New H.264/AVC encoder wrapper. Fix stupid segmentation fault when doing play->stop->play. Propagate gst_pad_push return value. Fix seeking. Random fixes and cleanups. Cleanup videodecoders. Remember to fetch colorformat properly. Properly pause/resume the omx component in basesink when flushing. Add bitrate property to base videoenc. New pause util function that properly waits for the state change. New AAC encoder wrapper. Random cleanup and fixes for AAC encoder. New amrnbenc wrapper. Cleanup audio elements. Add bitrate parameter for amrnbenc. Add new amrwbenc wrapper. Add bitrate property to aacenc. Cleanup the AMR encoders. Fix copyright notice. New ADPCM encoder/decoder. Add initial unit tests. Use minimun buffer count. Upate max framerate for wmvdec. Add comment regarding non-standard usage. Fix racing condition. Misc cleanups. Build cvs versions with -Werror. Use fixed number of channels for ADPCM. Add mpegversion 2 in AAC elements. Remove duplicated commit. Add G.711 encoder and decoder. Proper description. Add new G.729 encoder and decoder. Proper description. Fix wrong G729 commit. Fix g711dec caps. Save codec data information from the container. Cleanup async_queue. GThread is more proper since we are using mutexes and conditions. Move async_queue to new util library. Add simple unit tests. Add unit tests for dummy libomxil. Cleanup tests. Add simple gstomx unit test. Increase timeout for gstomx tests. Cleanups in dummy libomxil. Build util first. Output omx_buffer from the chain function. Initial async_queue changes. Add flush commands. Add flush unit test. Skip the normal checks when flushing the queues. More warnings and cleanups. Fix flushing. Use flush command completed event. Update base sink for async changes. Update base src for async changes. Add install target in manual Makefile. Add iLBC encoder/decoder. Fix warnings. Fix more warnings. Cleanup gstomx_util. Reorganize header requirements. Update copyright. Update FSF address. Remove unused header inclusions. Remove unused files. Build system updates. Tag 0.10.0.4. Go back to development. Cleanup the new volume element. Update library name to new bellagio library. Fix warnings. Check for NULL buffers when sending eos. Temporary disable buffer flushs. Use BufferCountActual instead of BufferCountMin. Allow AllocateBuffer. Random cleanups. Use G_UNLIKELY when finding the GType. Finish processing when receiving omx eos event. Cleanup pad_event in base_filter. Cleanup pad_event in base_sink. Rename port enable/disable to resume/pause. Add port allocate/free/start buffer functions. Add option to flush the async_queue. Store the port_index. Allow multiple setup_ports calls. Add port semaphore. Add port enable/disable functions. Flush the queue when disabling the port. Make port_enable more extensible. New omx interface. Add omx interface to base_sink. Add omx interface to base_filter. Add activate_push in base_sink. Save omx ports as element data of the gst pads. Make omx state changes more strict. Add core_for_each_port helper in util. Add flushing functions in util. Improve flushing in base_filter. More general improvements in flushing. Add separate mp2dec element. Free codec_data Add new jpegenc component wrapper. Allow child classes to override the share_output_buffer workaround. Improve message when the shared output buffer workaround is misbehaving. Improve error message when pusing output buffers. Properly set the true return reason. Set right caps for amrwbenc. Fix speech codecs samplerates. Fix warnings in jpegenc. Improve buffer sizes in jpegenc. Update ADPCM sample rate. Random cleanups. Add adpcm layout. Update G729 media-type. Use more efficient int scaler. Fix initialization of buffers for processing. Release output buffer when there's flushing. Cleanup flushing mechanism for seeking. Properly deinitialize when going to READY. Add new semaphore utility. Add stress unit tests for async_queue. Random cleanups. Improve internal libomxil unit tests. Improve debug logging for gstomx util. Fix EOS handling when omx hasn't been initialized. Improve G711 caps negotiation. Fix G711 decoder caps. Rename avcenc to h264enc. Fix iLBC caps negotiation. Fix seeking when using zero-copy. jpegenc: Add quality property. Allow child classes to override the share_input_buffer workaround. adpcm: Fix capabilities negotation. More specific caps for all audio elements. Random cleanups. Missing cleanups from old git repo. util: Fix for allocate buffer. Send initial codec_data buffer. sink: Cleanup element details. aacdec: Store codec-data. Remove TI-specific stuff. Fix crash on certain race condition. util: More debug logging. util: Make omx errors more verbose. basefilter: handle codec-data from omx Create .gitignore file Make libcheck optional Update copyright notice for 2009. Fix libcheck' check util: detect more unrecoverable errors check_gstomx: cleanup codes-tyle util: fix crash when OMX_Init errors util: cleanup request_imp Set more proper framerate in the caps templates video encoders: trivial cleanups General update to framerate handling basefilter: fix init race condition Cleanup global scope Trivial code-style cleanups Cleanup enums Remove automatic pre-commit hook Remove common submodule Some cleanups to the 'common' stuff Rename 'initialized' to 'ready' Cleanup .gitignore Even more framerate improvements videoenc: fix Q.16 framerate calculation Remove stdbool.h Use memset instead of calloc util: handle more errors from omx Trivial cleanups basefilter: trivial cleanup util: fix break statements in event_handler util: make OMX_AllocateBuffer configurable basefilter: plug a leak Add environment variables for testing util: avoid double-free jpegenc: fix quality setting plugin: refactor Replace dispose with finalize basesink,basesrc: fix library and component name basesink: chain up activatepush Add ignore files for 'tests' dir plugin: trivial whitespace fix g729enc: trivial cleanup for default DTX basefilter: appropriately return wrong state Revert "Do not hang in state change when flushing." Improve error handling util: add timeout to wait_for_state util: cleanup timeout stuff basefilter: trivial cleanup util: display error message sooner Remove unused variables Trivial cleanups test: fix gcc warnings util: remove g_omx_sem and use shared g_sem Cleanups Add shave build option Use 'git describe' for automatic version Move common stuff to build-aux configure.ac: cleanup .gitignore: cleanup Fix distribution git-version-gen: fix for old versions of git basesink: don't hang on downward state change basesink: move omx initalization to pad link basesink: add empty change_state function basesink: align gst and omx states in base_sink basesink: initalize omx when changing to READY Always check the omx state util: don't set artificial omx errors util: handle all errors base_filter: cleanup PAUSED_TO_READY util: nicer error messages Trivial cleanup; rename client_data field util: improve logging plugin: trivial cleanup plugin: trivial cleanup Add 'update-common' script build: improve version generation basefilter: cleanup Add core_stop function to split core_finish util: trivial rearrange Remove core_finish, use core_unload plugin: decrease priority of vorbisdec build: add enable-experimental option Remove ChangeLog autogen.sh: fix build and cleanups Add 'patches' directory to the dist Update README Frederik Vernelen (3): Allow null buffers. Add new volume element. basesink: add NXP copyright Jan Schmidt (1): configure.ac: trivial cleanup Marco Ballesio (1): Properly calculate timestamps when input buffers are split Mark Nauwelaerts (8): Do not hang in state change when flushing. Fix mt issue when loading/unloading omxil. Serialize EOS sending. Handle unrecoverable errors. Fix format specifier in debug statement. Fix race in test. g729enc: set caps on srcpad basefilter: don't start task when omx is not ready Olivier Cr?te (1): g711enc: Only try to fetch structure from caps if it exists. Ren? Stadler (16): Forward pad event properly. amrnbenc: Add rate=8000 field to amr caps amrwbenc: Add rate=16000 field to amr caps Fix configure failing because of missing m4 directory. aacdec: Don't set the profile. Don't limit framerate to 30fps for video decoder pad templates. Pass on correct sink framerate fraction. aacenc: Fix src caps by not relying on settings_changed callback. Fix unused variables breaking the build. util: Fix crash when dlopen() fails. aacenc: Propagate bitrate property value to component. aacenc: Add output-format property, setting eAACStreamFormat. aacenc: Implement profile property. jpegenc: Forward upstream framerate in caps. basefilter: release ready_lock when core_prepare fails jpegenc: fix classification Sriram Murthy (1): audio_sink: Set correct class. Stefan Kost (1): Build cvs versions with -Werror. Tim-Philipp M?ller (1): .gitignore: ignore more -- Felipe Contreras