[Buildroot] [PATCH v2] gst1-plugins-imx: add package

Arnout Vandecappelle arnout at mind.be
Mon Nov 3 21:51:01 UTC 2014


 Hi Gary,

 Thanks for your continued effort on this package. I still have some feedback,
however.

On 30/10/14 03:32, Gary Bisson wrote:
> Open-source GStreamer 1.0 plugins for i.MX platforms.
> More info at https://github.com/Freescale/gstreamer-imx
> 
> Signed-off-by: Gary Bisson <bisson.gary at gmail.com>
> ---
> Modifications v1->v2:
> - Use of github helper macro
> - Modify package comment with Peter S. original patch
> - Add comment for eglibc dependency (due to GPU libs)
> - Remove comments on package dependencies
> 
> One thing I wasn't sure about, should all new package contain a .hash file? If
> so I can submit a v3 right away.
> 
> This patch has been tested using an i.MX6Q SabreLite (nitrogen6x config) along
> with the usual Tears of Steel movie in 1080p:
> http://media.xiph.org/mango/tears_of_steel_1080p.webm
> 
> Below are the commands used to test the different sinks:
> 
> $ 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 ! imxipusink
> $ gst-launch-1.0 filesrc location=/root/tears_of_steel_1080p.webm ! \
> matroskademux ! imxvpudec ! imxeglvivsink
> 
> The toolchain used was the Sourcery CodeBench 2014.05. The video above also
> requires the following extra configuration in order to demux the content:
> BR2_PACKAGE_GST1_PLUGINS_GOOD=y
> BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MATROSKA=y
> 
> Thanks,
> Gary
> 
> ---
>  package/gstreamer1/Config.in                       |  1 +
>  package/gstreamer1/gst1-plugins-imx/Config.in      | 28 +++++++++++
>  .../gst1-plugins-imx/gst1-plugins-imx.mk           | 56 ++++++++++++++++++++++
>  3 files changed, 85 insertions(+)
>  create mode 100644 package/gstreamer1/gst1-plugins-imx/Config.in
>  create mode 100644 package/gstreamer1/gst1-plugins-imx/gst1-plugins-imx.mk
> 
> diff --git a/package/gstreamer1/Config.in b/package/gstreamer1/Config.in
> index 5f08faf..9dbbed4 100644
> --- a/package/gstreamer1/Config.in
> +++ b/package/gstreamer1/Config.in
> @@ -6,6 +6,7 @@ source "package/gstreamer1/gst1-plugins-base/Config.in"
>  source "package/gstreamer1/gst1-plugins-good/Config.in"
>  source "package/gstreamer1/gst1-plugins-bad/Config.in"
>  source "package/gstreamer1/gst1-plugins-ugly/Config.in"
> +source "package/gstreamer1/gst1-plugins-imx/Config.in"

 I'm sorry to return to the naming issue, but shouldn't the package be called
gst1-imx instead of gst1-plugins-imx? We don't use 'plugins' in any other gst
package (except the official plugin bundles), and upstream also doesn't have
'plugins' in the name.

>  source "package/gstreamer1/gst1-libav/Config.in"
>  source "package/gstreamer1/gst1-validate/Config.in"
>  source "package/gstreamer1/gst-omx/Config.in"
> diff --git a/package/gstreamer1/gst1-plugins-imx/Config.in b/package/gstreamer1/gst1-plugins-imx/Config.in
> new file mode 100644
> index 0000000..d499874
> --- /dev/null
> +++ b/package/gstreamer1/gst1-plugins-imx/Config.in
> @@ -0,0 +1,28 @@
> +comment "gst1-plugins-imx needs an imx-specific Linux kernel to be built"
> +	depends on BR2_arm && !BR2_LINUX_KERNEL
> +
> +# Required by gpu-viv-bin-mx6q
> +comment "gst1-plugins-imx needs an (e)glibc toolchain"
> +	depends on BR2_arm
> +	depends on !BR2_TOOLCHAIN_USES_GLIBC
> +
> +config BR2_PACKAGE_GST1_PLUGINS_IMX
> +	bool "gst1-plugins-imx"
> +	depends on BR2_LINUX_KERNEL

 Put here a # libfslvpuwrap to make the reason explicit.

