diff mbox

[10/10] gst1-imx: bump to version 0.12.0

Message ID 1454154357-31625-11-git-send-email-gary.bisson@boundarydevices.com
State Changes Requested
Headers show

Commit Message

Gary Bisson Jan. 30, 2016, 11:45 a.m. UTC
Changelog:
* vpu:
  - Completely rewritten plugin code; elements now based on libimxvpuapi
    instead of libfslvpuwrap
  - imxvpuenc_h264 inserts SPS/PPS data in front of I/IDR frames
  - imxvpuenc_mjpeg's quality factor actually has an effect, and is
    equivalent to the libjpeg's quality factor (it is used in exactly
    the same way to scale the quantization matrix' coefficients)
  - the encoder's output buffers no longer have to use DMA memory; they
    use regular system memory instead
  - new support in imxvpudec (referred to as "chroma interleaving") for
    NV12, NV16, NV24 as output formats as an alternative to the I420,
    Y42B, Y444 formats
  - removed all of the system frame number tracking code, since it is
    unnecessary; Instead, the libimxvpuapi's context fields are used to
    associate input/output frames with GstVideoCodecFrame system frame
    numbers
  - fix memory leaks related to missing buffer pool unref'ing

* imxv4l2videosrc:
  - support for crop metadata
  - element uses the width, height, etc. of the format that the device
    actually uses during operation (instead of default values)
  - autofocus control support via GstPhotography
  - fix incorrect GLib warnings
  - fix segmentation fault when shutting down the element

* eglvivsink:
  - remove extra g_free() calls, which lead to runtime errors
  - remove GLESv2 VIVANTE link dependencies
  - add Android platform
  - manually retrieve VIV direct texture functions
    with this and the link dependency elimination, this means that for
    platforms except the framebuffer one, no Vivante specific headers
    and libraries are needed anymore
  - fix blocking issue in the Wayland platform mainloop

* improved and expanded documentation

* pxp: NV16 *is* supported after all (it was actually a bug in GStreamer
pre-1.5.91)
NOTE: this does not break compatibility with GStreamer versions older
than 1.5.91

* compositor: Update backported aggregator code to GStreamer 1.6

* blitter:
  - error handling improvements
  - add missing buffer pool unref'ing, which lead to memory leaks
  - add missing compositor dependency to blitter base

* uniaudio:
  - only build the uniaudio plugin if at least one codec was found
    during configuration
  - disable plugin if the gstaudio library is not available
  - add AAC profile field to the sink caps with GStreamer >= 1.4.4 to
    ensure the uniaudio decoder is only used for AAC-LC data

* ipu: increase fill frame width from 8 to 64 pixels to make IPU fill
operations work with pre-3.14 Freescale kernels

* g2d: use padding pixels when setting surface parameters, fixing G2D
failures with frame sizes that aren't aligned

* wscript:
  - improve Android support
  - fix installation paths for the common, blitter, compositor libraries

This is based on the Yocto equivalent:
https://github.com/Freescale/meta-fsl-arm/commit/cf7a088

However this package now offers a more flexible approach because it can
be built without the GPU or VPU elements for devices based on SoCs that
lack those features like the new i.MX7.

Tested with the following commands on i.MX6Q (IPU):
 # gst-launch-1.0 playbin uri=file:///root/tears_of_steel_1080p.webm
 # gst-launch-1.0 filesrc location=/root/tears_of_steel_1080p.webm ! \
   matroskademux ! imxvpudec ! imxipuvideosink
 # gst-launch-1.0 filesrc location=/root/tears_of_steel_1080p.webm ! \
   matroskademux ! imxvpudec ! imxeglvivsink

Tested with the following commands on i.MX6SX (PXP):
 # gst-launch-1.0 imxv4l2videosrc device=/dev/video1 ! imxpxpvideosink

Signed-off-by: Gary Bisson <gary.bisson@boundarydevices.com>
---
 package/gstreamer1/gst1-imx/Config.in   | 58 ++++++++++++++++++++++++++++-----
 package/gstreamer1/gst1-imx/gst1-imx.mk | 15 +++++++--
 2 files changed, 62 insertions(+), 11 deletions(-)

