platform/upstream/gst-omx.git
7 years agoomxvideoenc/dec: declare latency on zynqultrascaleplus
Guillaume Desmottes [Thu, 6 Jul 2017 12:19:19 +0000 (14:19 +0200)]
omxvideoenc/dec: declare latency on zynqultrascaleplus

The OMX specification doesn't provide any API to expose the latency
introduced by encoders and decoders. We implemented this as a custom
extension as declaring the latency is needed for live pipelines like
video conferencing.

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

7 years agoomxvideoenc: adjust stride and slice height from input
Guillaume Desmottes [Mon, 7 Aug 2017 17:16:01 +0000 (13:16 -0400)]
omxvideoenc: adjust stride and slice height from input

Use the stride and slice height information from the first buffer meta
data to adjust the settings of the input port.
This will ensure that the OMX input buffers match the GStreamer ones
and so will save us from having to copy line-by-line each one.

This is also the first step to allow the OMX encoder to receive dmabuf.

Tested on rpi and zynqultrascaleplus.

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

7 years agoomxvideoenc: delay buffer configuration until component is enabled
Guillaume Desmottes [Mon, 7 Aug 2017 15:45:29 +0000 (11:45 -0400)]
omxvideoenc: delay buffer configuration until component is enabled

No significant change for now. Just delay the input port configuration
of the buffer size related fields (stride, slice height, buffer size)
until the component is activated.
This will allow us to use the actual stride/height of the first input
and so avoid the buffer copying code path in most cases.

Tested on rpi and zynqultrascaleplus.

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

7 years agoomxvideodec/enc: delay allocation after the allocation query
Guillaume Desmottes [Mon, 24 Jul 2017 11:52:35 +0000 (13:52 +0200)]
omxvideodec/enc: delay allocation after the allocation query

Allocating OMX components buffers in set_format() is too early.
Doing it when receiving the first buffers will allow the element to use
the information from the allocation query and/or the first incoming
buffer to pick to best allocation mode.

Tested on raspberry pi with dynamic resolution changes on decoder and
encoder input.

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

7 years agoomxvideoenc: start src thread in handle_frame()
Guillaume Desmottes [Tue, 25 Jul 2017 12:27:45 +0000 (14:27 +0200)]
omxvideoenc: start src thread in handle_frame()

Makes the code simpler as we no longer need to restart the thread in
gst_omx_video_enc_flush() and It's more symetric which the omxvideodec
implementation.

I'm also going to move the enabling of the OMX component in
handle_frame() and the src pad thread needs to be started after it.

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

7 years agoomxvideodec: earlier return if downstream_flow_ret is not OK
Guillaume Desmottes [Tue, 25 Jul 2017 12:07:30 +0000 (14:07 +0200)]
omxvideodec: earlier return if downstream_flow_ret is not OK

There is no point to (re)start the src thread if, for example, we are
flushing.

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

7 years agoomxvideodec: factor out enable and disable code
Guillaume Desmottes [Mon, 24 Jul 2017 10:31:37 +0000 (12:31 +0200)]
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

7 years agoomxvideoenc: factor out enable and disable code
Guillaume Desmottes [Mon, 24 Jul 2017 10:31:37 +0000 (12:31 +0200)]
omxvideoenc: 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

7 years agoomx: also reset nFilledLen before calling OMX_FillThisBuffer()
Guillaume Desmottes [Thu, 27 Jul 2017 10:12:01 +0000 (12:12 +0200)]
omx: also reset nFilledLen before calling OMX_FillThisBuffer()

The spec states that the buffer passed to OMX_FillThisBuffer() needs to be
empty. Some implementation may check it actually is by checking its
nFilledLen field, so best to reset it as well.

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

7 years agoomxvideodec: make generic the OMX_UseEGLImage code path
Julien Isorce [Mon, 17 Jul 2017 20:06:47 +0000 (21:06 +0100)]
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

7 years agoomxvideodec: Fix segment seek
Nicolas Dufresne [Fri, 21 Jul 2017 15:52:00 +0000 (11:52 -0400)]
omxvideodec: Fix segment seek

On segment seek, unlike EOS, we drain, but we cannot expect a flush
later to reset the decoder state. As a side effect, the decoder would
remain in EOS state and ignore any new incoming buffers.

