Commit graph

204 commits

Author SHA1 Message Date
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
Sejun Park
ebc9b4903c omxvideodec: update local port_def after reopening the component
gst_omx_video_dec_open will only update GstOMXVideoDec->port->port_def.

Note that the component is reopen only if the flag
GST_OMX_HACK_NO_COMPONENT_RECONFIGURE is set.

https://bugzilla.gnome.org/show_bug.cgi?id=782418
2017-07-05 10:23:01 +01:00
Guillaume Desmottes
a3805116df omxvideodec: increase the minimum number of allocated buffers
Ensure that enough buffers are allocated by adding up component's own
minimal plus the number of buffers requested by downstream.
This should prevent buffers starvation problem if downstream elements
are holding some of the buffers they required.

Also simplify the check on the maximum on buffers. What we actually care
about is to make sure the pool can hold the minimum of required buffers.

https://bugzilla.gnome.org/show_bug.cgi?id=784479
2017-07-03 11:05:24 -04:00
Sejun Park
d980af213b omxvideodec: Removed unreachable code
https://bugzilla.gnome.org/show_bug.cgi?id=782416
2017-05-10 11:54:44 +01:00
Jan Schmidt
7c829886ca omxvideodec: demote ERROR message
There's no need to warn about failing to negotiate EGL output
 - that can be perfectly normal.
2017-03-14 02:34:36 +11:00
Graham Leggett
a1e613dd89 omx*dec: Flush before we stop the srcpad loop
Flushing could otherwise hang if output port queue of pending buffers was empty

https://bugzilla.gnome.org/show_bug.cgi?id=774654
2016-12-19 10:52:16 +02:00
Matthew Waters
baaf404f2b videodecoder: remove use of EGLImage orientation
New code should use GstVideoTransformationMeta

(The defaults do the right thing here though).
2016-11-17 19:56:35 +11:00
Kazunori Kobayashi
766cd65fa4 omxvideodec: Use GST_VIDEO_FRAME_PLANE_STRIDE() to get output buffer's stride
GST_VIDEO_FRAME_PLANE_STRIDE() should be used to get the actual buffer stride,
as reported in the buffers's GstVideoMeta, when copying data to that buffer.

https://bugzilla.gnome.org/show_bug.cgi?id=768173
2016-06-29 18:44:20 +10:00
Sebastian Dröge
a78756c63f omx: #define OMX_SKIP64BIT on the RPi as required by their API
Also add generic support for OMX_SKIP64BIT to gst-omx, in case other
implementations also #define that for whatever reason.

https://bugzilla.gnome.org/show_bug.cgi?id=766475
2016-06-17 12:06:48 +03:00
Sebastian Dröge
198e31355f omxvideodec: Implement ::drain() virtual method
https://bugzilla.gnome.org/show_bug.cgi?id=767641
2016-06-17 10:59:45 +03:00
Gwang Yoon Hwang
27d2cdd45d omxvideodec : Use gstglmemoryegl for the RPi
Modified to use gstglmemoryegl to avoid texture creation/copy operations
at the glupload.

[Matthew Waters]: gst-indent the sources and port testegl to GstGLMemoryEGL

https://bugzilla.gnome.org/show_bug.cgi?id=760918
2016-05-04 13:42:23 +10:00
Enrique Ocaña González
d1a79d7c59 Properly handle drain requests while flushing
Without this commit the decoder streaming thread stops without ever attending
the drain request, leaving the decoder input thread waiting forever.

https://bugzilla.gnome.org/show_bug.cgi?id=758274
2015-11-18 15:18:02 +02:00
Thiago Santos
c038df6671 omxvideodec: use default pad accept-caps handling
Instead of the videodecoder one. The OMX video decoders have their
valid input in the template pad, so just check against that to
avoid doing a query downstream.
2015-08-28 12:57:33 -03:00
Aurélien Zanelli
d2df0fb032 omxvideodec: unref allocator after getting it from allocation query
Otherwise a reference will be leaked for each allocator. It only happens
when target platform is Raspberry Pi and when we have GL support.