Comments

Thomas Petazzoni Feb. 1, 2016, 8:44 p.m. UTC | #1
Dear Gary Bisson,

On Sat, 30 Jan 2016 12:45:57 +0100, Gary Bisson wrote:

> -config BR2_PACKAGE_GST1_IMX
> +menuconfig BR2_PACKAGE_GST1_IMX
>  	bool "gst1-imx"
>  	depends on BR2_LINUX_KERNEL
>  	depends on BR2_arm # Only relevant for i.MX
> -	depends on BR2_TOOLCHAIN_USES_GLIBC # imx-gpu-viv
> -	depends on BR2_PACKAGE_IMX_GPU_VIV

So it no longer depends on the GPU stuff ?

> -	depends on BR2_PACKAGE_LIBFSLVPUWRAP
>  	select BR2_PACKAGE_GST1_PLUGINS_BASE
> +	select BR2_PACKAGE_GST1_IMX_IPU_PLUGIN
> +	select BR2_PACKAGE_GST1_IMX_PXP_PLUGIN

This is weird. If you "select" these options here, it means that there
is no way to disable those options. So why are they options in the
first place ?

>  	help
>  	  This is a set of GStreamer 1.0 plugins for plugins for Freescale's
>  	  i.MX6 platforms, with emphasis on video en/decoding using the VPU
> @@ -25,3 +19,49 @@ config BR2_PACKAGE_GST1_IMX
>  	  The software as a whole is currently in beta stage.
>  
>  	  https://github.com/Freescale/gstreamer-imx
> +
> +if BR2_PACKAGE_GST1_IMX
> +
> +config BR2_PACKAGE_GST1_IMX_IPU_PLUGIN
> +	bool "IPU plugin"
> +	help
> +	  IPU plugin library

This one.

> +
> +config BR2_PACKAGE_GST1_IMX_PXP_PLUGIN
> +	bool "PXP plugin"
> +	help
> +	  PXP plugin library

And this one.

> +# Required by imx-gpu-viv
> +comment "GPU sinks need an (e)glibc toolchain"
> +	depends on !BR2_TOOLCHAIN_USES_GLIBC

Ah ok, here is the GPU dependency.

> diff --git a/package/gstreamer1/gst1-imx/gst1-imx.mk b/package/gstreamer1/gst1-imx/gst1-imx.mk
> index 8ede8ad..f3eac0a 100644
> --- a/package/gstreamer1/gst1-imx/gst1-imx.mk
> +++ b/package/gstreamer1/gst1-imx/gst1-imx.mk
> @@ -4,7 +4,7 @@
>  #
>  ################################################################################
>  
> -GST1_IMX_VERSION = 0.11.1
> +GST1_IMX_VERSION = 0.12.0
>  GST1_IMX_SITE = $(call github,Freescale,gstreamer-imx,$(GST1_IMX_VERSION))
>  
>  GST1_IMX_LICENSE = LGPLv2+
> @@ -13,13 +13,23 @@ GST1_IMX_LICENSE_FILES = LICENSE
>  GST1_IMX_INSTALL_STAGING = YES
>  
>  GST1_IMX_DEPENDENCIES += host-pkgconf host-python \
> -	imx-gpu-viv gstreamer1 gst1-plugins-base libfslvpuwrap
> +	gstreamer1 gst1-plugins-base
>  
>  # needs access to imx-specific kernel headers
>  GST1_IMX_DEPENDENCIES += linux
>  GST1_IMX_CONF_OPTS += --prefix="/usr" \
>  	--kernel-headers="$(LINUX_DIR)/include"
>  
> +ifeq ($(BR2_PACKAGE_GST1_IMX_V4L2_PLUGIN),y)
> +GST1_IMX_DEPENDENCIES += gst1-plugins-bad
> +endif
> +
> +ifeq ($(BR2_PACKAGE_GST1_IMX_VPU_PLUGIN),y)
> +GST1_IMX_DEPENDENCIES += libimxvpuapi
> +endif
> +
> +ifeq ($(BR2_PACKAGE_GST1_IMX_EGL_PLUGIN),y)
> +GST1_IMX_DEPENDENCIES += imx-gpu-viv
>  ifeq ($(BR2_PACKAGE_XLIB_LIBX11),y)
>  GST1_IMX_DEPENDENCIES += xlib_libX11
>  GST1_IMX_CONF_OPTS += --egl-platform=x11
> @@ -31,6 +41,7 @@ else
>  GST1_IMX_CONF_OPTS += --egl-platform=fb
>  endif
>  endif
> +endif
>  
>  define GST1_IMX_CONFIGURE_CMDS
>  	cd $(@D); \