To fix this, we call _flush() inside the _drain() function, and
_finish() becomes what _drain() was before. This way, for _finish() (the
    eos case) we only drain, for _drain() triggered by segment seek or new
caps, we also reset the decoder state so it's ready to accept buffers.

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

7 years agoomxvideoenc: ensure enough buffers are allocated in the pool
Guillaume Desmottes [Mon, 10 Jul 2017 13:00:58 +0000 (15:00 +0200)]
omxvideoenc: ensure enough buffers are allocated in the pool

Handle allocation query and ensure enough buffers are allocated in
the negotiated pool. This help preventing buffer starvation in the pipeline.

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

7 years agoomxvideodec: add dmabuf support for output
Guillaume Desmottes [Tue, 4 Jul 2017 10:16:39 +0000 (12:16 +0200)]
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

7 years agoconfig: add OMX.Aratelia.video_decoder.vp8 to Tizonia config
Julien Isorce [Mon, 19 Jun 2017 23:13:33 +0000 (00:13 +0100)]
config: add OMX.Aratelia.video_decoder.vp8 to Tizonia config

Useful mostly for testing/debugging purpose as this is a software
based encoder (libvpxdec) for which GStreamer provides a direct
wrapper.

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

7 years agoomxvideodec: handle IL 1.2 behavior for OMX_SetParameter
Julien Isorce [Mon, 19 Jun 2017 22:56:02 +0000 (23:56 +0100)]
omxvideodec: handle IL 1.2 behavior for OMX_SetParameter

It triggers SettingsChanged on the other port and it is up to
the client to decide if it should lead to a port reconfiguration.

Settings are propagated to the other port for fields they have
in common. But this event is only triggered on the other port
if it actually change a setting.

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

7 years agoconfig: set rank to 0 for Tizonia's mp3 decoder
Julien Isorce [Tue, 18 Jul 2017 22:41:17 +0000 (23:41 +0100)]
config: set rank to 0 for Tizonia's mp3 decoder

Should have been 0 from the initial commit
eed49b4231a063639f90279c8044404c2149902a

7 years agoomxvideodec: fix file permissions
Julien Isorce [Mon, 17 Jul 2017 20:03:55 +0000 (21:03 +0100)]
omxvideodec: fix file permissions

Introduced by ebc9b4903cbdac2793c24b05a1bb7acc3b67fae5

7 years agoomxvideodec: fix buffer leak when eglimage setup fails
Julien Isorce [Thu, 29 Jun 2017 22:17:26 +0000 (23:17 +0100)]
omxvideodec: fix buffer leak when eglimage setup fails

Can happen if gst_buffer_pool_acquire_buffer succeeds but
gst_buffer_n_memory (buffer) is not exactly 1.

In theory this should not happen because the decoder requests
EGLImage(RGBA) but better to fix any leak on corner cases.

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

7 years agoomx: Possible Memory leak in gst_caps_from_string
Satya Prakash Gupta [Mon, 17 Jul 2017 13:06:36 +0000 (18:36 +0530)]
omx: Possible Memory leak in gst_caps_from_string

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

7 years agoomxvideoenc: Fix deadlock in error case when draining
Satya Prakash Gupta [Mon, 17 Jul 2017 10:18:44 +0000 (15:48 +0530)]
omxvideoenc: Fix deadlock in error case when draining

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

7 years agoomxaudioenc: Fix deadlock in error case when draining
Satya Prakash Gupta [Mon, 17 Jul 2017 08:14:54 +0000 (13:44 +0530)]
omxaudioenc: Fix deadlock in error case when draining

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

7 years agobuild: include OMX_IndexExt and OMX_ComponentExt if present
Guillaume Desmottes [Fri, 2 Jun 2017 10:36:30 +0000 (12:36 +0200)]
build: include OMX_IndexExt and OMX_ComponentExt if present

These files may be used by OMX implementation to define custom extensions.
Include them if present as we are already doing with OMX_VideoExt.h

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

7 years agoomxh264enc: Re-add periodicty-idr property for backward compat
Jan Schmidt [Thu, 13 Jul 2017 06:40:26 +0000 (16:40 +1000)]
omxh264enc: Re-add periodicty-idr property for backward compat

