platform/upstream/gstreamer.git
4 years agovideo: remove BGR from supported format
Guillaume Desmottes [Fri, 10 Apr 2020 07:59:02 +0000 (09:59 +0200)]
video: remove BGR from supported format

It's not supported by either decoder or encoder and is even not listed in
gst_omx_video_get_format_from_omx() so it can't work.

4 years agoomxvideoenc: add GRAY8 support
Guillaume Desmottes [Fri, 10 Apr 2020 08:21:16 +0000 (10:21 +0200)]
omxvideoenc: add GRAY8 support

It's supported by Zynq encoder and was already in the sink caps
template.

4 years agoomxvideoenc: factor out gst_omx_video_enc_copy_plane()
Guillaume Desmottes [Fri, 10 Apr 2020 09:18:49 +0000 (11:18 +0200)]
omxvideoenc: factor out gst_omx_video_enc_copy_plane()

No semantic change, I'm going to use it to copy GRAY8 buffers which is
actually a single plane 8-bits format.

4 years agoomxvideoenc: use gst_video_meta_get_plane_height() to compute slice height
Guillaume Desmottes [Fri, 10 Apr 2020 08:58:34 +0000 (10:58 +0200)]
omxvideoenc: use gst_video_meta_get_plane_height() to compute slice height

This new API saves us from doing manual computation and actually work
with single planar formats, such as GRAY8.

4 years agoomxh26xenc: fix coverity with frame test
Stéphane Cerveau [Tue, 7 Apr 2020 17:59:12 +0000 (19:59 +0200)]
omxh26xenc: fix coverity with frame test

Coverity was complaining with:
Null pointer dereferences  (REVERSE_INULL) Null-checking "frame"
suggests that it may be null, but it has already been
dereferenced on all paths leading to the check.

The frame == NULL has been removed as 'frame' is actively used
in the code above without any change of dereferencing and setting
its value to NULL before the test.

CID: 1461287

4 years agogstomxvideoenc: fix subframe output_buffer
Stéphane Cerveau [Thu, 19 Mar 2020 15:23:41 +0000 (16:23 +0100)]
gstomxvideoenc: fix subframe output_buffer

Using more than 1 subframes was failing with
frame->output_buffer = NULL

4 years agoomxvideodec: add support of alternate interlace mode on zynq
Guillaume Desmottes [Thu, 6 Feb 2020 04:51:49 +0000 (10:21 +0530)]
omxvideodec: add support of alternate interlace mode on zynq

4 years agoomxvideoenc: add support of alternate interlace mode on zynq
Guillaume Desmottes [Thu, 6 Feb 2020 04:41:13 +0000 (10:11 +0530)]
omxvideoenc: add support of alternate interlace mode on zynq

It's only supported by the Zynq HEVC encoder for now.

4 years agoomx: add alternate flags to buffer_flags_map
Guillaume Desmottes [Thu, 6 Feb 2020 04:42:50 +0000 (10:12 +0530)]
omx: add alternate flags to buffer_flags_map

Zynq specific flags used to tag top/bottom fields in alternate mode.

4 years agoomxvideo(enc): use GST_VIDEO_INFO_FIELD_RATE_N()
Guillaume Desmottes [Thu, 6 Feb 2020 04:27:48 +0000 (09:57 +0530)]
omxvideo(enc): use GST_VIDEO_INFO_FIELD_RATE_N()

Does not change anything for now but will be needed when we'll support
interlace-mode=alternate as the field rate will be twice the frame rate.

Made the code safe from division by 0 while I was on it.

4 years agoomxvideo{enc,dec}: use GST_VIDEO_INFO_FIELD_HEIGHT()
Guillaume Desmottes [Thu, 6 Feb 2020 04:06:20 +0000 (09:36 +0530)]
omxvideo{enc,dec}: use GST_VIDEO_INFO_FIELD_HEIGHT()

Does not change anything for now but will be needed when we'll support
interlace-mode=alternate as the fields will have half the frame height.

4 years agoomx: don't log error when failing to load conf file with generic target
Guillaume Desmottes [Tue, 25 Feb 2020 05:15:47 +0000 (10:45 +0530)]
omx: don't log error when failing to load conf file with generic target

The generic target is meant to only test building gst-omx. It doesn't
provide any configuration file and so is not supposed to register any
element.
I'm not aware of any user building gst-omx with this target and
providing their own conf file to actually register elements. But best to
not break this use case anyway so let's just downgrade the log message.