Also, please add a hash file. The rest looks good. Can you fix and
resend ?

Thanks!

Thomas
Gary Bisson Feb. 1, 2016, 9:20 p.m. UTC | #2
Thomas, All,

On Mon, Feb 1, 2016 at 9:44 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Dear Gary Bisson,
>
> On Sat, 30 Jan 2016 12:45:57 +0100, Gary Bisson wrote:
>
>> -config BR2_PACKAGE_GST1_IMX
>> +menuconfig BR2_PACKAGE_GST1_IMX
>>       bool "gst1-imx"
>>       depends on BR2_LINUX_KERNEL
>>       depends on BR2_arm # Only relevant for i.MX
>> -     depends on BR2_TOOLCHAIN_USES_GLIBC # imx-gpu-viv
>> -     depends on BR2_PACKAGE_IMX_GPU_VIV
>
> So it no longer depends on the GPU stuff ?

No, you can build this package without the GPU backend which implies
the GPU sinks won't be built. The end goal is for i.MX7 which doesn't
have any GPU, right now I have to include the GPU binaries just to
build the pxp/v4l plugins.

>> -     depends on BR2_PACKAGE_LIBFSLVPUWRAP
>>       select BR2_PACKAGE_GST1_PLUGINS_BASE
>> +     select BR2_PACKAGE_GST1_IMX_IPU_PLUGIN
>> +     select BR2_PACKAGE_GST1_IMX_PXP_PLUGIN
>
> This is weird. If you "select" these options here, it means that there
> is no way to disable those options. So why are they options in the
> first place ?

I just wanted to make it explicit that the package will at least build
those two plugins. Then leaving it up to the user to select whichever
plugin he wants. There actually is no option to disable plugins from
the packages, it's all a question of dependency. As soon as the i.MX
linux kernel is built, PXP and IPU will be. As soon as the GPU
libraries are includes, GPU sink plugins will be built.

>>       help
>>         This is a set of GStreamer 1.0 plugins for plugins for Freescale's
>>         i.MX6 platforms, with emphasis on video en/decoding using the VPU
>> @@ -25,3 +19,49 @@ config BR2_PACKAGE_GST1_IMX
>>         The software as a whole is currently in beta stage.
>>
>>         https://github.com/Freescale/gstreamer-imx
>> +
>> +if BR2_PACKAGE_GST1_IMX
>> +
>> +config BR2_PACKAGE_GST1_IMX_IPU_PLUGIN
>> +     bool "IPU plugin"
>> +     help
>> +       IPU plugin library
>
> This one.
>
>> +
>> +config BR2_PACKAGE_GST1_IMX_PXP_PLUGIN
>> +     bool "PXP plugin"
>> +     help
>> +       PXP plugin library
>
> And this one.

The above just makes it clear (to the user) that those plugins will be built.