https://bugzilla.gnome.org/show_bug.cgi?id=751867
2015-07-06 11:54:28 +03: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
4593f434a0 omxbufferpool: Copy buffers if the stride does not match and we can't use video meta
https://bugzilla.gnome.org/show_bug.cgi?id=731672
2014-06-24 15:11:53 +02:00
Aurélien Zanelli
58aa603b36 omxvideodec: fix a query leak
Also add a debug message if query fails.

https://bugzilla.gnome.org/show_bug.cgi?id=731898
2014-06-20 11:54:25 +02:00
Aurélien Zanelli
ad969ffda3 omxvideodec: release frames with old PTS to avoid memory issue
Interlaced stream could make the decoder use two input frames to produce
one output frame causing the gstvideodecoder frame list to grow.
Assuming the video decoder output frame in display order rather than in
decoding order, this commit add a way to release frames with PTS less
than current output frame.

https://bugzilla.gnome.org/show_bug.cgi?id=730995
2014-06-04 16:36:02 +02:00
Aurélien Zanelli
3ed713db0d omxvideodec: add missing stream unlock in error path 2014-06-02 19:28:51 +02:00
Sebastian Dröge
bf7e6109d9 omxvideodec: Don't leak buffer pool config in error cases
CID 1216158
2014-05-26 11:03:03 +02:00
Sebastian Dröge
e542177c65 omxvideodec: Make output buffer pointer always initialized
CID 1214605
2014-05-19 09:08:33 +02:00
Sebastian Dröge
c2e5dca5f0 omxvideodec: Check return value of gst_buffer_map()
CID 1214599
2014-05-19 09:06:42 +02:00
Sebastian Dröge
429b0e1e27 omxvideodec: Check return value of gst_omx_port_set_enabled() for errors
CID 1214589
2014-05-19 09:04:09 +02:00
Sebastian Dröge
e08c0dc88a omxvideodec: Check return values of buffer pool config parsing functions
CID 1214588
2014-05-19 09:01:46 +02:00
Sebastian Dröge
4e20116bc6 omx: Add a hack for not disabling the output port after set_format until the output format is known
Needed on some OMX implementations, e.g. the one from Atmel. It does
not send the settings-changed event on the output port if it is
disabled.
2014-05-15 10:59:35 +02:00
Sebastian Dröge
cfbf5bf16d omxvideodec: Set nTickCount based on the buffer's duration instead of something wrong 2014-05-10 22:47:56 +02:00
Julien Isorce
bdec8c0595 omxvideodec: can negotiate caps with memory:EGLImage feature when using EGLImage allocator
Previously when using gst EGLImage allocator the caps was
video/x-raw, format=RGBA instead of
video/x-raw(memory:EGLImage), format=RGBA

Kepp previous behavior in case negotiation fails with caps feature.
It means it will still have a chance to use EGLImage even if the
feature is not in the caps.

https://bugzilla.gnome.org/show_bug.cgi?id=729196
2014-05-02 18:00:48 +01:00
Aurélien Zanelli
da4cf3da1f omxvideodec: don't unref caps before logging field from it
https://bugzilla.gnome.org/show_bug.cgi?id=728322
2014-04-17 09:33:47 +02:00
Julien Isorce
499fb23e9c omxvideodec: use new libgstgl API since libgstegl has been removed
There is no point to retrieve a ref/unref type
instead of an EGLDisplay directly. It's like for EGLImage.

https://bugzilla.gnome.org/show_bug.cgi?id=703343
2014-04-15 18:32:12 +01:00
Julien Isorce
d4bb7cb4c7 configure.ac: check for libgstgl since libgstegl has been removed
https://bugzilla.gnome.org/show_bug.cgi?id=703343
2014-04-15 18:32:12 +01:00
Aurélien Zanelli
1b6879921c omxvideodec: add support of more color format
Add support for ABGR, ARGB, RGB16, BGR16, YUY2, UYVY, YVYU, GRAY8 and
NV16 color format.
2014-04-15 15:09:24 +01:00
Aurélien Zanelli
f5f876f681 omxvideodec: simplify color format conversion in fill_buffer function 2014-04-15 15:09:24 +01:00
Aurélien Zanelli
c115da9fd5 omx: add an helper to convert OMX color format to GStreamer color format 2014-04-15 15:09:23 +01:00
Josep Torra
718fd1bb93 omxvideodec: Implement pipeline draining to support adaptive scenarios
When draining due a format change also drain
the pipeline to reclaim back all buffers.