Retain backwards compatibility by adding a duplicate
property for periodicty-idr

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

7 years agoomxh264enc: fix typo in "periodicty-idr" property name
Guillaume Desmottes [Fri, 30 Jun 2017 13:15:06 +0000 (15:15 +0200)]
omxh264enc: fix typo in "periodicty-idr" property name

Also fix the 'nick' of the property.

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

7 years agoomxvideodec: use OMX_UseBuffer
Julien Isorce [Thu, 29 Jun 2017 21:48:47 +0000 (22:48 +0100)]
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

7 years agoomx: do not always print an error if OMX_{UseBuffer,EGLImage} fails
Julien Isorce [Wed, 12 Jul 2017 09:29:16 +0000 (10:29 +0100)]
omx: do not always print an error if OMX_{UseBuffer,EGLImage} fails

Let the caller decide to print an error. Because it can be part of
a normal trial path.

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

7 years agomeson: add gstomxmp3enc
Guillaume Desmottes [Wed, 12 Jul 2017 14:00:53 +0000 (16:00 +0200)]
meson: add gstomxmp3enc

Commit 02d493e85921596f7cac7ef4af02fde500e9a5d8 didn't add
gstomxmp3enc.c to meson.

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

7 years agoconfig: add OMX.Aratelia.audio_encoder.mp3 to Tizonia config
Julien Isorce [Tue, 23 May 2017 09:32:58 +0000 (10:32 +0100)]
config: add OMX.Aratelia.audio_encoder.mp3 to Tizonia config

Useful mostly for testing/debugging purpose as this is a software
based encoder (libmp3lame) for which GStreamer provides a direct
wrapper.

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

7 years agoomx: add gstomxmp3enc
Julien Isorce [Tue, 23 May 2017 09:32:06 +0000 (10:32 +0100)]
omx: add gstomxmp3enc

Initial support and only tested with the software based
encoder OMX.Aratelia.audio_encoder.mp3 from Tizonia which
internally uses libmp3lame.

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

7 years agoh264dec: add hack to pass profile and level to OMX
Guillaume Desmottes [Tue, 28 Mar 2017 14:27:10 +0000 (16:27 +0200)]
h264dec: add hack to pass profile and level to OMX

This information can be useful to zynqultrascaleplus decoders. They may
use this information to reduce startup latency by configuring itself
before receiving the first frames.

We also have a custom OMX extension allowing the decoder to report the
latency. The profile/level information helps it reporting a more
accurate latency earlier.

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

7 years agoomxh264enc: move profile and level parsing functions to their own files
Guillaume Desmottes [Mon, 3 Jul 2017 11:17:11 +0000 (13:17 +0200)]
omxh264enc: move profile and level parsing functions to their own files

Will allow to re-use them in the decoder element.

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

7 years agomeson: Add tizonia option
Gurkirpal Singh [Mon, 3 Jul 2017 21:45:00 +0000 (03:15 +0530)]
meson: Add tizonia option

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

7 years agoconfig: add omxmp3dec config for tizonia
Gurkirpal Singh [Fri, 28 Apr 2017 21:26:59 +0000 (02:56 +0530)]
config: add omxmp3dec config for tizonia

GST_OMX_CONFIG_DIR=$HOME/gst/master/gst-omx/config/tizonia/ \
    gst-launch-1.0 filesrc location=mpthreetest.mp3 ! id3demux ! \
    mpegaudioparse ! omxmp3dec ! audioconvert ! pulsesink

v2: [Nicolas] Use template to create gstomx.conf using pkg-config

v3: [Nicolas] Ignore only config/tizonia/gstomx.conf

v4: [Nicolas] Add "/" for single occurence

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

7 years agoomx: always ignore OMX_ErrorPortUnpopulated
Gurkirpal Singh [Sun, 7 May 2017 14:39:54 +0000 (20:09 +0530)]
omx: always ignore OMX_ErrorPortUnpopulated

It is safe to ignore it always. Tizonia notifies this error to pass
some khronos conformance tests. Problem is that gst-omx saves this
error in comp->last_error and then gst_omx_port_set_enabled early
error out which fails the pipeline.

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