>> +# Required by imx-gpu-viv
>> +comment "GPU sinks need an (e)glibc toolchain"
>> +     depends on !BR2_TOOLCHAIN_USES_GLIBC
>
> Ah ok, here is the GPU dependency.
>
>> diff --git a/package/gstreamer1/gst1-imx/gst1-imx.mk b/package/gstreamer1/gst1-imx/gst1-imx.mk
>> index 8ede8ad..f3eac0a 100644
>> --- a/package/gstreamer1/gst1-imx/gst1-imx.mk
>> +++ b/package/gstreamer1/gst1-imx/gst1-imx.mk
>> @@ -4,7 +4,7 @@
>>  #
>>  ################################################################################
>>
>> -GST1_IMX_VERSION = 0.11.1
>> +GST1_IMX_VERSION = 0.12.0
>>  GST1_IMX_SITE = $(call github,Freescale,gstreamer-imx,$(GST1_IMX_VERSION))
>>
>>  GST1_IMX_LICENSE = LGPLv2+
>> @@ -13,13 +13,23 @@ GST1_IMX_LICENSE_FILES = LICENSE
>>  GST1_IMX_INSTALL_STAGING = YES
>>
>>  GST1_IMX_DEPENDENCIES += host-pkgconf host-python \
>> -     imx-gpu-viv gstreamer1 gst1-plugins-base libfslvpuwrap
>> +     gstreamer1 gst1-plugins-base
>>
>>  # needs access to imx-specific kernel headers
>>  GST1_IMX_DEPENDENCIES += linux
>>  GST1_IMX_CONF_OPTS += --prefix="/usr" \
>>       --kernel-headers="$(LINUX_DIR)/include"
>>
>> +ifeq ($(BR2_PACKAGE_GST1_IMX_V4L2_PLUGIN),y)
>> +GST1_IMX_DEPENDENCIES += gst1-plugins-bad
>> +endif
>> +
>> +ifeq ($(BR2_PACKAGE_GST1_IMX_VPU_PLUGIN),y)
>> +GST1_IMX_DEPENDENCIES += libimxvpuapi
>> +endif
>> +
>> +ifeq ($(BR2_PACKAGE_GST1_IMX_EGL_PLUGIN),y)
>> +GST1_IMX_DEPENDENCIES += imx-gpu-viv
>>  ifeq ($(BR2_PACKAGE_XLIB_LIBX11),y)
>>  GST1_IMX_DEPENDENCIES += xlib_libX11
>>  GST1_IMX_CONF_OPTS += --egl-platform=x11
>> @@ -31,6 +41,7 @@ else
>>  GST1_IMX_CONF_OPTS += --egl-platform=fb
>>  endif
>>  endif
>> +endif
>>
>>  define GST1_IMX_CONFIGURE_CMDS
>>       cd $(@D); \
>
> Also, please add a hash file. The rest looks good. Can you fix and
> resend ?

Ok, let me know if you want the IPU/PXP options to be removed.

Regards,
Gary
Thomas Petazzoni Feb. 1, 2016, 10:27 p.m. UTC | #3
Hello,

On Mon, 1 Feb 2016 22:20:36 +0100, Gary Bisson wrote:

> > So it no longer depends on the GPU stuff ?
> 
> No, you can build this package without the GPU backend which implies
> the GPU sinks won't be built. The end goal is for i.MX7 which doesn't
> have any GPU, right now I have to include the GPU binaries just to
> build the pxp/v4l plugins.

ACK, makes sense.

> >> -     depends on BR2_PACKAGE_LIBFSLVPUWRAP
> >>       select BR2_PACKAGE_GST1_PLUGINS_BASE
> >> +     select BR2_PACKAGE_GST1_IMX_IPU_PLUGIN
> >> +     select BR2_PACKAGE_GST1_IMX_PXP_PLUGIN
> >
> > This is weird. If you "select" these options here, it means that there
> > is no way to disable those options. So why are they options in the
> > first place ?
> 
> I just wanted to make it explicit that the package will at least build
> those two plugins. Then leaving it up to the user to select whichever
> plugin he wants. There actually is no option to disable plugins from
> the packages, it's all a question of dependency. As soon as the i.MX
> linux kernel is built, PXP and IPU will be. As soon as the GPU
> libraries are includes, GPU sink plugins will be built.

Hum, then it is not good, because it means that even if you disable the
GPU sink plugin options, but still have the GPU libraries enabled, the
GPU sink plugins will be installed on your target. This is very
confusing.

I think you should remove the sub-options, and then simply expand the
Config.in help text of the main option to say:

 - The IPU and PXP plugins are always built.
 - The GPU sink plugin is built when ... is enabled.
 - The ... plugin is built when ... is enabled.

Thanks!

Thomas
Gary Bisson Feb. 1, 2016, 10:49 p.m. UTC | #4
Thomas, All,

