Commit graph

29 commits

Author SHA1 Message Date
Nicolas Dufresne
4159ca2bc5 omxvideodec: Remove dead code
The omxvideodec base class have a totally unused prepare_frame() vritual
function, remove it.
2019-01-25 00:50:06 +00:00
Guillaume Desmottes
fd108f4278 omxvideodec: always signal drain cond when stopping streaming loop
If for some reason something goes wrong and we stop the streaming loop
we may end up with other threads still waiting on the drain cond.
No more buffers will be produced by the component so they were waiting
forever.

Fix this by always signalling this cond when stopping the streaming
loop.

https://bugzilla.gnome.org/show_bug.cgi?id=796207
2018-06-08 09:47:32 +02:00
Guillaume Desmottes
52de8eaca0 omxvideodec: add internal-entropy-buffers property on zynqultrascaleplus
Custom property to control the number of internal buffers used in the
decoder to smooth out entropy decoding performance.

https://bugzilla.gnome.org/show_bug.cgi?id=792528
2018-01-30 11:51:10 +00:00
Guillaume Desmottes
7048134fa9 omxvideodec: use dynamic buffer mode on input if possible
Prevent from copying the input buffers between GStreamer and OMX.

Tested on zynqultrascaleplus and rpi (without dynamic buffers).

https://bugzilla.gnome.org/show_bug.cgi?id=787093
2017-12-14 09:00:35 +00:00
Guillaume Desmottes
352184dd09 omxvideodec: factor out enable and disable code
No semantic change, just factor out the code enabling and disabling the
component to their own functions.

Makes the code easier to read as the set_format() method was already
pretty big. Will also allow us to easily change the enabling logic.

https://bugzilla.gnome.org/show_bug.cgi?id=785967
2017-08-08 10:40:47 -04:00
Julien Isorce
86d9a2c81c omxvideodec: make generic the OMX_UseEGLImage code path
Will be easier to maintain and to make enhancements.

Tested with Tizonia on Desktop.
Also tested with Bellagio to make sure it does not crash when
calling OMX_UseEGLImage and indeed it returns NotImplemented.
Then gst-omx fallback to OMX_UseBuffer if it can and so on.

Also tested on rpi to make sure there is no regression.

https://bugzilla.gnome.org/show_bug.cgi?id=784365
2017-08-01 10:18:21 +01:00
Guillaume Desmottes
136714c6ed omxvideodec: add dmabuf support for output
The zynqultrascaleplus OMX implementation has a custom extension
allowing decoders to output dmabuf and so avoid buffers copy between OMX
and GStreamer.

Make use of this extension when built on the zynqultrascaleplus. The
buffer pool code should be re-usable for other platforms as well.

https://bugzilla.gnome.org/show_bug.cgi?id=784847
2017-07-18 23:46:46 +01:00
Julien Isorce
80c6dd46a1 omxvideodec: use OMX_UseBuffer
For example this allows the omx decoder to directly fill the
pixmaps coming from the video sink.

It only avoids a buffer copy when the decoder uses a pool provided
by a downstream element. So let's restrict this usage to situations
where the decoder decides to use a downstream buffer pool.

Tested with Tizonia/OMX.Aratelia.video_decoder.vp8
and with Bellagio/OMX.mesa.video_decoder.avc.

If it fails to setup buffers with OMX_UseBuffer the decoders
fallbacks to usual OMX_AllocateBuffer.

Also it allows to test on desktop the GstOMXBufferPool->other_pool
management which was previously only used in the OMX_UseEGLImage
case, i.e. on Rpi.

https://bugzilla.gnome.org/show_bug.cgi?id=784069
2017-07-12 16:36:03 +01:00
Sebastian Dröge
d75334456d omx: Let base classes handle EOS
https://bugzilla.gnome.org//show_bug.cgi?id=734774
2014-08-14 17:36:11 +03:00
Sebastian Dröge
8a1bb1b4a3 omxvideodec: Add support for egl_render on RPi 2013-03-26 14:00:03 +01:00
Sebastian Dröge
0cd96e8c6b omxvideodec: Add buffer pool for sharing OpenMAX memory with downstream 2013-03-07 14:10:12 +01:00
Sebastian Dröge
e08b801fea omxvideodec: Rename component variable 2013-02-25 09:19:08 +01:00
Sebastian Dröge
219a93bbaf omx: Some minor refactoring and cleanup 2013-02-12 11:49:21 +01:00
Sebastian Dröge
4044aaecbe omx: Fix includes to properly work with the 1.0 releases 2013-01-17 18:08:15 +01:00
Sebastian Dröge
2481ceb8c4 omx: Update to new GLib thread API 2012-11-12 11:29:48 +01:00
Sebastian Dröge
5fdb490f1a omx: Port to video base classes from -base 2012-10-22 14:20:41 +02:00
Olivier Crête
ff2603a727 Port to Gst 0.11 2012-04-13 12:16:34 -04:00
Sebastian Dröge
05ad3343bf omxvideodec: Use correct timestamp, duration and filled length for the EOS buffers 2011-12-06 12:47:12 +01:00
Sebastian Dröge
9251e0004c omxvideodec: Don't try to drain the component after EOS
And don't send EOS twice in any case. This most likely
will cause the component to not output it again and
is not necessary anyway.
2011-11-08 11:08:06 +01:00
Sebastian Dröge
e4b7ffcc1b omxvideodec: Implement draining of the component and use it
This makes sure that all buffers are decoded and pushed downstream
before flushing the ports and losing some buffers.
2011-11-01 16:23:22 +01:00
Sebastian Dröge
3b4260e54f omxvideodec: Forward downstream flow returns to upstream 2011-11-01 13:58:38 +01:00
Sebastian Dröge
bb1dd8aaba omxvideodec: Add API for subclasses to prepare/convert frames 2011-09-29 10:44:20 +02:00
Sebastian Dröge
4616d804ac omx: Add infrastructure to enable special hacks for broken OpenMAX implementations 2011-07-19 10:33:15 +02:00
Sebastian Dröge
961445aa1b omxvideodec: Only flush the component ports after we passed input to them 2011-07-14 07:58:41 +02:00
Sebastian Dröge
f0cbbad0f1 omx: Add support for setting the component-role 2011-07-13 20:37:02 +02:00
Sebastian Dröge
a24cdd41bc omxvideodec: Make sink/src pad template caps configurable 2011-07-12 11:36:42 +02:00
Sebastian Dröge
0fbff1000f omxvideodec: Use the frames storage of the base class instead of implementing our own
They could get out of sync and we could store already destroyed frames.
2011-07-09 11:06:06 +02:00
Sebastian Dröge
08181d86dc omxvideodec: Make the inport and outport index configurable by the subclass 2011-07-09 11:06:05 +02:00
Sebastian Dröge
bc1e73e8c8 omx: Add initial version of OpenMAX framework, video decoder base class and MPEG4 video decoder
This currently hardcodes a lot of stuff but works at least.

Also adds a generic framework for handling OpenMAX cores, components
and ports.
2011-07-09 11:06:05 +02:00