Fix GST_ERROR in the 'check fedora' CI job.

4 years agomeson: add glib project fallback
Stéphane Cerveau [Mon, 27 Jan 2020 10:56:53 +0000 (11:56 +0100)]
meson: add glib project fallback

Add a fallback from glib project to provide glib, gio and
gmodule dependencies.

4 years agoomxvideoenc: fix warning
Stéphane Cerveau [Wed, 15 Jan 2020 11:06:12 +0000 (11:06 +0000)]
omxvideoenc: fix warning

Fix warning test when OMX_BUFFERFLAG_ENDOFFRAME
is not set.

4 years agoomxvideoenc: Add look-ahead property to ZYNQ_USCALE_PLUS encoder
Varunkumar Allagadapa [Tue, 28 Aug 2018 20:03:14 +0000 (13:03 -0700)]
omxvideoenc: Add look-ahead property to ZYNQ_USCALE_PLUS encoder

This patch adds look-ahead property to encoder

The value indicates look ahead size in frames,
the number of frames processed ahead of second pass encoding.
Dual pass encoding is disabled if look-ahead
value is less than 2.

4 years agoomxvideoenc: Add long-term-ref support to ZYNQ_USCALE_PLUS encoder
Varunkumar Allagadapa [Mon, 6 Aug 2018 20:02:41 +0000 (13:02 -0700)]
omxvideoenc: Add long-term-ref support to ZYNQ_USCALE_PLUS encoder

Custom API that upstream elements can use to notify encoders about
marking longterm ref. pictures or using longterm ref. pictures in
encoding process.

This patch adds below properties:

long-term-ref: Enable/Disable dynamically marking long-term
reference pictures in encoding process

long-term-freq: Periodicity of long-term reference picture
marking in encoding process.

If a picture is marked as long-term reference picture then it remains
in the DPB list for ever unless it overrides with new long-term pitcure with
same index. Encoder can use this long-term picture as refence for
encoding.

This feature is mostly useful to avoid visual artifacts propagation in streaming use cases
when packet loss happens. Instead of requesting for IDR, client can request for use long-term
reference picture for encoding.

4 years agomeson: display OMX target when configuring
Guillaume Desmottes [Tue, 7 Jan 2020 04:54:19 +0000 (10:24 +0530)]
meson: display OMX target when configuring

I'm adding more gst-omx CI (
https://gitlab.freedesktop.org/gstreamer/gst-ci/issues/20 ) having the
OMX targets displayed in the logs makes things clearer.

4 years agoomx: remove useless double negations
Guillaume Desmottes [Fri, 30 Aug 2019 04:57:32 +0000 (10:27 +0530)]
omx: remove useless double negations

flush and port->flushing are both gboolean.

4 years agomeson: fix tizonia build
Julien Isorce [Sat, 21 Dec 2019 06:19:06 +0000 (22:19 -0800)]
meson: fix tizonia build

meson.build was both using path to gst-omx/openmax/OMX*
headers and path to OMX headers provided by tizilheaders.pc
so this patch makes sure we only use the later.

Also bump tizonia minimum version to 0.19.0 which
is the latest release.

4 years agoomxh265enc: handle CODECCONFIG buffers
Guillaume Desmottes [Thu, 16 May 2019 08:50:18 +0000 (10:50 +0200)]
omxh265enc: handle CODECCONFIG buffers

Exact same code as omxh264enc.

4 years agoomxh264enc: send codec data downstream
Guillaume Desmottes [Thu, 16 May 2019 08:38:49 +0000 (10:38 +0200)]
omxh264enc: send codec data downstream

We are operating in stream-format=byte-stream so the codec data buffer
is meant to be part of the buffer flow.

The base class will push it when a key frame is requested (as we stored
it with gst_video_encoder_set_headers()) but we still have to push it
right away as part of the normal buffer flow.

Also set the HEADER flag on this buffer.

4 years agoomxh264enc: no need to check if codeconfig has startcode
Guillaume Desmottes [Thu, 16 May 2019 08:38:49 +0000 (10:38 +0200)]
omxh264enc: no need to check if codeconfig has startcode

We currently only support stream-format=byte-stream so there is no point
re-checking for it when handling CODECCONFIG buffer.

4 years agoomxh26xenc: Negotiate subframe mode
Nicolas Dufresne [Tue, 4 Sep 2018 20:12:17 +0000 (20:12 +0000)]
omxh26xenc: Negotiate subframe mode