On Mon, Feb 1, 2016 at 11:27 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Hello,
>
> On Mon, 1 Feb 2016 22:20:36 +0100, Gary Bisson wrote:
>
>> > So it no longer depends on the GPU stuff ?
>>
>> No, you can build this package without the GPU backend which implies
>> the GPU sinks won't be built. The end goal is for i.MX7 which doesn't
>> have any GPU, right now I have to include the GPU binaries just to
>> build the pxp/v4l plugins.
>
> ACK, makes sense.
>
>> >> -     depends on BR2_PACKAGE_LIBFSLVPUWRAP
>> >>       select BR2_PACKAGE_GST1_PLUGINS_BASE
>> >> +     select BR2_PACKAGE_GST1_IMX_IPU_PLUGIN
>> >> +     select BR2_PACKAGE_GST1_IMX_PXP_PLUGIN
>> >
>> > This is weird. If you "select" these options here, it means that there
>> > is no way to disable those options. So why are they options in the
>> > first place ?
>>
>> I just wanted to make it explicit that the package will at least build
>> those two plugins. Then leaving it up to the user to select whichever
>> plugin he wants. There actually is no option to disable plugins from
>> the packages, it's all a question of dependency. As soon as the i.MX
>> linux kernel is built, PXP and IPU will be. As soon as the GPU
>> libraries are includes, GPU sink plugins will be built.
>
> Hum, then it is not good, because it means that even if you disable the
> GPU sink plugin options, but still have the GPU libraries enabled, the
> GPU sink plugins will be installed on your target. This is very
> confusing.

Yes, I understand, is it really a big deal? There's going to be more
plugins than expected in the rootfs, it's free!

> I think you should remove the sub-options, and then simply expand the
> Config.in help text of the main option to say:
>
>  - The IPU and PXP plugins are always built.
>  - The GPU sink plugin is built when ... is enabled.
>  - The ... plugin is built when ... is enabled.

This would be ever more confusing in my opinion. It means that when
you select gstreamer-imx you have no idea of what is going to be
built. Then when you realize you need the graphics libraries you have
to browse to select it yourself.

Wouldn't it be possible to force the option value when the IMX_GPU_VIV
package is selected? I guess that would bring a circular dependency
but at least someone wouldn't be able to remove the option without
removing the graphics binaries.

Regards,
Gary
Arnout Vandecappelle Feb. 2, 2016, 8:51 a.m. UTC | #5
On 30-01-16 12:45, Gary Bisson wrote:
[snip]
> diff --git a/package/gstreamer1/gst1-imx/gst1-imx.mk b/package/gstreamer1/gst1-imx/gst1-imx.mk
> index 8ede8ad..f3eac0a 100644
> --- a/package/gstreamer1/gst1-imx/gst1-imx.mk
> +++ b/package/gstreamer1/gst1-imx/gst1-imx.mk
> @@ -4,7 +4,7 @@
>  #
>  ################################################################################
>  
> -GST1_IMX_VERSION = 0.11.1
> +GST1_IMX_VERSION = 0.12.0
>  GST1_IMX_SITE = $(call github,Freescale,gstreamer-imx,$(GST1_IMX_VERSION))
>  
>  GST1_IMX_LICENSE = LGPLv2+
> @@ -13,13 +13,23 @@ GST1_IMX_LICENSE_FILES = LICENSE
>  GST1_IMX_INSTALL_STAGING = YES
>  
>  GST1_IMX_DEPENDENCIES += host-pkgconf host-python \
> -	imx-gpu-viv gstreamer1 gst1-plugins-base libfslvpuwrap
> +	gstreamer1 gst1-plugins-base

 Minor nit in addition to Thomas's comments: please split this into one
dependency per line.

 Regards,
 Arnout