7 years agoomx: guard some omx enums with IL version
Gurkirpal Singh [Fri, 28 Apr 2017 21:23:26 +0000 (02:53 +0530)]
omx: guard some omx enums with IL version

Some enums that existed in 1.1.2 just do not exit in 1.2.0
See https://www.khronos.org/registry/OpenMAX-IL/specs/OpenMAX_IL_1_2_0_Specification_redline.pdf

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

7 years agoconfigure.ac: add tizonia target for --with-omx-target flag.
Gurkirpal Singh [Fri, 28 Apr 2017 20:26:01 +0000 (01:56 +0530)]
configure.ac: add tizonia target for --with-omx-target flag.

This will check for tizilheaders.pc which adds path to omx-il
headers its cflags. Can be installed all together with the 1.2 headers
with package tizilheaders if not building from sources:
https://github.com/tizonia/tizonia-openmax-il

It is also adviced to remove libomxil-bellagio-dev package because
it installs headers /usr/include directly, ex: /usr/include/OMX_Video.h.

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

7 years agoomxaudioenc: update local port_def after reopening the component
Julien Isorce [Wed, 5 Jul 2017 09:47:41 +0000 (10:47 +0100)]
omxaudioenc: update local port_def after reopening the component

gst_omx_audio_enc_open will only update GstOMXAudioEnc->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

7 years agoomxvideoenc: update local port_def after reopening the component
Julien Isorce [Wed, 5 Jul 2017 09:48:52 +0000 (10:48 +0100)]
omxvideoenc: update local port_def after reopening the component

gst_omx_video_enc_open will only update GstOMXVideoEnc->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

7 years agoomxvideodec: update local port_def after reopening the component
Sejun Park [Wed, 10 May 2017 03:38:39 +0000 (12:38 +0900)]
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

7 years agoomxvideodec: increase the minimum number of allocated buffers
Guillaume Desmottes [Mon, 3 Jul 2017 14:33:06 +0000 (16:33 +0200)]
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

7 years agoomxh264enc: raise a warning if AVCIntraPeriod is not supported
Guillaume Desmottes [Mon, 3 Jul 2017 08:54:50 +0000 (10:54 +0200)]
omxh264enc: raise a warning if AVCIntraPeriod is not supported

Some platforms may not implement OMX_IndexConfigVideoAVCIntraPeriod and
use OMX_IndexParamVideoAvc instead to configure the GOP pattern.
So raise a warning instead of an error if this API is not implemented.

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

7 years agoomxh264enc: add 'b-frames' property
Guillaume Desmottes [Thu, 29 Jun 2017 12:16:19 +0000 (14:16 +0200)]
omxh264enc: add 'b-frames' property

Add a property to control the number of B-frames produced by the
encoder using the OMX_VIDEO_PARAM_AVCTYPE OMX API.

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

7 years agoomxh264enc: fix typo in 'set_avc_intra_period'
Guillaume Desmottes [Fri, 30 Jun 2017 12:18:35 +0000 (14:18 +0200)]
omxh264enc: fix typo in 'set_avc_intra_period'

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

7 years agoadd 'zynqultrascaleplus' as OMX target
Guillaume Desmottes [Mon, 22 May 2017 09:23:33 +0000 (11:23 +0200)]
add 'zynqultrascaleplus' as OMX target

Adding support for the 'Zynq UltraScale+' as a new OMX target.

See https://www.xilinx.com/products/silicon-devices/soc/zynq-ultrascale-mpsoc.html
for details about the platform.

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

7 years agoconfig: add OMX.mesa.video_decoder.{avc,mpeg2} for Bellagio config
Julien Isorce [Sun, 21 May 2017 14:23:09 +0000 (15:23 +0100)]
config: add OMX.mesa.video_decoder.{avc,mpeg2} for Bellagio config

Install libomxil-bellagio0 and make sure mesa has been built with
--enable-omx. Check there is /usr/lib/libomxil-bellagio0/libomx_mesa.so
then run omxregister-bellagio to regenerate $XDG_DATA_HOME/.omxregister

Then omxh264dec and omxmpeg2dec should load.

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

7 years agoconfigure.ac: move omx features check after target selection
Julien Isorce [Thu, 18 May 2017 12:50:56 +0000 (13:50 +0100)]
configure.ac: move omx features check after target selection