We now negotiate subframe mode through the caps. To enabled subframe
mode, the caps need to specify alignment=nal:

  ... ! omxh264enc ! video/x-h264,alignment=nal ! ...
  ... ! omxh265enc ! video/x-h265,alignment=nal ! ...

4 years agoomxvideoenc: use subframe base class API
Guillaume Desmottes [Fri, 31 Aug 2018 10:24:34 +0000 (12:24 +0200)]
omxvideoenc: use subframe base class API

Use subframe base class support.

4 years agoomx: Add helper to enable/disable/read subframe mode
Nicolas Dufresne [Tue, 4 Sep 2018 19:34:59 +0000 (19:34 +0000)]
omx: Add helper to enable/disable/read subframe mode

4 years agozynq: add mapping for latest custom indexes
Guillaume Desmottes [Thu, 19 Dec 2019 08:21:17 +0000 (13:51 +0530)]
zynq: add mapping for latest custom indexes

Fix warning when building using version 2019.2 of OMX headers.

4 years agoomxvideoenc: update qp-mode settings
Varunkumar Allagadapa [Thu, 12 Sep 2019 23:29:59 +0000 (16:29 -0700)]
omxvideoenc: update qp-mode settings

Adds load-qp-absolute and load-qp-relative qp-modes

4 years agoomxvideoenc: Add stride check for input buffer extraction
Shinya Saito [Tue, 10 Dec 2019 09:34:25 +0000 (18:34 +0900)]
omxvideoenc: Add stride check for input buffer extraction

Stride of input buffer may be different from
that of omx input port even if both sizes are the same.

5 years agoomxvideoenc: pass padding requirements to ALLOCATION query
Guillaume Desmottes [Wed, 15 May 2019 12:04:47 +0000 (14:04 +0200)]
omxvideoenc: pass padding requirements to ALLOCATION query

By passing the expected video buffer layout, the upstream producer
may be able to produce buffers fitting those requierements allowing
gst-omx to use dynamic buffer mode rather than having to copy each input
buffer.

This is particularly useful with v4l2src as it can request the capture
driver to produce buffers with the required paddings.

5 years agoomxbufferpool: use gst_video_meta_set_alignment()
Guillaume Desmottes [Tue, 9 Jul 2019 11:07:32 +0000 (13:07 +0200)]
omxbufferpool: use gst_video_meta_set_alignment()

Tell buffer consumer about our paddings.

v4l2src can now uses these paddings information when trying to import
buffers to configure the v4l2 driver accordingly.

5 years agoomxvideoenc: fix buffer size in debug log
Guillaume Desmottes [Thu, 30 May 2019 05:41:34 +0000 (11:11 +0530)]
omxvideoenc: fix buffer size in debug log

Use the actual OMX buffer size rather than the info.size as OMX
may require larger buffer if the port requires some padding.

5 years agoRemove autotools build
Tim-Philipp Müller [Sun, 13 Oct 2019 23:48:32 +0000 (00:48 +0100)]
Remove autotools build

5 years agoomxallocator: fix leak with a proper chaining finalize
Stéphane Cerveau [Mon, 7 Oct 2019 16:59:10 +0000 (16:59 +0000)]
omxallocator: fix leak with a proper chaining finalize

5 years agoomxvideoenc: revert draining on ALLOCATION and DRAIN query
Guillaume Desmottes [Fri, 20 Sep 2019 09:32:24 +0000 (15:02 +0530)]
omxvideoenc: revert draining on ALLOCATION and DRAIN query

My latest patch introduces some regressions which I have no time to
debug properly at the moment so just revert it for now.

5 years agoomxvideoenc: let encoder base class handle ALLOCATION query
Guillaume Desmottes [Tue, 17 Sep 2019 07:32:54 +0000 (13:02 +0530)]
omxvideoenc: let encoder base class handle ALLOCATION query

Fixing a regression introduced in my previous patch
(7c40a91c31aa4bcbb191f7c6a5d222edf9dfd9d1).

The ALLOCATION query needs to be handled by GstVideoEncoder (to call
propose_allocation()) so chain up the query handling rather than early
returning.

5 years agoomxvideoenc: drain encoder on ALLOCATION and DRAIN queries
Guillaume Desmottes [Thu, 29 Aug 2019 06:50:56 +0000 (12:20 +0530)]
omxvideoenc: drain encoder on ALLOCATION and DRAIN queries