Arnout Vandecappelle Feb. 2, 2016, 8:56 a.m. UTC | #6
On 01-02-16 23:49, Gary Bisson wrote:
> Thomas, All,
> 
> On Mon, Feb 1, 2016 at 11:27 PM, Thomas Petazzoni
> <thomas.petazzoni@free-electrons.com> wrote:
>> Hello,
>>
>> On Mon, 1 Feb 2016 22:20:36 +0100, Gary Bisson wrote:
>>
>>>> So it no longer depends on the GPU stuff ?
>>>
>>> No, you can build this package without the GPU backend which implies
>>> the GPU sinks won't be built. The end goal is for i.MX7 which doesn't
>>> have any GPU, right now I have to include the GPU binaries just to
>>> build the pxp/v4l plugins.
>>
>> ACK, makes sense.
>>
>>>>> -     depends on BR2_PACKAGE_LIBFSLVPUWRAP
>>>>>       select BR2_PACKAGE_GST1_PLUGINS_BASE
>>>>> +     select BR2_PACKAGE_GST1_IMX_IPU_PLUGIN
>>>>> +     select BR2_PACKAGE_GST1_IMX_PXP_PLUGIN
>>>>
>>>> This is weird. If you "select" these options here, it means that there
>>>> is no way to disable those options. So why are they options in the
>>>> first place ?
>>>
>>> I just wanted to make it explicit that the package will at least build
>>> those two plugins. Then leaving it up to the user to select whichever
>>> plugin he wants. There actually is no option to disable plugins from
>>> the packages, it's all a question of dependency. As soon as the i.MX
>>> linux kernel is built, PXP and IPU will be. As soon as the GPU
>>> libraries are includes, GPU sink plugins will be built.
>>
>> Hum, then it is not good, because it means that even if you disable the
>> GPU sink plugin options, but still have the GPU libraries enabled, the
>> GPU sink plugins will be installed on your target. This is very
>> confusing.
> 
> Yes, I understand, is it really a big deal? There's going to be more
> plugins than expected in the rootfs, it's free!

 We don't consider rootfs size to be for free.

> 
>> I think you should remove the sub-options, and then simply expand the
>> Config.in help text of the main option to say:
>>
>>  - The IPU and PXP plugins are always built.
>>  - The GPU sink plugin is built when ... is enabled.
>>  - The ... plugin is built when ... is enabled.
> 
> This would be ever more confusing in my opinion. It means that when
> you select gstreamer-imx you have no idea of what is going to be
> built. Then when you realize you need the graphics libraries you have
> to browse to select it yourself.

 That's why it should be mentioned in the help text.

> 
> Wouldn't it be possible to force the option value when the IMX_GPU_VIV
> package is selected? I guess that would bring a circular dependency
> but at least someone wouldn't be able to remove the option without
> removing the graphics binaries.

 Yes, that is possible. But we only do that in situations where it is not
obvious which other package you should select. The idea is to avoid a
proliferation of Config.in options.

 But in this case, you _anyway_ still have to manually select the imx-gpu-viv
package... So I don't think there is much point in adding the sub-options.
Except if you can convert all the depends into selects (except for the glibc one
of course).

 Regards,
 Arnout
> 
> Regards,
> Gary
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
>
Gary Bisson Feb. 2, 2016, 9:07 a.m. UTC | #7
Arnout, All,

On Tue, Feb 2, 2016 at 9:56 AM, Arnout Vandecappelle <arnout@mind.be> wrote:
> On 01-02-16 23:49, Gary Bisson wrote:
>> Thomas, All,
>>
>> On Mon, Feb 1, 2016 at 11:27 PM, Thomas Petazzoni
>> <thomas.petazzoni@free-electrons.com> wrote:
>>> Hello,
>>>
>>> On Mon, 1 Feb 2016 22:20:36 +0100, Gary Bisson wrote:
>>>
>>>>> So it no longer depends on the GPU stuff ?
>>>>
>>>> No, you can build this package without the GPU backend which implies
>>>> the GPU sinks won't be built. The end goal is for i.MX7 which doesn't
>>>> have any GPU, right now I have to include the GPU binaries just to
>>>> build the pxp/v4l plugins.
>>>
>>> ACK, makes sense.
>>>
>>>>>> -     depends on BR2_PACKAGE_LIBFSLVPUWRAP
>>>>>>       select BR2_PACKAGE_GST1_PLUGINS_BASE
>>>>>> +     select BR2_PACKAGE_GST1_IMX_IPU_PLUGIN
>>>>>> +     select BR2_PACKAGE_GST1_IMX_PXP_PLUGIN
>>>>>
>>>>> This is weird. If you "select" these options here, it means that there
>>>>> is no way to disable those options. So why are they options in the
>>>>> first place ?
>>>>
>>>> I just wanted to make it explicit that the package will at least build
>>>> those two plugins. Then leaving it up to the user to select whichever
>>>> plugin he wants. There actually is no option to disable plugins from
>>>> the packages, it's all a question of dependency. As soon as the i.MX
>>>> linux kernel is built, PXP and IPU will be. As soon as the GPU
>>>> libraries are includes, GPU sink plugins will be built.
>>>
>>> Hum, then it is not good, because it means that even if you disable the
>>> GPU sink plugin options, but still have the GPU libraries enabled, the
>>> GPU sink plugins will be installed on your target. This is very
>>> confusing.
>>
>> Yes, I understand, is it really a big deal? There's going to be more
>> plugins than expected in the rootfs, it's free!
>
>  We don't consider rootfs size to be for free.