Does not change anything, except this will be useful for future commits.
Indeed some targets provide a .pc file where to look for the omx headers.

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

7 years agoomxh264dec: remove 'parsed=true' from sink pad
Guillaume Desmottes [Thu, 29 Jun 2017 14:48:07 +0000 (16:48 +0200)]
omxh264dec: remove 'parsed=true' from sink pad

The decoder only requires to receive one frame per buffer which is
already enforced with 'alignment=au'. There is no need to require to
have a parser upstream.

Allow to run "encode ! decode" pipeline without having a parser.

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

7 years agoomxh264enc: set profile/level using OMX_VIDEO_PARAM_AVCTYPE as well
Guillaume Desmottes [Fri, 16 Jun 2017 11:28:33 +0000 (13:28 +0200)]
omxh264enc: set profile/level using OMX_VIDEO_PARAM_AVCTYPE as well

The OMX specification defines two API to set the AVC profile and level:
using OMX_VIDEO_PARAM_PROFILELEVELTYPE and OMX_VIDEO_PARAM_AVCTYPE.

We were already supporting the former but not the latter. We are now
setting both so implementation don't have to rely on a specific one.

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

7 years agoomxh264enc: factor out update_param_profile_level()
Guillaume Desmottes [Fri, 16 Jun 2017 11:19:33 +0000 (13:19 +0200)]
omxh264enc: factor out update_param_profile_level()

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

7 years agoomxh264enc: factor out string to profile/level enum conversion
Guillaume Desmottes [Fri, 16 Jun 2017 10:53:15 +0000 (12:53 +0200)]
omxh264enc: factor out string to profile/level enum conversion

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

7 years agoomxh264enc: use OMX_IndexConfigBrcmVideoIntraPeriod on pi
Guillaume Desmottes [Wed, 28 Jun 2017 13:06:10 +0000 (15:06 +0200)]
omxh264enc: use OMX_IndexConfigBrcmVideoIntraPeriod on pi

The OMX_VIDEO_CONFIG_AVCINTRAPERIOD.nPFrames setting isn't of any use on
the raspbery pi. Instead it uses a custom extension to define the I
frame period.

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

7 years agoomxh264enc: factor out set_avc_intra_perdiod()
Guillaume Desmottes [Wed, 28 Jun 2017 13:03:52 +0000 (15:03 +0200)]
omxh264enc: factor out set_avc_intra_perdiod()

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

7 years agomeson: define HAVE_VIDEO_EXT if OMX_VideoExt.h is present
Guillaume Desmottes [Fri, 2 Jun 2017 10:48:57 +0000 (12:48 +0200)]
meson: define HAVE_VIDEO_EXT if OMX_VideoExt.h is present

Meson build wasn't defining the HAVE_VIDEO_EXT like configure.ac does.

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

7 years agoomxvideoenc: Improve debug output when setting codec state due to new codec_data...
Graham Leggett [Sun, 11 Jun 2017 12:32:01 +0000 (12:32 +0000)]
omxvideoenc: Improve debug output when setting codec state due to new codec_data fails

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

7 years agoomx: allow 0 feature
Julien Isorce [Sat, 20 May 2017 13:49:20 +0000 (14:49 +0100)]
omx: allow 0 feature

Previously the omx plugin was blacklisted if GST_OMX_CONFIG_DIR
points to an invalid path or if the gstomx.conf contains 0 valid
component.
Problem is that once the plugin is blacklisted, a rescan is not
triggered upon changes of the env var or the gstomx.conf file
despite being setup with gst_plugin_add_dependency.

This also makes it more consistent with other plugins that auto
generate features. For example gst-{ffmeg,libav}, gstreamer-vaapi,
v4l2 video dec.

To clarify the diff, the plugin_init func will return TRUE even if
g_key_file_get_groups returns 0 element and even if
g_key_file_load_from_dirs fails.

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

7 years agoconfig: add OMX.st.audio_decoder.mp3.mad for Bellagio config
Gurkirpal Singh [Wed, 26 Apr 2017 17:22:17 +0000 (22:52 +0530)]
config: add OMX.st.audio_decoder.mp3.mad for Bellagio config