Ensure that the encoder releases all its input buffers when requested by
upstream. Encoder input buffers may be shared with downstreaming (when
using dmabuf), upstream may then request the encoder to
drain when reconfiguring before destroying its buffers.

Also drain on ALLOCATION query as we already do in kmssink as that
notify of a format change.

Fix "decoder ! encoder" pipeline when decoding a file with different
resolutions on Zynq.

5 years agoomx: log the number of pending buffers when port is EOS
Guillaume Desmottes [Wed, 28 Aug 2019 10:22:41 +0000 (15:52 +0530)]
omx: log the number of pending buffers when port is EOS

5 years agoomx: log when an output port is eos
Guillaume Desmottes [Wed, 28 Aug 2019 10:19:00 +0000 (15:49 +0530)]
omx: log when an output port is eos

5 years agoomxvideoenc: log the full input format
Guillaume Desmottes [Tue, 27 Aug 2019 10:17:28 +0000 (15:47 +0530)]
omxvideoenc: log the full input format

Make it easier to debug dynamic format changes.

5 years agoomxvideodec: fix dmabuf import
Guillaume Desmottes [Wed, 21 Aug 2019 06:55:40 +0000 (12:25 +0530)]
omxvideodec: fix dmabuf import

When importing dmabuf, UseBuffer() has to be called with the fd as
pBuffer rather than the mapped address of the buffer.

5 years agoomxbufferpool: fix dmabuf import
Guillaume Desmottes [Wed, 21 Aug 2019 07:18:25 +0000 (12:48 +0530)]
omxbufferpool: fix dmabuf import

When importing dmabuf from downstream, we want the allocator to be in
OTHER_POOL mode despite output_mode being DMABUF.
So check first if other_pool is set before checking for pool's
output_mode.

5 years agoomxvideoenc: Remove unnecessary gst_video_frame_unmap()
Shinya Saito [Thu, 22 Aug 2019 08:55:54 +0000 (17:55 +0900)]
omxvideoenc: Remove unnecessary gst_video_frame_unmap()

5 years agoomxvideodec: log supported caps by the decoder
Guillaume Desmottes [Thu, 25 Jul 2019 11:00:13 +0000 (16:30 +0530)]
omxvideodec: log supported caps by the decoder

Can be useful when debugging to check the caps supported by the decoder
before filtering.

5 years agoomxvideoenc: Unref frame of codec config buffer
Shinya Saito [Thu, 11 Jul 2019 03:03:46 +0000 (12:03 +0900)]
omxvideoenc: Unref frame of codec config buffer

After handling codec config, codec frame should be unreffed.

5 years agoomxvideo: check difference between frame and requested ts
Guillaume Desmottes [Fri, 14 Jun 2019 10:57:37 +0000 (16:27 +0530)]
omxvideo: check difference between frame and requested ts

This has proven to be very useful when debugging to detect bugs where we
match the wrong gst frame with an output OMX buffer.

5 years agoomxvideo: add debug infos to find_nearest_frame()
Guillaume Desmottes [Fri, 14 Jun 2019 05:27:29 +0000 (10:57 +0530)]
omxvideo: add debug infos to find_nearest_frame()

Those debug infos have proved to be very helpful when debugging
timestamp issues. They are often linked to gst-omx picking the wrong
frame when trying to map from OMX.

5 years agoomxvideodec: Deactivate negotiated pool when output own buffer
Shinya Saito [Tue, 5 Mar 2019 07:57:40 +0000 (16:57 +0900)]
omxvideodec: Deactivate negotiated pool when output own buffer

If decoder outputs internal buffer and not use OMX_UseBuffer,
downstream bufferpool should be stopped.

5 years agoomxh264enc: Add 'ref-frames' property
Shinya Saito [Mon, 3 Jun 2019 03:21:05 +0000 (12:21 +0900)]
omxh264enc: Add 'ref-frames' property

Add a property to control the number of frames for reference.

Min and max value is based on OpenMAX IL 1.2.0 Specification.

5 years agomeson: Bump minimal GLib version to 2.44
Niels De Graef [Mon, 3 Jun 2019 05:57:02 +0000 (07:57 +0200)]
meson: Bump minimal GLib version to 2.44

This means we can use some newer features and get rid of some
boilerplate code using the G_DECLARE_* macros.

As discussed on IRC, 2.44 is old enough by now to start depending on it.