I understand.

>>> I think you should remove the sub-options, and then simply expand the
>>> Config.in help text of the main option to say:
>>>
>>>  - The IPU and PXP plugins are always built.
>>>  - The GPU sink plugin is built when ... is enabled.
>>>  - The ... plugin is built when ... is enabled.
>>
>> This would be ever more confusing in my opinion. It means that when
>> you select gstreamer-imx you have no idea of what is going to be
>> built. Then when you realize you need the graphics libraries you have
>> to browse to select it yourself.
>
>  That's why it should be mentioned in the help text.
>
>>
>> Wouldn't it be possible to force the option value when the IMX_GPU_VIV
>> package is selected? I guess that would bring a circular dependency
>> but at least someone wouldn't be able to remove the option without
>> removing the graphics binaries.
>
>  Yes, that is possible. But we only do that in situations where it is not
> obvious which other package you should select. The idea is to avoid a
> proliferation of Config.in options.
>
>  But in this case, you _anyway_ still have to manually select the imx-gpu-viv
> package... So I don't think there is much point in adding the sub-options.
> Except if you can convert all the depends into selects (except for the glibc one
> of course).

Yes the GPU was actually a bad example, the VPU and V4L plugins do
have selects that work. But I'll offer a v3 without the options, just
with text in the Config.in and if later I find another approach I'll
submit an RFC.

Thank you all for your feedback.

Regards,
Gary
diff mbox

Patch

diff --git a/package/gstreamer1/gst1-imx/Config.in b/package/gstreamer1/gst1-imx/Config.in
index f7284f4..5f0da84 100644
--- a/package/gstreamer1/gst1-imx/Config.in
+++ b/package/gstreamer1/gst1-imx/Config.in
@@ -1,19 +1,13 @@ 
 comment "gst1-imx needs an imx-specific Linux kernel to be built"
 	depends on BR2_arm && !BR2_LINUX_KERNEL
 
-# Required by imx-gpu-viv
-comment "gst1-imx needs an (e)glibc toolchain"
-	depends on BR2_arm
-	depends on !BR2_TOOLCHAIN_USES_GLIBC
-
-config BR2_PACKAGE_GST1_IMX
+menuconfig BR2_PACKAGE_GST1_IMX
 	bool "gst1-imx"
 	depends on BR2_LINUX_KERNEL
 	depends on BR2_arm # Only relevant for i.MX
-	depends on BR2_TOOLCHAIN_USES_GLIBC # imx-gpu-viv
-	depends on BR2_PACKAGE_IMX_GPU_VIV
-	depends on BR2_PACKAGE_LIBFSLVPUWRAP
 	select BR2_PACKAGE_GST1_PLUGINS_BASE
+	select BR2_PACKAGE_GST1_IMX_IPU_PLUGIN
+	select BR2_PACKAGE_GST1_IMX_PXP_PLUGIN
 	help
 	  This is a set of GStreamer 1.0 plugins for plugins for Freescale's
 	  i.MX6 platforms, with emphasis on video en/decoding using the VPU
@@ -25,3 +19,49 @@  config BR2_PACKAGE_GST1_IMX
 	  The software as a whole is currently in beta stage.
 
 	  https://github.com/Freescale/gstreamer-imx