MP3 Software decoder (libmad based) but useful for testing
and to compare with other targets.

GST_OMX_CONFIG_DIR=$HOME/gst/master/gst-omx/config/bellagio/ \
    gst-launch-1.0 filesrc location=mpthreetest.mp3 ! id3demux ! \
    mpegaudioparse ! omxmp3dec ! audioconvert ! pulsesink

Didn't add 'local' in core-name path compared to other components
in that same gstomx.conf file because OMX.st.audio_decoder.mp3.mad
comes with the Ubuntu package 'libomxil-bellagio0-components-mad'.
All other components listed in this gstomx.conf for Bellagio, are
not provided by any Ubuntu packages. It could explain the 'local',
i.e. requiring to build them from source.

dpkg -L libomxil-bellagio0
    /usr/lib/libomxil-bellagio.so.0

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

Signed-off-by: Gurkirpal Singh <gurkirpal204@gmail.com>
Signed-off-by: Julien Isorce <jisorce@oblong.com>
7 years agoRemove plugin specific static build option
Nicolas Dufresne [Tue, 16 May 2017 18:39:04 +0000 (14:39 -0400)]
Remove plugin specific static build option

Static and dynamic plugins now have the same interface. The standard
--enable-static/--enable-shared toggle are sufficient.

7 years agoomxvideodec: Removed unreachable code
Sejun Park [Wed, 10 May 2017 03:10:10 +0000 (12:10 +0900)]
omxvideodec: Removed unreachable code

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

7 years agomeson: add dep on GModule
Guillaume Desmottes [Tue, 9 May 2017 14:26:44 +0000 (16:26 +0200)]
meson: add dep on GModule

libgstomx uses the GModule API and so needs it in its dependencies list.

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

7 years agomeson: fix config.h generation
Tim-Philipp Müller [Tue, 9 May 2017 13:27:28 +0000 (13:27 +0000)]
meson: fix config.h generation

"No such input file config.h.meson", but it's not needed anyway.

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

7 years agoBack to development
Sebastian Dröge [Thu, 4 May 2017 15:59:33 +0000 (18:59 +0300)]
Back to development

7 years agoRelease 1.12.0
Sebastian Dröge [Thu, 4 May 2017 12:48:56 +0000 (15:48 +0300)]
Release 1.12.0

7 years agoRelease 1.11.91
Sebastian Dröge [Thu, 27 Apr 2017 14:53:50 +0000 (17:53 +0300)]
Release 1.11.91

7 years agovideoenc: use GST_ROUND_UP_N() macro
Guillaume Desmottes [Mon, 17 Apr 2017 15:02:48 +0000 (17:02 +0200)]
videoenc: use GST_ROUND_UP_N() macro

Makes the code much easier to read and understand.

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

7 years agoAutomatic update of common submodule
Tim-Philipp Müller [Mon, 24 Apr 2017 19:30:21 +0000 (20:30 +0100)]
Automatic update of common submodule

From 60aeef6 to 48a5d85

7 years agoAutomatic update of common submodule
Tim-Philipp Müller [Mon, 10 Apr 2017 22:51:00 +0000 (23:51 +0100)]
Automatic update of common submodule

From 39ac2f5 to 60aeef6

7 years agoRelease 1.11.90
Sebastian Dröge [Fri, 7 Apr 2017 13:36:45 +0000 (16:36 +0300)]
Release 1.11.90

7 years agoomxvideoenc: Fix compiler warning
Sebastian Dröge [Fri, 7 Apr 2017 11:27:23 +0000 (14:27 +0300)]
omxvideoenc: Fix compiler warning

gstomxvideoenc.c: In function ‘gst_omx_video_enc_fill_buffer’:
  CC       libgstomx_la-gstomxaacdec.lo
gstomxvideoenc.c:1316:27: warning: format ‘%u’ expects argument of type ‘unsigned int’, but argument 8 has type ‘OMX_U32 {aka long unsigned int}’ [-Wformat=]
     GST_LOG_OBJECT (self, "Matched strides - direct copy %u bytes",
                           ^
         outbuf->omx_buf->nFilledLen);
         ~~~~~~~~~~~~~~~~~~