5 years agodoc: Build documentation of hotdoc
Thibault Saunier [Fri, 19 Apr 2019 16:38:54 +0000 (12:38 -0400)]
doc: Build documentation of hotdoc

5 years agogstomx: remove gst_omx_buffer_set_omx_buf/get_omx_buf
George Kiagiadakis [Tue, 26 Mar 2019 10:26:03 +0000 (12:26 +0200)]
gstomx: remove gst_omx_buffer_set_omx_buf/get_omx_buf

They are no longer used anywhere

5 years agoomxbufferpool: refactor to allow memory sharing
George Kiagiadakis [Fri, 22 Mar 2019 10:11:13 +0000 (12:11 +0200)]
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.

5 years agoomxbufferpool: fix memory mapping with offset
Guillaume Desmottes [Tue, 23 Apr 2019 09:43:23 +0000 (15:13 +0530)]
omxbufferpool: fix memory mapping with offset

gst_memory_map() is already adding the offset to the mapped pointer.
Doing it in the memory implementation was resulting in the offset being
accounted twice.

It doesn't matter yet as we are only creating memory without offset for
now but it will once we'll start sharing OMX memories.

5 years agoBack to development
Tim-Philipp Müller [Fri, 19 Apr 2019 09:43:58 +0000 (10:43 +0100)]
Back to development

5 years agoRelease 1.16.0
Tim-Philipp Müller [Thu, 18 Apr 2019 23:38:44 +0000 (00:38 +0100)]
Release 1.16.0

5 years agoFixes build with omx >= 1.2.0
Julien Isorce [Tue, 16 Apr 2019 19:23:10 +0000 (12:23 -0700)]
Fixes build with omx >= 1.2.0

gstomx.c:1405:10: error: ‘OMX_IndexParamCustomContentPipe’ undeclared (first use in this function)
    case OMX_IndexParamCustomContentPipe

Some enums have been deprecated in 1.2.0

https://gitlab.freedesktop.org/gstreamer/gst-omx/issues/27

5 years agotestegl: properly detect and use rpi specific libs
Guillaume Desmottes [Fri, 18 May 2018 08:55:21 +0000 (10:55 +0200)]
testegl: properly detect and use rpi specific libs

Use pkg-config to detect and configure rpi specific libs used in testegl
rather than hardcoding their flags.

5 years agotestelg: include eglext.h
Guillaume Desmottes [Fri, 18 May 2018 08:53:34 +0000 (10:53 +0200)]
testelg: include eglext.h

Neded for the declaration of eglSaneChooseConfigBRCM().

5 years agotestegl: move up pi specific macros
Guillaume Desmottes [Fri, 18 May 2018 08:38:33 +0000 (10:38 +0200)]
testegl: move up pi specific macros

We need to define __VCCOREVER__ and disable redundant-decls before
including the egl.h from the pi.

5 years agoRelease 1.15.90
Tim-Philipp Müller [Wed, 10 Apr 2019 23:40:52 +0000 (00:40 +0100)]
Release 1.15.90

5 years agomeson: add -Wundef as additional warning flag
Tim-Philipp Müller [Tue, 9 Apr 2019 23:19:55 +0000 (00:19 +0100)]
meson: add -Wundef as additional warning flag

5 years agoomx: fix autotools build for generic target
Tim-Philipp Müller [Tue, 9 Apr 2019 23:16:27 +0000 (00:16 +0100)]
omx: fix autotools build for generic target

gstomxvideoenc.c:2874:7: error: "USE_OMX_TARGET_ZYNQ_USCALE_PLUS" is not defined, evaluates to 0 [-Werror=undef]
 #elif USE_OMX_TARGET_ZYNQ_USCALE_PLUS

Works on meson because it doesn't use -Wundef

5 years agoAdd Gitlab CI configuration
Jordan Petridis [Mon, 12 Nov 2018 10:51:28 +0000 (12:51 +0200)]
Add Gitlab CI configuration

This commit adds a .gitlab-ci.yml file, which uses a feature
to fetch the config from a centralized repository. The intent is
to have all the gstreamer modules use the same configuration.

The configuration is currently hosted at the gst-ci repository
under the gitlab/ci_template.yml path.

Part of https://gitlab.freedesktop.org/gstreamer/gstreamer-project/issues/29

5 years agoomx: disable OMX_API_TRACE code if gst debug is disabled
Guillaume Desmottes [Mon, 25 Mar 2019 15:30:11 +0000 (16:30 +0100)]
omx: disable OMX_API_TRACE code if gst debug is disabled