> +	depends on BR2_arm # Only relevant for i.MX
> +	depends on BR2_TOOLCHAIN_USES_GLIBC # gpu-viv-bin-mx6q
> +	depends on BR2_PACKAGE_GPU_VIV_BIN_MX6Q

 This should be a select.

> +	depends on BR2_PACKAGE_LIBFSLVPUWRAP

 This should be a select.

> +	select BR2_PACKAGE_GST1_PLUGINS_BASE
> +	help
> +	  This is a set of GStreamer 1.0 plugins for plugins for Freescale's
> +	  i.MX platform, with emphasis on video en/decoding using the i.MX
> +	  VPU engine.
> +
> +	  Currently, this software has been tested only with the i.MX6 SoC
> +	  family and requires a kernel that includes the i.MX6 specific
> +	  headers to be built.

 As far as I understand, it's _only_ for i.MX6 and i.MX7, not for the older
ones. So perhaps that should be clarified.

> +
> +	  The software as a whole is currently in beta stage.
> +
> +	  More info at https://github.com/Freescale/gstreamer-imx

 Leave out the 'More info at'.


> diff --git a/package/gstreamer1/gst1-plugins-imx/gst1-plugins-imx.mk b/package/gstreamer1/gst1-plugins-imx/gst1-plugins-imx.mk
> new file mode 100644
> index 0000000..56b6fdf
> --- /dev/null
> +++ b/package/gstreamer1/gst1-plugins-imx/gst1-plugins-imx.mk
> @@ -0,0 +1,56 @@
> +################################################################################
> +#
> +# gst1-plugins-imx
> +#
> +################################################################################
> +
> +GST1_PLUGINS_IMX_VERSION = 0.9.9
> +GST1_PLUGINS_IMX_SITE = $(call github,Freescale,gstreamer-imx,$(GST1_PLUGINS_IMX_VERSION))
> +
> +GST1_PLUGINS_IMX_LICENSE = LGPLv2+
> +GST1_PLUGINS_IMX_LICENSE_FILES = LICENSE
> +
> +GST1_PLUGINS_IMX_INSTALL_STAGING = YES
> +
> +GST1_PLUGINS_IMX_DEPENDENCIES += host-pkgconf host-python \
> +	gpu-viv-bin-mx6q gstreamer1 gst1-plugins-base libfslvpuwrap
> +
> +# needs access to imx-specific kernel headers
> +GST1_PLUGINS_IMX_DEPENDENCIES += linux
> +GST1_PLUGINS_IMX_CONF_OPTS += --prefix="/usr" \
> +	--kernel-headers="$(LINUX_DIR)/include"
> +
> +ifeq ($(BR2_PACKAGE_XLIB_LIBX11),y)
> +GST1_PLUGINS_IMX_DEPENDENCIES += xlib_libX11
> +GST1_PLUGINS_IMX_CONF_OPTS += --egl-platform=x11
> +else
> +ifeq ($(BR2_PACKAGE_WAYLAND),y)
> +GST1_PLUGINS_IMX_DEPENDENCIES += wayland
> +GST1_PLUGINS_IMX_CONF_OPTS += --egl-platform=wayland
> +else
> +GST1_PLUGINS_IMX_CONF_OPTS += --egl-platform=fb
> +endif
> +endif
> +
> +define GST1_PLUGINS_IMX_CONFIGURE_CMDS
> +	(cd $(@D); \
> +		$(TARGET_CONFIGURE_OPTS)	\
> +		$(HOST_DIR)/usr/bin/python2 ./waf configure \
> +		$(GST1_PLUGINS_IMX_CONF_OPTS) \
> +	)

 I realize that this is probably just copy-paste from somewhere else, but there
is no need at all for the ()s. It just forks another shell with no good reason.



 Regards,
 Arnout

> +endef
> +
> +define GST1_PLUGINS_IMX_BUILD_CMDS
> +	(cd $(@D); \
> +		$(HOST_DIR)/usr/bin/python2 ./waf build -j $(PARALLEL_JOBS) \
> +	)
> +endef
> +
> +define GST1_PLUGINS_IMX_INSTALL_TARGET_CMDS
> +	(cd $(@D); \
> +		$(HOST_DIR)/usr/bin/python2 ./waf --destdir=$(TARGET_DIR) \
> +		install \
> +	)
> +endef
> +
> +$(eval $(generic-package))
> 


-- 
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F


More information about the buildroot mailing list