7 years agomeson: fix logic to set HAVE_THEORA
Gurkirpal Singh [Wed, 22 Mar 2017 11:48:09 +0000 (17:18 +0530)]
meson: fix logic to set HAVE_THEORA

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

7 years agoomxvideoenc: Add an unimplemented mapping for RGBA formats
Jan Schmidt [Mon, 13 Mar 2017 16:02:06 +0000 (03:02 +1100)]
omxvideoenc: Add an unimplemented mapping for RGBA formats

Add some pixel formats mappings for 2 RGBA formats. Not yet
implemented in the buffer input code though, so no effect for now.

7 years agoomxvideoenc: Add GST_OMX_HACK_HEIGHT_MULTIPLE_16 for Rpi
Jan Schmidt [Mon, 13 Mar 2017 16:00:49 +0000 (03:00 +1100)]
omxvideoenc: Add GST_OMX_HACK_HEIGHT_MULTIPLE_16 for Rpi

The Raspberry Pi encoder produces corrupt output unless
the input height is a multiple of 16. Add a hack that adds
zero padding when needed.

7 years agoomxvideoenc: Add a mapping for OMX_COLOR_FormatYUV420PackedSemiPlanar
Jan Schmidt [Mon, 13 Mar 2017 15:42:15 +0000 (02:42 +1100)]
omxvideoenc: Add a mapping for OMX_COLOR_FormatYUV420PackedSemiPlanar

The RaspberryPi

7 years agoomxvideoenc: Filter out unimplemented formats
Jan Schmidt [Mon, 13 Mar 2017 15:40:24 +0000 (02:40 +1100)]
omxvideoenc: Filter out unimplemented formats

Don't announce pixel formats in the caps if they've not been
implemented.

7 years agoomxvideodec: demote ERROR message
Jan Schmidt [Mon, 13 Mar 2017 15:34:36 +0000 (02:34 +1100)]
omxvideodec: demote ERROR message

There's no need to warn about failing to negotiate EGL output
 - that can be perfectly normal.

7 years agomeson: Update version
Sebastian Dröge [Fri, 24 Feb 2017 14:00:29 +0000 (16:00 +0200)]
meson: Update version

7 years agoBack to development
Sebastian Dröge [Fri, 24 Feb 2017 13:38:17 +0000 (15:38 +0200)]
Back to development

7 years agoRelease 1.11.2
Sebastian Dröge [Fri, 24 Feb 2017 13:10:17 +0000 (15:10 +0200)]
Release 1.11.2

7 years agomeson: dist meson build files
Tim-Philipp Müller [Wed, 15 Feb 2017 18:22:53 +0000 (18:22 +0000)]
meson: dist meson build files

Ship meson build files in tarballs, so people who use tarballs
in their builds can start playing with meson already.

7 years agoomxaacenc: let encoder know about incoming rate/channels
Vincent Penquerc'h [Fri, 13 Jan 2017 16:23:12 +0000 (16:23 +0000)]
omxaacenc: let encoder know about incoming rate/channels

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

7 years agobuild: add meson build definition
Matthew Waters [Tue, 17 Jan 2017 15:43:44 +0000 (02:43 +1100)]
build: add meson build definition

Currently only been tested on the RPi within gst-build.

7 years agoexamples/testegl: update for libgstgl changes
Matthew Waters [Wed, 18 Jan 2017 04:21:35 +0000 (15:21 +1100)]
examples/testegl: update for libgstgl changes

7 years agoBack to development
Sebastian Dröge [Thu, 12 Jan 2017 14:33:09 +0000 (16:33 +0200)]
Back to development

7 years agoRelease 1.11.1
Sebastian Dröge [Thu, 12 Jan 2017 14:26:55 +0000 (16:26 +0200)]
Release 1.11.1

7 years agoomxaudioenc: set base class format instead of just source pad caps
Vincent Penquerc'h [Tue, 10 Jan 2017 15:29:08 +0000 (15:29 +0000)]
omxaudioenc: set base class format instead of just source pad caps

7 years agoomx*dec: Flush before we stop the srcpad loop
Graham Leggett [Sun, 18 Dec 2016 19:46:55 +0000 (19:46 +0000)]
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