No need to create debug structs which won't be used as DEBUG macros are
no-op.

5 years agoomx: log Get/SetParameter/Config calls
Guillaume Desmottes [Thu, 11 Oct 2018 08:55:04 +0000 (10:55 +0200)]
omx: log Get/SetParameter/Config calls

Extend OMX_API_TRACE by logging component configuration calls.

5 years agoomxbufferpool: don't use CAT_PERFORMANCE if pool will copy
Guillaume Desmottes [Wed, 6 Feb 2019 13:57:05 +0000 (14:57 +0100)]
omxbufferpool: don't use CAT_PERFORMANCE if pool will copy

This was the single place where this category was used in gst-omx so
most users, including me, are generally not turning it and were missing this
important information from logs.

The copying code uses gst_video_frame_copy() which is already logging
with CAT_PERFORMANCE so we can still have this information when using
only this debug category.

5 years agoomxvideodec: add debug if proposed pool can't provide enough buffers
Guillaume Desmottes [Wed, 6 Feb 2019 13:50:44 +0000 (14:50 +0100)]
omxvideodec: add debug if proposed pool can't provide enough buffers

We were silently ignoring the pool which was pretty confusing when
debugging.

5 years agoomx: Add hardware classifiers to encoders/decoders
Charlie Turner [Tue, 26 Mar 2019 12:17:26 +0000 (12:17 +0000)]
omx: Add hardware classifiers to encoders/decoders

5 years agomeson: sync warnings flags with -good
Guillaume Desmottes [Mon, 25 Mar 2019 15:01:48 +0000 (16:01 +0100)]
meson: sync warnings flags with -good

Add more warnings flags and disabled unused variable warnings if gst
debug system is disabled.

Copied from gst-plugins-good/meson.build

5 years agoBack to development
Tim-Philipp Müller [Mon, 4 Mar 2019 09:16:40 +0000 (09:16 +0000)]
Back to development

5 years agoRelease 1.15.2
Tim-Philipp Müller [Tue, 26 Feb 2019 12:02:23 +0000 (12:02 +0000)]
Release 1.15.2

5 years agomeson: add options to disable examples, tests and tools and bump meson requirement
Tim-Philipp Müller [Thu, 14 Feb 2019 23:57:09 +0000 (23:57 +0000)]
meson: add options to disable examples, tests and tools and bump meson requirement

5 years agoomxvideo: use GST_VIDEO_CAPS_MAKE() for template caps
Guillaume Desmottes [Fri, 4 Jan 2019 09:11:38 +0000 (10:11 +0100)]
omxvideo: use GST_VIDEO_CAPS_MAKE() for template caps

Simplify the code and so we advertise the formats actually supported by
gst-omx.

5 years agoomxvideoenc: validate cpb-size and initial-delay
Guillaume Desmottes [Mon, 4 Jun 2018 10:20:03 +0000 (12:20 +0200)]
omxvideoenc: validate cpb-size and initial-delay

cpb-size cannot be smaller than initial-delay.

5 years agoomxvideodec: Remove duplicated QoS code
Nicolas Dufresne [Tue, 2 Oct 2018 14:47:06 +0000 (10:47 -0400)]
omxvideodec: Remove duplicated QoS code

The 'finish' function do the exact same check / drop, there is no
need to duplicate this here.

5 years agoomxvideodec: Remove dead code
Nicolas Dufresne [Thu, 20 Sep 2018 18:44:09 +0000 (14:44 -0400)]
omxvideodec: Remove dead code

The omxvideodec base class have a totally unused prepare_frame() vritual
function, remove it.

5 years agoomxvideoenc: add adaptive gop-mode option
Varunkumar Allagadapa [Thu, 12 Jul 2018 00:38:22 +0000 (17:38 -0700)]
omxvideoenc: add adaptive gop-mode option

Added adaptive gop-mode option to ZYNQ_USCALE_PLUS encoder properties

5 years agoomxvideoenc: Add dynamic framerate support
Nicolas Dufresne [Tue, 13 Feb 2018 18:25:51 +0000 (18:25 +0000)]
omxvideoenc: Add dynamic framerate support

Instead of going through a full reset, try and change the framerate
config on the encoder when only the framerate have change.

5 years agoRelease 1.15.1
Tim-Philipp Müller [Thu, 17 Jan 2019 02:38:28 +0000 (02:38 +0000)]
Release 1.15.1

