Sebastian Dröge [Thu, 20 Dec 2012 17:16:43 +0000 (18:16 +0100)]
omxrecmutex: Fix yet another race condition that resulted in deadlocks
Sebastian Dröge [Thu, 20 Dec 2012 16:46:36 +0000 (17:46 +0100)]
omx: Fix another race condition in the recursive mutex
Between lock() and begin_recursion() it was possible for another thread to
try to do a recursive_lock(). This would block because the mutex was already
locked(), but not ready for recursive locking yet. unlock() would never
happen in the original thread because it was waiting for the other thread
to finish first.
Happened on the Raspberry Pi.
Sebastian Dröge [Thu, 20 Dec 2012 13:45:18 +0000 (14:45 +0100)]
omxrecmutex: Fix a small race condition when unlocking a non-recursive lock
Sebastian Dröge [Thu, 20 Dec 2012 11:30:05 +0000 (12:30 +0100)]
omx: Fix ununsed variable compiler warning
Sebastian Dröge [Thu, 20 Dec 2012 11:27:47 +0000 (12:27 +0100)]
omx: No need to start the srcpad task in ::start() already
It will be started properly after the caps are set.
Sebastian Dröge [Thu, 20 Dec 2012 11:23:49 +0000 (12:23 +0100)]
omxvideodec: OMX_ErrorNoMore is no error and just means we ended iteration
Sebastian Dröge [Thu, 20 Dec 2012 11:20:31 +0000 (12:20 +0100)]
omx: Improve debug output
Sebastian Dröge [Thu, 20 Dec 2012 11:02:30 +0000 (12:02 +0100)]
omxvideodec: Don't forget to free a GList
Sebastian Dröge [Thu, 20 Dec 2012 10:56:29 +0000 (11:56 +0100)]
omxvideodec: Map OMX_COLOR_FormatYUV420PackedPlanar to I420 too
This is used on the Raspberry Pi.
Sebastian Dröge [Thu, 20 Dec 2012 10:55:36 +0000 (11:55 +0100)]
omxvideodec: During negotiation of the output format make sure we use the correct OpenMAX format
Sebastian Dröge [Thu, 20 Dec 2012 10:42:17 +0000 (11:42 +0100)]
omxvideodec: If negotiation fails this could also mean that the component can't do it at this point yet
Sebastian Dröge [Thu, 20 Dec 2012 10:40:13 +0000 (11:40 +0100)]
omxvideodec: Improve format negotiation a bit
Don't leak caps and make sure to fixate caps.
Sebastian Dröge [Wed, 19 Dec 2012 12:05:28 +0000 (13:05 +0100)]
omx: Also initialize nStep field of the OMX structures
Sebastian Dröge [Wed, 19 Dec 2012 12:03:37 +0000 (13:03 +0100)]
omx: Initialize struct version with the OMX version we compiled with
Sebastian Dröge [Wed, 19 Dec 2012 11:44:31 +0000 (12:44 +0100)]
omxvideodec: Extract data from the input buffer, not the codec data
Sebastian Dröge [Wed, 19 Dec 2012 11:19:12 +0000 (12:19 +0100)]
omx: Use has_suffix() instead of has_prefix() for the Broadcom hack
Sebastian Dröge [Wed, 19 Dec 2012 11:08:35 +0000 (12:08 +0100)]
tools: Add tool to list all components and their roles
Sebastian Dröge [Wed, 19 Dec 2012 10:31:51 +0000 (11:31 +0100)]
omx: Add hack to load and initialize libbcm_host.so
Needed on the Raspberry Pi. Patch based on a patch by
George Kiagiadakis <george.kiagiadakis@collabora.com>
Sebastian Dröge [Wed, 19 Dec 2012 10:22:16 +0000 (11:22 +0100)]
configure: Add configure option to pack OpenMAX structures
This is required to set to 4 for the Raspberry Pi for example.
Sebastian Dröge [Wed, 19 Dec 2012 10:07:44 +0000 (11:07 +0100)]
configure: Require GStreamer 1.0.0
George Kiagiadakis [Fri, 20 Apr 2012 14:13:52 +0000 (17:13 +0300)]
omx: Initialize structures to version 1.1.2
Sebastian Dröge [Wed, 19 Dec 2012 09:51:22 +0000 (09:51 +0000)]
config: Add raspberry-pi configuration in a different directory
George Kiagiadakis [Sun, 20 May 2012 17:11:59 +0000 (20:11 +0300)]
raspberry: Add a gstomx.conf for the Raspberry Pi
Sebastian Dröge [Wed, 12 Dec 2012 17:45:39 +0000 (17:45 +0000)]
omx: Fix some compilation errors caused by circular includes
Tim-Philipp Müller [Mon, 19 Nov 2012 11:29:44 +0000 (11:29 +0000)]
Automatic update of common submodule
From 6bb6951 to a72faea
Sebastian Dröge [Mon, 12 Nov 2012 14:14:09 +0000 (15:14 +0100)]
omx: Fix refcount problem with frames being dropped because of decoder bugs
Sebastian Dröge [Mon, 12 Nov 2012 10:29:48 +0000 (11:29 +0100)]
omx: Update to new GLib thread API
Sebastian Dröge [Mon, 22 Oct 2012 12:34:53 +0000 (14:34 +0200)]
omx: Use open/close vfuncs
Sebastian Dröge [Mon, 22 Oct 2012 12:28:04 +0000 (14:28 +0200)]
omx: Handle video meta correctly
Sebastian Dröge [Wed, 20 Jun 2012 12:11:58 +0000 (13:11 +0100)]
omx: Port to video base classes from -base
Tim-Philipp Müller [Wed, 17 Oct 2012 16:57:43 +0000 (17:57 +0100)]
omx: gst_element_class_set_details_simple() -> set_static_metadata()
Tim-Philipp Müller [Sat, 6 Oct 2012 14:01:11 +0000 (15:01 +0100)]
Automatic update of common submodule
From 6c0b52c to 6bb6951
Tim-Philipp Müller [Sat, 22 Sep 2012 15:10:38 +0000 (16:10 +0100)]
Automatic update of common submodule
From 4f962f7 to 6c0b52c
George Kiagiadakis [Thu, 21 Jun 2012 17:22:13 +0000 (20:22 +0300)]
omx: fix debug statement
George Kiagiadakis [Thu, 21 Jun 2012 17:21:03 +0000 (20:21 +0300)]
omx: use recursive_lock inside set_last_error(), since this function may be called from an event handler
Stefan Sauer [Wed, 22 Aug 2012 11:31:59 +0000 (13:31 +0200)]
Automatic update of common submodule
From 668acee to 4f962f7
Tim-Philipp Müller [Sun, 5 Aug 2012 15:42:43 +0000 (16:42 +0100)]
Automatic update of common submodule
From 94ccf4c to 668acee
Tim-Philipp Müller [Fri, 3 Aug 2012 18:32:13 +0000 (19:32 +0100)]
omx: fix plugin name for new GST_PLUGIN_DEFINE API
Sebastian Dröge [Mon, 23 Jul 2012 06:47:32 +0000 (08:47 +0200)]
Automatic update of common submodule
From 98e386f to 94ccf4c
Sebastian Dröge [Tue, 10 Jul 2012 07:57:09 +0000 (09:57 +0200)]
omx: Update for allocation query API changes
Sebastian Dröge [Wed, 20 Jun 2012 10:09:13 +0000 (11:09 +0100)]
omx: Fix compilation after gst_pad_start_task() API changes
Edward Hervey [Fri, 8 Jun 2012 13:06:35 +0000 (15:06 +0200)]
Automatic update of common submodule
From 03a0e57 to 98e386f
Edward Hervey [Wed, 6 Jun 2012 16:20:18 +0000 (18:20 +0200)]
Automatic update of common submodule
From 1fab359 to 03a0e57
Edward Hervey [Fri, 1 Jun 2012 08:30:27 +0000 (10:30 +0200)]
Automatic update of common submodule
From f1b5a96 to 1fab359
Sebastian Dröge [Thu, 31 May 2012 11:10:33 +0000 (13:10 +0200)]
Automatic update of common submodule
From 92b7266 to f1b5a96
Sebastian Dröge [Wed, 30 May 2012 10:47:59 +0000 (12:47 +0200)]
Automatic update of common submodule
From ec1c4a8 to 92b7266
Sebastian Dröge [Wed, 30 May 2012 09:26:30 +0000 (11:26 +0200)]
Automatic update of common submodule
From 3429ba6 to ec1c4a8
Sebastian Dröge [Sun, 13 May 2012 13:58:10 +0000 (15:58 +0200)]
Automatic update of common submodule
From dc70203 to 3429ba6
George Kiagiadakis [Tue, 8 May 2012 13:13:32 +0000 (16:13 +0300)]
omx: Fix spelling mistake found by lintian: s/Seperate/Separate/
George Kiagiadakis [Mon, 30 Apr 2012 20:58:43 +0000 (23:58 +0300)]
Implement a new custom recursive mutex type and fix locking in callbacks so that in-context calls are allowed.
According to the OMX specification, implementations are allowed to call
callbacks in the context of their function calls. However, our callbacks
take locks and this causes deadlocks if the unerlying OMX implementation
uses this kind of in-context calls.
A solution to the problem would be a recursive mutex. However, a normal
recursive mutex does not fix the problem because it is not guaranteed
that the callbacks are called from the same thread. What we see in Broadcom's
implementation for example is:
- OMX_Foo is called
- OMX_Foo waits on a condition
- A callback is executed in a different thread
- When the callback returns, its calling function
signals the condition that OMX_Foo waits on
- OMX_Foo wakes up and returns
The solution I came up with here is to take a second lock inside the callback,
but only if recursion is expected to happen. Therefore, all calls to OMX
functions are guarded by calls to gst_omx_rec_mutex_begin_recursion() / _end_recursion(),
which effectively tells the mutex that at this point we want to allow calls
to _recursive_lock() to succeed, although we are still holding the master lock.
George Kiagiadakis [Fri, 20 Apr 2012 14:51:34 +0000 (14:51 +0000)]
omx: Add hack to disable setting roles to components.
Conflicts:
omx/gstomx.c
George Kiagiadakis [Mon, 30 Apr 2012 23:20:24 +0000 (23:20 +0000)]
omxvideodec: Implement no-empty-eos-buffer hack, as in omxvideoenc.
Conflicts:
omx/gstomxvideodec.c
George Kiagiadakis [Mon, 30 Apr 2012 23:19:55 +0000 (23:19 +0000)]
omxvideodec: Fix coding style in the drain-may-not-return hack code
Arun Raghavan [Wed, 25 Apr 2012 13:33:48 +0000 (19:03 +0530)]
omx: Fix trivial debug print bug
Arun Raghavan [Wed, 25 Apr 2012 13:31:32 +0000 (19:01 +0530)]
omxvideodec: Add hack for Ducati components not returning from drain
This happens on the Galaxy Nexus, and causes the pipeline to hang waiting
endlessly for a drain. The hack replaces the wait with a wait + 500ms timeout.
Arun Raghavan [Wed, 25 Apr 2012 11:05:40 +0000 (16:35 +0530)]
omx: Fix deadlock between ending a flush and the event handler
gst_omx_port_set_flushing() calls OMX_FillThisBuffer at the end of a flush
without releasing the port lock, and this can cause a deadlock with the
EventHandler. This patches fixes this by dropping the lock for the duration of
the fill buffer call.
Sebastian Dröge [Tue, 24 Apr 2012 13:41:38 +0000 (15:41 +0200)]
omx: Update video encoder/decoder base classes from gst-plugins-bad
Sebastian Dröge [Mon, 16 Apr 2012 07:16:10 +0000 (09:16 +0200)]
configure: Modernize autotools setup a bit
Also we now only create tar.bz2 and tar.xz tarballs.
Sebastian Dröge [Mon, 16 Apr 2012 07:12:37 +0000 (09:12 +0200)]
Automatic update of common submodule
Sebastian Dröge [Mon, 16 Apr 2012 06:34:56 +0000 (08:34 +0200)]
omxaudioenc: Use gst_buffer_extract() to copy the input buffer data to the OpenMAX buffer
Alessandro Decina [Fri, 13 Apr 2012 21:16:42 +0000 (17:16 -0400)]
Fix relative/absolute path glitch
Signed-off-by: Reynaldo H. Verdejo Pinochet <reynaldo@collabora.com>
Olivier Crête [Thu, 12 Apr 2012 19:57:32 +0000 (15:57 -0400)]
Port to Gst 0.11
Reynaldo H. Verdejo Pinochet [Wed, 18 Jan 2012 19:53:16 +0000 (16:53 -0300)]
Enable building with Android's buildsystem
This change adds prelimary buildsystem hooks to
build gst-omx with the Android buildsystem. Like
the rest of GStreamer's Android hooks, the process
relies on the availability of androgenizer. A tool
developed by Collabora to automatically generate
Android.mk files from within the auto* setup.
Androgenizer is currently available at:
http://cgit.collabora.com/git/user/derek/androgenizer.git/
Sebastian Dröge [Tue, 13 Dec 2011 09:17:41 +0000 (10:17 +0100)]
basevideocodec: Don't use G_TYPE_REGISTER_BOXED() yet
This would require GLib 2.26.
Jonas Larsson [Wed, 14 Dec 2011 09:09:34 +0000 (10:09 +0100)]
omxaudioenc: Add hack for encoder components that don't allow empty EOS buffers
Jonas Larsson [Wed, 14 Dec 2011 09:07:29 +0000 (10:07 +0100)]
omxvideoenc: Fix deadlock when using the EOS hack
Sebastian Dröge [Mon, 12 Dec 2011 13:26:48 +0000 (14:26 +0100)]
omxvideoenc: Remove workaround for basevideocodec bug
Sebastian Dröge [Mon, 12 Dec 2011 13:26:34 +0000 (14:26 +0100)]
omxvideodec: Remove workaround for basevideocodec bug
Matej Knopp [Mon, 5 Dec 2011 17:57:01 +0000 (17:57 +0000)]
basevideo: Make GstVideoFrame a reference counted boxed object
...and also clear all existing frames when resetting the decoder or encoder.
Sebastian Dröge [Fri, 9 Dec 2011 11:17:29 +0000 (12:17 +0100)]
omx: Add hack for encoder components that don't allow empty EOS buffers
Dake Gu [Fri, 9 Dec 2011 09:21:47 +0000 (10:21 +0100)]
omxaacenc: Generate and set codec_data on the caps for raw AAC
Alessandro Decina [Mon, 31 Oct 2011 10:36:06 +0000 (11:36 +0100)]
basevideoencoder: handle failures in start() and stop()
Vincent Penquerc'h [Fri, 26 Aug 2011 09:50:38 +0000 (10:50 +0100)]
basevideoenc: do not try to calculate latency from an unknown framerate
It'll divide by zero, and latency is unknown for an unknown framerate.
Fixes an assert in the schroenc test.
https://bugzilla.gnome.org/show_bug.cgi?id=657419
Sebastian Dröge [Thu, 8 Dec 2011 10:50:49 +0000 (11:50 +0100)]
basevideoencoder: Only make the header buffer metadata writable, not the buffer
Sebastian Dröge [Thu, 8 Dec 2011 09:18:36 +0000 (10:18 +0100)]
basevideoencoder: Fix handling of force-keyunit events
Sebastian Dröge [Tue, 6 Dec 2011 12:28:41 +0000 (13:28 +0100)]
omxaudioenc: Don't forward EOS events immediately but let all other events be handled by the base class
Previously this logic was inversed, which did not make any sense at all.
Sebastian Dröge [Tue, 6 Dec 2011 11:47:25 +0000 (12:47 +0100)]
omxaudioenc: Use correct timestamp, duration and filled length for the EOS buffers
Sebastian Dröge [Tue, 6 Dec 2011 11:47:12 +0000 (12:47 +0100)]
omxvideodec: Use correct timestamp, duration and filled length for the EOS buffers
Sebastian Dröge [Tue, 6 Dec 2011 11:46:51 +0000 (12:46 +0100)]
omxvideoenc: Use correct timestamp, duration and filled length for the EOS buffers
Sebastian Dröge [Mon, 5 Dec 2011 12:18:09 +0000 (13:18 +0100)]
omx: Improve debugging of buffer handling
Sebastian Dröge [Mon, 5 Dec 2011 07:12:48 +0000 (08:12 +0100)]
omxvideoenc: Drop EOS events in ::finish()
The event will be forwarded downstream from the srcpad
loop function after the last buffer was generated by the
component. Forwarding it after ::finish() will use the
sinkpad streaming thread and does not guarantee that
the encoder is completely drained.
Sebastian Dröge [Thu, 1 Dec 2011 15:20:36 +0000 (16:20 +0100)]
omxvideodec: Properly drop frames due to QoS
Instead of finishing them they should be passed to drop(), which
will then send QoS messages.
Jonas Larsson [Tue, 29 Nov 2011 11:21:32 +0000 (12:21 +0100)]
omxh264enc: Add support for resending headers after a forced-keyframe
Sebastian Dröge [Tue, 29 Nov 2011 11:12:33 +0000 (12:12 +0100)]
basevideoencoder: Pass the all-headers field of the force-key-unit event to the subclass
Sebastian Dröge [Tue, 29 Nov 2011 11:12:04 +0000 (12:12 +0100)]
basevideoencoder: Implement full support for the new force-key-unit event
Including support for the running-time and count fields.
Sebastian Dröge [Tue, 29 Nov 2011 08:31:11 +0000 (09:31 +0100)]
basevideoencoder: Use new force-keyunit event API from gst-plugins-base
Sebastian Dröge [Tue, 29 Nov 2011 08:18:19 +0000 (09:18 +0100)]
basevideoencoder: Adjusting padding is not required for -bad libraries
Sebastian Dröge [Mon, 28 Nov 2011 18:48:01 +0000 (19:48 +0100)]
basevideoencoder: Move some fields to the private part of the instance struct
Sebastian Dröge [Mon, 28 Nov 2011 18:36:56 +0000 (19:36 +0100)]
basevideoencoder: Make headers metadata writable before pushing downstream
The timestamp, duration, etc of the headers has to be changed.
Sebastian Dröge [Mon, 28 Nov 2011 18:35:40 +0000 (19:35 +0100)]
basevideoencoder: Push the downstream force-keyframe event after the next keyframe
Even if the corresponding GstVideoFrame doesn't have the is_sync_point
flag set.
Sebastian Dröge [Mon, 28 Nov 2011 18:29:13 +0000 (19:29 +0100)]
basevideoencoder: Don't push an upstream force-keyunit event downstream
Jonas Larsson [Fri, 25 Nov 2011 10:48:08 +0000 (11:48 +0100)]
basevideoencoder: Add initial support for the all-headers field of the force-keyframe event
See bug #607742.
Tim-Philipp Müller [Fri, 25 Nov 2011 11:37:39 +0000 (11:37 +0000)]
basevideodecoder: some more debug logging
Tim-Philipp Müller [Wed, 23 Nov 2011 20:03:32 +0000 (20:03 +0000)]
basevideodecoder: add API to drop a frame and post a QoS message on the bus
https://bugzilla.gnome.org/show_bug.cgi?id=640017
API: gst_base_video_decoder_drop_frame()
Tim-Philipp Müller [Tue, 22 Nov 2011 23:04:49 +0000 (23:04 +0000)]
docs: fix comment in gst_base_video_decoder_get_max_decode_time() docs
Tim-Philipp Müller [Tue, 22 Nov 2011 19:57:07 +0000 (19:57 +0000)]
basevideodecoder: fix weird event list handling
Get rid of weird code that copies a list manually, taking
ownership of the elements and then frees the old list. Instead,
just take over the old list entirely. (If the intent was to
reverse the list, one could use g_list_reverse() instead).
Then, push events in the list out from last to first (since they
were prepended as they came in) instead of just pushing out the
last in the list and leaking the others.
Sebastian Dröge [Fri, 25 Nov 2011 10:31:58 +0000 (11:31 +0100)]
omxaudioenc: Use audio base classes from gst-plugins-base instead of having our own copies
Sebastian Dröge [Fri, 18 Nov 2011 18:00:31 +0000 (10:00 -0800)]
omxaudioenc: First set ports to flushing before waiting for the srcpad streaming thread to finish
Sebastian Dröge [Fri, 18 Nov 2011 17:59:43 +0000 (09:59 -0800)]
omxvideoenc: First set ports to flushing before waiting for the srcpad streaming thread to finish
Sebastian Dröge [Fri, 18 Nov 2011 17:58:58 +0000 (09:58 -0800)]
omxvideodec: First set ports to flushing before waiting for the srcpad streaming thread to finish