[gst-devel] gst-openmax 0.10.0.5 pre-release

Felipe Contreras felipe.contreras at gmail.com
Mon Apr 27 01:17:39 CEST 2009


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




More information about the gstreamer-devel mailing list