+
+if BR2_PACKAGE_GST1_IMX
+
+config BR2_PACKAGE_GST1_IMX_IPU_PLUGIN
+	bool "IPU plugin"
+	help
+	  IPU plugin library
+
+config BR2_PACKAGE_GST1_IMX_PXP_PLUGIN
+	bool "PXP plugin"
+	help
+	  PXP plugin library
+
+config BR2_PACKAGE_GST1_IMX_V4L2_PLUGIN
+	bool "V4L2 plugin"
+	select BR2_PACKAGE_GST1_PLUGINS_BAD
+	help
+	  V4L2 plugin library
+
+config BR2_PACKAGE_GST1_IMX_VPU_PLUGIN
+	bool "VPU plugin"
+	select BR2_PACKAGE_LIBIMXVPUAPI
+	help
+	  VPU plugin library
+
+# Required by imx-gpu-viv
+comment "GPU sinks need an (e)glibc toolchain"
+	depends on !BR2_TOOLCHAIN_USES_GLIBC
+
+config BR2_PACKAGE_GST1_IMX_EGL_PLUGIN
+	bool "EGL plugin"
+	depends on BR2_TOOLCHAIN_USES_GLIBC # imx-gpu-viv
+	depends on BR2_PACKAGE_IMX_GPU_VIV
+	help
+	  EGL plugin library
+
+config BR2_PACKAGE_GST1_IMX_G2D_PLUGIN
+	bool "G2D plugin"
+	depends on BR2_TOOLCHAIN_USES_GLIBC # imx-gpu-viv
+	depends on BR2_PACKAGE_IMX_GPU_VIV
+	depends on BR2_PACKAGE_GST1_IMX_EGL_PLUGIN
+	select BR2_PACKAGE_IMX_GPU_VIV_G2D
+	help
+	  G2D plugin library
+
+endif
diff --git a/package/gstreamer1/gst1-imx/gst1-imx.mk b/package/gstreamer1/gst1-imx/gst1-imx.mk
index 8ede8ad..f3eac0a 100644
--- a/package/gstreamer1/gst1-imx/gst1-imx.mk
+++ b/package/gstreamer1/gst1-imx/gst1-imx.mk
@@ -4,7 +4,7 @@ 
 #
 ################################################################################
 
-GST1_IMX_VERSION = 0.11.1
+GST1_IMX_VERSION = 0.12.0
 GST1_IMX_SITE = $(call github,Freescale,gstreamer-imx,$(GST1_IMX_VERSION))
 
 GST1_IMX_LICENSE = LGPLv2+
@@ -13,13 +13,23 @@  GST1_IMX_LICENSE_FILES = LICENSE
 GST1_IMX_INSTALL_STAGING = YES
 
 GST1_IMX_DEPENDENCIES += host-pkgconf host-python \
-	imx-gpu-viv gstreamer1 gst1-plugins-base libfslvpuwrap
+	gstreamer1 gst1-plugins-base
 
 # needs access to imx-specific kernel headers
 GST1_IMX_DEPENDENCIES += linux
 GST1_IMX_CONF_OPTS += --prefix="/usr" \
 	--kernel-headers="$(LINUX_DIR)/include"
 
+ifeq ($(BR2_PACKAGE_GST1_IMX_V4L2_PLUGIN),y)
+GST1_IMX_DEPENDENCIES += gst1-plugins-bad
+endif
+
+ifeq ($(BR2_PACKAGE_GST1_IMX_VPU_PLUGIN),y)
+GST1_IMX_DEPENDENCIES += libimxvpuapi
+endif
+
+ifeq ($(BR2_PACKAGE_GST1_IMX_EGL_PLUGIN),y)
+GST1_IMX_DEPENDENCIES += imx-gpu-viv
 ifeq ($(BR2_PACKAGE_XLIB_LIBX11),y)
 GST1_IMX_DEPENDENCIES += xlib_libX11
 GST1_IMX_CONF_OPTS += --egl-platform=x11
@@ -31,6 +41,7 @@  else
 GST1_IMX_CONF_OPTS += --egl-platform=fb
 endif
 endif
+endif
 
 define GST1_IMX_CONFIGURE_CMDS
 	cd $(@D); \