5 years agoomxvideoenc: Add dynamic IDR insertion support on zynq
Varunkumar Allagadapa [Tue, 20 Feb 2018 18:57:42 +0000 (10:57 -0800)]
omxvideoenc: Add dynamic IDR insertion support on zynq

As the pi, the zynq has its own API to request keyframe.

5 years agoomxbufferpool: fix race when releasing input buffers
Guillaume Desmottes [Mon, 7 Jan 2019 12:29:37 +0000 (13:29 +0100)]
omxbufferpool: fix race when releasing input buffers

If buffers were released from the pool while
gst_omx_video_enc_handle_frame() was waiting for new buffers,
gst_omx_port_acquire_buffer() was never awaken as the buffers weren't
released through OMX's messaging system.

GQueue isn't thread safe so also protect it with the lock mutex.

5 years agoomxbufferpool: fix early input buffer release
Guillaume Desmottes [Thu, 15 Nov 2018 10:17:59 +0000 (11:17 +0100)]
omxbufferpool: fix early input buffer release

We used to track the 'allocating' status on the pool. It is used while
allocating so output buffers aren't passed right away to OMX and input
ones are not re-added to the pending queue.

This was causing a bug when exporting buffers to v4l2src. On start
v4l2src acquires a buffer, read its stride and release it right away.
As no buffer was received by the encoder element at this point, 'allocating'
was still on TRUE and so the the buffer wasn't put back to the pending
queue and, as result, no longer available to the pool.

Fix this by checking the active status of the pool instead of manually
tracking it down. The pool is considered as active at the very end of
the activation process so we're good when buffers are released during
the activation.

5 years agoAutomatic update of common submodule
Thibault Saunier [Wed, 5 Dec 2018 20:24:48 +0000 (17:24 -0300)]
Automatic update of common submodule

From ed78bee to 59cb678

5 years agoomx: fix OMX_EventBufferFlag OMX_API_TRACE struct
Guillaume Desmottes [Fri, 23 Nov 2018 11:57:15 +0000 (12:57 +0100)]
omx: fix OMX_EventBufferFlag OMX_API_TRACE struct

The GType was missing from the second field of the struct.

6 years agoUpdate git locations to gitlab
Matthew Waters [Mon, 5 Nov 2018 05:43:43 +0000 (05:43 +0000)]
Update git locations to gitlab

6 years agoomx: rename OMX_PERFORMANCE debug cat to OMX_API_TRACE
Guillaume Desmottes [Tue, 18 Sep 2018 14:50:11 +0000 (16:50 +0200)]
omx: rename OMX_PERFORMANCE debug cat to OMX_API_TRACE

This debug category can now be used to track more OMX calls and events
so best to rename it to something more generic.

https://bugzilla.gnome.org/show_bug.cgi?id=797171

6 years agoomx: log OMX commands with OMX_PERFORMANCE debug category
Guillaume Desmottes [Tue, 21 Aug 2018 15:35:04 +0000 (17:35 +0200)]
omx: log OMX commands with OMX_PERFORMANCE debug category

It has been useful to have a clear raw and structured view of the gst
<-> OMX exchanges when debugging.

https://bugzilla.gnome.org/show_bug.cgi?id=797171

6 years agoomx: factor out gst_omx_component_send_command()
Guillaume Desmottes [Tue, 21 Aug 2018 14:50:38 +0000 (16:50 +0200)]
omx: factor out gst_omx_component_send_command()

No semantic change. I'm going to add extra debug in this function.

https://bugzilla.gnome.org/show_bug.cgi?id=797171

6 years agoomx: log OMX events with OMX_PERFORMANCE debug category
Guillaume Desmottes [Tue, 21 Aug 2018 13:14:09 +0000 (15:14 +0200)]
omx: log OMX events with OMX_PERFORMANCE debug category

It has been useful to have a clear raw and structured view of the gst
<-> OMX exchanges when debugging.

https://bugzilla.gnome.org/show_bug.cgi?id=797171

6 years agoomx: rename log_omx_performance() to log_omx_performance_buffer()
Guillaume Desmottes [Wed, 22 Aug 2018 10:51:30 +0000 (12:51 +0200)]
omx: rename log_omx_performance() to log_omx_performance_buffer()

I'm about to log more things under this category

https://bugzilla.gnome.org/show_bug.cgi?id=797171

