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
Sebastian Dröge [Thu, 17 Nov 2011 22:38:54 +0000 (14:38 -0800)]
omx: Only disabling of a port is like flushing, enabling is like unflushing
Sebastian Dröge [Thu, 17 Nov 2011 21:33:35 +0000 (13:33 -0800)]
omx: Enabling/disabling a port is also like flushing
The component returns all buffers to us and shouldn't get any
new buffers passed anymore.
Sebastian Dröge [Thu, 17 Nov 2011 19:26:33 +0000 (11:26 -0800)]
omxaudioenc: Signal the drain GCond even if downstream returned an error
Sebastian Dröge [Thu, 17 Nov 2011 19:26:20 +0000 (11:26 -0800)]
omxvideoenc: Signal the drain GCond even if downstream returned an error
Sebastian Dröge [Thu, 17 Nov 2011 19:25:52 +0000 (11:25 -0800)]
omxvideodec: Signal the drain GCond even if downstream returned an error
Sebastian Dröge [Thu, 17 Nov 2011 18:34:19 +0000 (10:34 -0800)]
basevideoencoder: Only call ::reset once in READY->PAUSED
Sebastian Dröge [Thu, 17 Nov 2011 18:19:35 +0000 (10:19 -0800)]
omxaudioenc: Shutdown component in PAUSED->READY and deallocate buffers
Sebastian Dröge [Thu, 17 Nov 2011 18:19:30 +0000 (10:19 -0800)]
omxvideoenc: Shutdown component in PAUSED->READY and deallocate buffers
Sebastian Dröge [Thu, 17 Nov 2011 18:19:10 +0000 (10:19 -0800)]
omxvideodec: Shutdown component in PAUSED->READY and deallocate buffers
Sebastian Dröge [Wed, 16 Nov 2011 20:02:08 +0000 (12:02 -0800)]
omxvideoenc: Set force_keyframe to FALSE after handling it
There's no reason why the base class should forward the event
further downstream if we already handled it and will insert a
keyframe.
Sebastian Dröge [Wed, 16 Nov 2011 19:21:25 +0000 (11:21 -0800)]
omxvideodec: Always push buffers downstream, even if we didn't find a corresponding GstVideoFrame
Sebastian Dröge [Tue, 15 Nov 2011 17:47:55 +0000 (09:47 -0800)]
omx: Fix debug level for flushing in wrong state from ERROR to DEBUG
It's not really an error and doesn't matter at all if flush is called
when the component is not running.
Sebastian Dröge [Tue, 15 Nov 2011 16:40:07 +0000 (08:40 -0800)]
omxh264enc: Detect bytestream stream format and don't put SPS/PPS into the caps for this format
Sebastian Dröge [Tue, 15 Nov 2011 16:28:32 +0000 (08:28 -0800)]
omxvideoenc: Add vfunc for handling the output frames
This can be used by subclasses to override the buffer flags
or to handle some frames differently than the default behaviour.
Sebastian Dröge [Mon, 14 Nov 2011 20:50:26 +0000 (12:50 -0800)]
omxvideodec: Don't release buffers twice if dropping because of QoS
Sebastian Dröge [Mon, 14 Nov 2011 17:13:06 +0000 (09:13 -0800)]
omx: Add XXX to the nOffset reset hack comment for QCOM
Sebastian Dröge [Thu, 10 Nov 2011 14:18:08 +0000 (15:18 +0100)]
omxaudioenc: Make srcpad caps setting threadsafe
Sebastian Dröge [Thu, 10 Nov 2011 14:17:56 +0000 (15:17 +0100)]
omxvideoenc: Make srcpad caps setting threadsafe
Sebastian Dröge [Thu, 10 Nov 2011 14:17:41 +0000 (15:17 +0100)]
omxvideodec: Make srcpad caps setting threadsafe
Sebastian Dröge [Thu, 10 Nov 2011 14:10:14 +0000 (15:10 +0100)]
omxaudioenc: Make the srcpad task and the sinkpad streaming thread handling threadsafe
Sebastian Dröge [Thu, 10 Nov 2011 14:03:05 +0000 (15:03 +0100)]
omxaudioenc: Always flush the ports and make sure no processing is happening in ::flush
This fixes a race condition that happened when seeking
very often in a short period of time.
Sebastian Dröge [Thu, 10 Nov 2011 14:02:22 +0000 (15:02 +0100)]
omxvideoenc: Always flush the ports and make sure no processing is happening in ::reset
This fixes a race condition that happened when seeking
very often in a short period of time.
Sebastian Dröge [Thu, 10 Nov 2011 14:01:36 +0000 (15:01 +0100)]
omxvideoenc: Fix minor race condition when draining after upstream signalled EOS
Sebastian Dröge [Thu, 10 Nov 2011 13:56:19 +0000 (14:56 +0100)]
omxaudioenc: Improve EOS handling
If downstream return UNEXPECTED we should still signal the
drain cond because nothing will trigger this again later.
Sebastian Dröge [Thu, 10 Nov 2011 13:56:11 +0000 (14:56 +0100)]
omxvideoenc: Improve EOS handling
If downstream return UNEXPECTED we should still signal the
drain cond because nothing will trigger this again later.
Sebastian Dröge [Thu, 10 Nov 2011 13:54:33 +0000 (14:54 +0100)]
omxaudioenc: Improve debugging of EOS and draining
Sebastian Dröge [Thu, 10 Nov 2011 13:54:17 +0000 (14:54 +0100)]
omxvideoenc: Improve debugging of EOS and draining
Sebastian Dröge [Thu, 10 Nov 2011 13:51:06 +0000 (14:51 +0100)]
omxvideodec: Log if acquiring buffer for EOS failed