https://bugzilla.gnome.org/show_bug.cgi?id=726107
2014-03-28 11:40:20 +00:00
Josep Torra
73d83f311c omxvideodec: fixes race condition during seeks
Acording 6.1.3 Seek Event Sequence in the OpenMAX IL 1.1.2 spec
document in order to flush the component it needs to be in
paused state.

https://bugzilla.gnome.org/show_bug.cgi?id=726038
2014-03-25 16:07:25 +00:00
Julien Isorce
39ca9f980e omxvideodec: use flush because reset is deprecated
https://bugzilla.gnome.org/show_bug.cgi?id=726038
2014-03-25 16:07:15 +00:00
Julien Isorce
777411c286 omxvideodec: populate the most downstream output port on reset
Make seeking work when using egl_render component

https://bugzilla.gnome.org/show_bug.cgi?id=726038
2014-03-25 16:06:51 +00:00
Christian König
651e67e32d omxvideodec: add missing unlock in the error path
Signed-off-by: Christian König <christian.koenig@amd.com>

https://bugzilla.gnome.org/show_bug.cgi?id=726958
2014-03-24 11:11:39 +00:00
Sebastian Dröge
a04ef276e5 omx: Rename function from _4_ to _for_ for clarity 2014-03-12 12:47:34 +01:00
Christian König
6bf4d9a498 omxvideo: start sharing more code between video decoder and encoder
Identical functionality spread of two different components.
We can't use a common base class because of different inheritance,
but let's try to share the code anyway.

https://bugzilla.gnome.org/show_bug.cgi?id=726024
2014-03-12 12:47:09 +01:00
Christian König
325c90f99d omxvideodec: separate the buffer pool from the decoder
https://bugzilla.gnome.org/show_bug.cgi?id=726025
2014-03-12 12:42:03 +01:00
Christian König
de5f940186 omx: simplify tunnel functions
Specifying the component is error prone and unnecessary.

https://bugzilla.gnome.org/show_bug.cgi?id=726021
2014-03-12 08:48:46 +01:00
Christian König
14a0da437f omxvideodec: fix memory leak in gst_omx_video_dec_allocate_output_buffers
https://bugzilla.gnome.org/show_bug.cgi?id=725907
2014-03-08 15:23:59 +01:00
Christian König
5ac0fe2108 omxvideodec: fix memory leak gst_omx_video_dec_negotiate
https://bugzilla.gnome.org/show_bug.cgi?id=725907
2014-03-08 15:22:15 +01:00
Christian König
2cfe70ed5d omxvideodec: simplify _find_nearest_frame
No need to make it more complicated and error prone than
necessary. Also give the function a gst_omx_video_dec prefix
to distinct it from the encoder function.

https://bugzilla.gnome.org/show_bug.cgi?id=724236
2014-03-03 20:12:51 +01:00
Christian König
bf0d2614c3 omxvideodec: remove dead code
This code doesn't seems to be used for quite a while,
remove it before it starts to rot.

https://bugzilla.gnome.org/show_bug.cgi?id=724236
2014-03-03 20:12:35 +01:00
Christian König
0a8cfcde87 omxvideodec: fix startup race condition
The reset function shouldn't start the src pad
loop if it wasn't started before.

Signed-off-by: Christian König <christian.koenig@amd.com>
2014-03-02 12:08:09 +01:00
Sebastian Dröge
1bf4edf721 omx: Don't handle FLUSHING and NOT_LINKED as errors
Also don't stop the task on NOT_LINKED. We're not a demuxer.
2014-01-25 17:44:57 +01:00
Tim-Philipp Müller
498b74ab6a omx: don't use the 'z' modifier to print size_t
gcc will warn in some cases even if the size of the type
is exactly that of size_t on the platform.

https://bugzilla.gnome.org/show_bug.cgi?id=699008
2013-08-20 16:00:07 +01:00
Josep Torra
f3f9330332 omx: Take lock on EOS to update the flow return value
Fixes "GThread-ERROR **: file gthread-posix.c: line 171
(g_mutex_free_posix_impl): error 'Device or resource busy' during
'pthread_mutex_destroy ((pthread_mutex_t *) mutex)'" in _finalize.
2013-05-20 12:06:34 +02:00