7 years agoFix broken build due to syntax error
Reynaldo H. Verdejo Pinochet [Wed, 14 Dec 2016 21:29:08 +0000 (13:29 -0800)]
Fix broken build due to syntax error

Problem was introduced by 8716c23e2b0553db2982eb84c437f493c974385e

7 years agoPrevent early EOS by resetting eos flag once GST_OMX_ACQUIRE_BUFFER_EOS is triggered
Graham Leggett [Mon, 12 Dec 2016 11:12:48 +0000 (11:12 +0000)]
Prevent early EOS by resetting eos flag once GST_OMX_ACQUIRE_BUFFER_EOS is triggered

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

7 years agoAdd clear debug logging on all the paths out of gst_omx_port_acquire_buffer()
Graham Leggett [Mon, 12 Dec 2016 11:09:15 +0000 (11:09 +0000)]
Add clear debug logging on all the paths out of gst_omx_port_acquire_buffer()

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

7 years agoAdd a signals-premature-eos hack for egl_render
George Kiagiadakis [Thu, 1 Dec 2016 17:23:50 +0000 (18:23 +0100)]
Add a signals-premature-eos hack for egl_render

egl_render seems to have a bug and signals EOS before it has finished
pushing out all data; this hack simply makes acquire_buffer() wait
a bit more before signalling EOS, in case egl_render decides to spit
out some more data.

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

7 years agoAdd support for OMX_COLOR_FormatYUV420PackedSemiPlanar and OMX_COLOR_Format24bitBGR888
Graham Leggett [Sun, 11 Dec 2016 19:52:37 +0000 (19:52 +0000)]
Add support for OMX_COLOR_FormatYUV420PackedSemiPlanar and OMX_COLOR_Format24bitBGR888

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

7 years agoAutomatic update of common submodule
Edward Hervey [Sat, 3 Dec 2016 07:20:46 +0000 (08:20 +0100)]
Automatic update of common submodule

From ac2f647 to 39ac2f5

7 years agocommon: use https protocol for common submodule
Tim-Philipp Müller [Sat, 26 Nov 2016 11:27:58 +0000 (11:27 +0000)]
common: use https protocol for common submodule

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

7 years agoomx: Fix compiler warning with latest clang
Sebastian Dröge [Fri, 25 Nov 2016 21:56:06 +0000 (23:56 +0200)]
omx: Fix compiler warning with latest clang

gstomx.c:1376:42: error: implicit conversion from enumeration type 'GstOMXAcquireBufferReturn' to different enumeration type 'OMX_ERRORTYPE'
      (aka 'enum OMX_ERRORTYPE') [-Werror,-Wenum-conversion]
  g_return_val_if_fail (!port->tunneled, GST_OMX_ACQUIRE_BUFFER_ERROR);
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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

7 years agovideodecoder: remove use of EGLImage orientation
Matthew Waters [Thu, 17 Nov 2016 08:56:35 +0000 (19:56 +1100)]
videodecoder: remove use of EGLImage orientation

New code should use GstVideoTransformationMeta

(The defaults do the right thing here though).

8 years agoBack to development
Sebastian Dröge [Tue, 1 Nov 2016 16:53:25 +0000 (18:53 +0200)]
Back to development

8 years agoRelease 1.10.0
Sebastian Dröge [Tue, 1 Nov 2016 16:20:48 +0000 (18:20 +0200)]
Release 1.10.0

8 years agoRelease 1.9.90
Sebastian Dröge [Fri, 30 Sep 2016 10:04:51 +0000 (13:04 +0300)]
Release 1.9.90

8 years agoconfigure: Depend on gstreamer 1.9.2.1
Sebastian Dröge [Wed, 14 Sep 2016 09:33:13 +0000 (11:33 +0200)]
configure: Depend on gstreamer 1.9.2.1

8 years agoomx: Also search for gstomx.conf in the autoconf --sysconfdir
Sebastian Dröge [Mon, 12 Sep 2016 12:09:46 +0000 (14:09 +0200)]
omx: Also search for gstomx.conf in the autoconf --sysconfdir

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

8 years agoAutomatic update of common submodule
Jan Schmidt [Sat, 10 Sep 2016 10:52:10 +0000 (20:52 +1000)]
Automatic update of common submodule

From b18d820 to f980fd9