gstreamer/omx
George Kiagiadakis 783e58fc48 omxbufferpool: refactor to allow memory sharing
One big restriction of the OMX buffer pool has always been
that the GstMemory objects were flagged with NO_SHARE.
This was because the buffer pool needed to be sure that when
a buffer returned to the pool, it would be safe to release the
OMX buffer back to OpenMAX.

With this change, this is no longer a restriction. What this
commit introduces is a new allocator that allows us to track
the GstMemory objects independently. Now, when a buffer returns
to the pool, it is not necessary for the memory to be released
as well. We simply track the memory's ref count in the allocator
and we return the OMX buffer back when the memory's ref count
drops to 0.

The reason for doing this is to allow implementing zero-copy
transfers in situations where we may need to copy or map a
certain region of the buffer. For instance, omxh264enc ! h264parse
should be possible to be zero-copy by using an OMX buffer pool
between them.
2019-04-25 09:09:40 +05:30
..
openmax openmax: Add OpenMAX IL 1.1.2 headers 2011-07-06 08:42:09 +02:00
gstomx.c Fixes build with omx >= 1.2.0 2019-04-16 12:26:03 -07:00
gstomx.h omxbufferpool: fix race when releasing input buffers 2019-01-08 16:04:31 +01:00
gstomxaacdec.c omx: Add hardware classifiers to encoders/decoders 2019-03-26 12:17:26 +00:00
gstomxaacdec.h omx: Add AAC audio decoder 2014-07-13 18:22:39 +02:00
gstomxaacenc.c omx: Add hardware classifiers to encoders/decoders 2019-03-26 12:17:26 +00:00
gstomxaacenc.h omxaacenc: Add initial version of OpenMAX AAC encoder element 2011-08-16 10:49:21 +02:00
gstomxallocator.c omxbufferpool: refactor to allow memory sharing 2019-04-25 09:09:40 +05:30
gstomxallocator.h omxbufferpool: refactor to allow memory sharing 2019-04-25 09:09:40 +05:30
gstomxamrdec.c omx: Add hardware classifiers to encoders/decoders 2019-03-26 12:17:26 +00:00
gstomxamrdec.h omx: Add omxamrdec 2014-11-13 13:32:16 +01:00
gstomxanalogaudiosink.c omxaudiosink: Implements OpenMAX based audio sinks 2014-05-09 13:15:18 +02:00
gstomxanalogaudiosink.h omxaudiosink: Implements OpenMAX based audio sinks 2014-05-09 13:15:18 +02:00
gstomxaudiodec.c omx: allow gst_omx_port_acquire_buffer() to not wait for buffers 2018-08-30 10:59:30 +02:00
gstomxaudiodec.h omxaudiodec: Add an output adapter for chunking the output into codec frames 2015-05-19 19:14:42 +03:00
gstomxaudioenc.c omx: allow gst_omx_port_acquire_buffer() to not wait for buffers 2018-08-30 10:59:30 +02:00
gstomxaudioenc.h omx: Let base classes handle EOS 2014-08-14 17:36:11 +03:00
gstomxaudiosink.c omx: allow gst_omx_port_acquire_buffer() to not wait for buffers 2018-08-30 10:59:30 +02:00
gstomxaudiosink.h omxaudiosink: Implements OpenMAX based audio sinks 2014-05-09 13:15:18 +02:00
gstomxbufferpool.c omxbufferpool: refactor to allow memory sharing 2019-04-25 09:09:40 +05:30
gstomxbufferpool.h omxbufferpool: refactor to allow memory sharing 2019-04-25 09:09:40 +05:30
gstomxh263dec.c omx: Add hardware classifiers to encoders/decoders 2019-03-26 12:17:26 +00:00
gstomxh263dec.h omxh263dec: Add H.263 decoder element 2011-07-25 11:44:56 +02:00
gstomxh263enc.c omx: Add hardware classifiers to encoders/decoders 2019-03-26 12:17:26 +00:00
gstomxh263enc.h omxh263enc: Add H.263 encoder element 2011-07-29 12:06:21 +02:00
gstomxh264dec.c omx: Add hardware classifiers to encoders/decoders 2019-03-26 12:17:26 +00:00
gstomxh264dec.h omxh264dec: Rename from omxh264videodec to omxh264dec 2011-07-12 08:54:22 +02:00
gstomxh264enc.c omx: Add hardware classifiers to encoders/decoders 2019-03-26 12:17:26 +00:00
gstomxh264enc.h omxh264enc: add some encoding properties 2018-01-30 11:51:10 +00:00
gstomxh264utils.c omxh264: sync with supported profiles on zynqultrascaleplus 2018-04-25 09:20:02 +02:00
gstomxh264utils.h omxh264: factor out gst_omx_h264_utils_get_profile_from_enum() 2018-04-25 09:20:02 +02:00
gstomxh265dec.c omx: Add hardware classifiers to encoders/decoders 2019-03-26 12:17:26 +00:00
gstomxh265dec.h omxh265dec: add H265 decoder 2017-09-06 14:50:18 -04:00
gstomxh265enc.c omx: Add hardware classifiers to encoders/decoders 2019-03-26 12:17:26 +00:00
gstomxh265enc.h omxh265enc: add some encoding properties 2018-01-30 11:51:10 +00:00
gstomxh265utils.c omxh265: add format range extension profiles on zynqultrascaleplus 2018-04-25 09:20:02 +02:00
gstomxh265utils.h omxh265: factor out gst_omx_h265_utils_get_profile_from_enum() 2018-04-25 09:20:02 +02:00
gstomxhdmiaudiosink.c omxaudiosink: Implements OpenMAX based audio sinks 2014-05-09 13:15:18 +02:00
gstomxhdmiaudiosink.h omxaudiosink: Implements OpenMAX based audio sinks 2014-05-09 13:15:18 +02:00
gstomxmjpegdec.c omx: Add hardware classifiers to encoders/decoders 2019-03-26 12:17:26 +00:00
gstomxmjpegdec.h omx: Add MJPEG decoder support 2013-03-18 16:34:51 +01:00
gstomxmp3dec.c omx: Add hardware classifiers to encoders/decoders 2019-03-26 12:17:26 +00:00
gstomxmp3dec.h omx: Add audio decoder base class and a subclass for MP3 2014-07-02 09:21:00 +02:00
gstomxmp3enc.c omx: Add hardware classifiers to encoders/decoders 2019-03-26 12:17:26 +00:00
gstomxmp3enc.h omx: add gstomxmp3enc 2017-07-12 14:29:44 +01:00
gstomxmpeg2videodec.c omx: Add hardware classifiers to encoders/decoders 2019-03-26 12:17:26 +00:00
gstomxmpeg2videodec.h omx: Rename MPEG2 decoder for consistency everywhere 2013-03-18 16:34:51 +01:00
gstomxmpeg4videodec.c omx: Add hardware classifiers to encoders/decoders 2019-03-26 12:17:26 +00:00
gstomxmpeg4videodec.h omx: Add initial version of OpenMAX framework, video decoder base class and MPEG4 video decoder 2011-07-09 11:06:05 +02:00
gstomxmpeg4videoenc.c omx: Add hardware classifiers to encoders/decoders 2019-03-26 12:17:26 +00:00
gstomxmpeg4videoenc.h omxvideoenc: Add video encoder base class and MPEG4 video encoder 2011-07-20 11:08:18 +02:00
gstomxtheoradec.c omx: Add hardware classifiers to encoders/decoders 2019-03-26 12:17:26 +00:00
gstomxtheoradec.h omx: fix typo in copyright headers 2013-03-19 16:40:09 +00:00
gstomxvideo.c omxvideo: use GST_VIDEO_CAPS_MAKE() for template caps 2019-01-25 23:48:11 +00:00
gstomxvideo.h omxvideo: use GST_VIDEO_CAPS_MAKE() for template caps 2019-01-25 23:48:11 +00:00
gstomxvideodec.c omxvideodec: add debug if proposed pool can't provide enough buffers 2019-03-26 15:15:21 +01:00
gstomxvideodec.h omxvideodec: Remove dead code 2019-01-25 00:50:06 +00:00
gstomxvideoenc.c omxbufferpool: refactor to allow memory sharing 2019-04-25 09:09:40 +05:30
gstomxvideoenc.h omxvideoenc: implement dmabuf export on input buffers 2018-08-30 10:59:30 +02:00
gstomxvp8dec.c omx: Add hardware classifiers to encoders/decoders 2019-03-26 12:17:26 +00:00
gstomxvp8dec.h omx: Only include OMX_VideoExt.h conditionally 2014-06-24 14:52:43 +02:00
gstomxwmvdec.c omx: Add hardware classifiers to encoders/decoders 2019-03-26 12:17:26 +00:00
gstomxwmvdec.h omxwmvdec: Add WMV video decoder element 2011-07-25 12:01:05 +02:00
Makefile.am omxbufferpool: refactor to allow memory sharing 2019-04-25 09:09:40 +05:30
meson.build omxbufferpool: refactor to allow memory sharing 2019-04-25 09:09:40 +05:30