6 years agoomxvideoenc: Remove spurious locking
Nicolas Dufresne [Sat, 8 Sep 2018 02:57:30 +0000 (22:57 -0400)]
omxvideoenc: Remove spurious locking

The method we call in the context of pushing a buffer are all thread
safe. Holding a lock would prevent input buffers from being queued while
pushing.

https://bugzilla.gnome.org/show_bug.cgi?id=715192

6 years agoomxvideoenc: Remove unneeded size check
Nicolas Dufresne [Sat, 8 Sep 2018 03:09:29 +0000 (23:09 -0400)]
omxvideoenc: Remove unneeded size check

We only enter this branch if nFilledLen > 0, there is not need
to check again.

https://bugzilla.gnome.org/show_bug.cgi?id=715192

6 years agoomxvideodec: Remove spurious unlock in error case
Nicolas Dufresne [Sat, 8 Sep 2018 02:55:41 +0000 (22:55 -0400)]
omxvideodec: Remove spurious unlock in error case

This was forgotton in previous patch. We no long hold the lock when goto
invalid_buffer is called.

https://bugzilla.gnome.org/show_bug.cgi?id=715192

6 years agoomxvideodec: don't hold the stream lock when trying to push a frame
Nicolas Dufresne [Fri, 31 Aug 2018 21:28:03 +0000 (17:28 -0400)]
omxvideodec: don't hold the stream lock when trying to push a frame

The base class methods will lock this properly when needed, there seems
to be no need to lock it explicitly.

This allows the patch in gstvideodec for unlocking the stream lock
when pushing buffers out to work.

https://bugzilla.gnome.org/show_bug.cgi?id=715192

6 years agoomxvideodec: don't import OMX buffers from downstream
Guillaume Desmottes [Tue, 31 Jul 2018 11:22:31 +0000 (13:22 +0200)]
omxvideodec: don't import OMX buffers from downstream

We already have code configuring the encoder stride and slice height
when receiving the first buffer from upstream.
We don't have an equivalent when the encoder is exporting its buffers to the
decoder.

There is no point adding it and making the code even more
complex as we wouldn't gain anything by exporting from the encoder to
the decoder. The dynamic buffer mode already ensures 0-copy between OMX
components.

https://bugzilla.gnome.org/show_bug.cgi?id=796918

6 years agoomxvideoenc: implement dmabuf export on input buffers
Guillaume Desmottes [Tue, 15 May 2018 09:59:26 +0000 (11:59 +0200)]
omxvideoenc: implement dmabuf export on input buffers

Propose pool upstream so input buffers can be allocated by the port and
exported as dmabuf.

The actual OMX buffers are allocated when the pool is activated, so we
don't end up doing useless allocations if the pool isn't used.

https://bugzilla.gnome.org/show_bug.cgi?id=796918

6 years agoomx: allow gst_omx_port_acquire_buffer() to not wait for buffers
Guillaume Desmottes [Mon, 13 Aug 2018 13:10:37 +0000 (15:10 +0200)]
omx: allow gst_omx_port_acquire_buffer() to not wait for buffers

Will be needed to implement GST_BUFFER_POOL_ACQUIRE_FLAG_DONTWAIT.

https://bugzilla.gnome.org/show_bug.cgi?id=796918

6 years agoomxvideodec: don't import non-dmabuf when dec is in dmabuf mode
Guillaume Desmottes [Tue, 31 Jul 2018 13:04:33 +0000 (15:04 +0200)]
omxvideodec: don't import non-dmabuf when dec is in dmabuf mode

Fix 'omxh264dec ! videocrop' pipeline.

https://bugzilla.gnome.org/show_bug.cgi?id=796918

6 years agoomxvideodec: factor out gst_omx_try_importing_buffer()
Guillaume Desmottes [Thu, 2 Aug 2018 09:29:12 +0000 (11:29 +0200)]
omxvideodec: factor out gst_omx_try_importing_buffer()

No semantic change, just make the code clearer and improve debug output.

https://bugzilla.gnome.org/show_bug.cgi?id=796918

6 years agoomxvideodec: fix gst_video_info_from_caps() caps assertion
Guillaume Desmottes [Thu, 26 Jul 2018 14:30:08 +0000 (16:30 +0200)]
omxvideodec: fix gst_video_info_from_caps() caps assertion

The "use buffers" code path uses gst_video_info_from_caps() which is
asserting if caps is NULL (because pool was rejected).

https://bugzilla.gnome.org/show_bug.cgi?id=796918