Skip to contentSkip to conversation

gstreamer1-imx: new package

PATCH Superseded Peter Seiderer 3 participants 3 messages Feb 25, 2014 – Mar 4, 2014 Arm i.MX and Layerscape

v2 of 3 Superseded Latest is v3 →

lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 gstreamer1-imx: new package

Add gstreamer1-imx package (gstreamer-1.x equivalent to gstreamer-0.10/gst-fsl-plugins package).

---
Changes v1 -> v2:
- rename package from gstreamer-imx to gstreamer1-imx (as suggested
by Peter Korsgaard)
- add check in comment to clear gstreamer-1.x/gstreamer1-imx vs. gst-fsl-plugins/gstreamer-0.10 (as suggested by Yann E. MORIN)
- fix copy/paste errors in Config.in (s/gst-fsl-plugins/gstreamer1-imx/) and gstreamer1-imx.mk (s/GST_FSL_PLUGINS_DEPENDENCIES/GSTREAMER1_IMX_DEPENDENCIES/
and remove superfluously GSTREAMER_IMX_WITHOUT_X11 usage

---
 package/gstreamer1/Config.in                       |  1 +
 package/gstreamer1/gstreamer1-imx/Config.in        | 21 +++++++++++++
 ...headers-include-path-to-src-v4l2src-compi.patch | 31 +++++++++++++++++++
 .../gstreamer1/gstreamer1-imx/gstreamer1-imx.mk    | 36 ++++++++++++++++++++++
 4 files changed, 89 insertions(+)
 create mode 100644 package/gstreamer1/gstreamer1-imx/Config.in
 create mode 100644 package/gstreamer1/gstreamer1-imx/gstreamer1-imx-0001-Add-kernel-headers-include-path-to-src-v4l2src-compi.patch
 create mode 100644 package/gstreamer1/gstreamer1-imx/gstreamer1-imx.mk
package/gstreamer1/Config.in +1 -0
index fe0ad48..7c2fe99 100644
@@ -8,4 +8,5 @@ source "package/gstreamer1/gst1-plugins-bad/Config.in"
 source "package/gstreamer1/gst1-plugins-ugly/Config.in"
 source "package/gstreamer1/gst1-libav/Config.in"
 source "package/gstreamer1/gst-omx/Config.in"
+source "package/gstreamer1/gstreamer1-imx/Config.in"
 endif
package/gstreamer1/gstreamer1-imx/Config.in new file +21 -0
new file mode 100644
index 0000000..5753202
@@ -0,0 +1,21 @@
+comment "gstreamer1-imx needs an imx-specific Linux kernel to be built"
+	depends on BR2_arm && !BR2_LINUX_KERNEL
+
+config BR2_PACKAGE_GSTREAMER1_IMX
+	bool "gstreamer1-imx"
+	depends on BR2_LINUX_KERNEL
+	depends on BR2_arm # Only relevant for i.MX
+	select BR2_PACKAGE_GST1_PLUGINS_BASE
+	select BR2_PACKAGE_IMX_LIB
+	select BR2_PACKAGE_LIBFSLPARSER
+	select BR2_PACKAGE_LIBFSLCODEC
+	help
+	  GStreamer-1.x plugins for hardware-accelerated audio and video
+	  parsers and codecs on i.MX6 platform. It requires a kernel that
+	  includes the i.MX6 specific headers to be built.
+
+	  To use the VPU, its firmware blob must be installed as well. This
+	  can be found in the firmware-imx package in the "Hardware handling"
+	  menu.
+
+	  https://github.com/Freescale/gstreamer-imx
package/gstreamer1/gstreamer1-imx/gstreamer1-imx-0001-Add-kernel-headers-include-path-to-src-v4l2src-compi.patch new file +31 -0
new file mode 100644
index 0000000..48e2c16
@@ -0,0 +1,31 @@
+From 107767b506de69692436205c04a002e5de0f7bee Mon Sep 17 00:00:00 2001
+From: Peter Seiderer <[email protected]>
+Date: Sat, 22 Feb 2014 23:22:26 +0100
+Subject: [PATCH] Add kernel headers include path to src/v4l2src compile.
+
+Fixes buildroot compile with newer sysroot kernel headers
+(> 3.10 because of VIDIOC_DBG_G_CHIP_IDENT ioctl removale).
+
+Signed-off-by: Peter Seiderer <[email protected]>
+---
+ src/v4l2src/wscript | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/v4l2src/wscript b/src/v4l2src/wscript
+index 0b8fbb1..3013ba7 100644
+--- a/src/v4l2src/wscript
++++ b/src/v4l2src/wscript
+@@ -2,7 +2,9 @@
+ 
+ 
+ def configure(conf):
+-	pass
++	import os
++	if conf.options.kernel_headers:
++		conf.env.append_value('INCLUDES', [os.path.abspath(os.path.expanduser(conf.options.kernel_headers))])
+ 
+ 
+ def build(bld):
+-- 
+1.8.1.4
+
package/gstreamer1/gstreamer1-imx/gstreamer1-imx.mk new file +36 -0
new file mode 100644
index 0000000..91dab48
@@ -0,0 +1,36 @@
+################################################################################
+#
+# gstreamer1-imx
+#
+################################################################################
+
+GSTREAMER1_IMX_VERSION = 0.9.3
+GSTREAMER1_IMX_SITE = $(call github,Freescale,gstreamer-imx,$(GSTREAMER1_IMX_VERSION))
+
+GSTREAMER1_IMX_LICENSE = LGPLv2+
+GSTREAMER1_IMX_LICENSE_FILES = LICENSE
+
+GSTREAMER1_IMX_DEPENDENCIES = gstreamer1 gst1-plugins-base libfslvpuwrap \
+	imx-lib libfslparser libfslcodec
+
+# needs access to imx-specific kernel headers
+GSTREAMER1_IMX_DEPENDENCIES += linux
+
+define GSTREAMER1_IMX_CONFIGURE_CMDS
+	(cd $(@D); \
+		$(TARGET_CONFIGURE_OPTS) \
+		./waf configure \
+		--prefix=/usr \
+		--kernel-headers=$(LINUX_DIR)/include \
+	)
+endef
+
+define GSTREAMER1_IMX_BUILD_CMDS
+       (cd $(@D); ./waf build -j $(PARALLEL_JOBS))
+endef
+
+define GSTREAMER1_IMX_INSTALL_TARGET_CMDS
+       (cd $(@D); ./waf --destdir=$(TARGET_DIR) install)
+endef
+
+$(eval $(generic-package))
Signature · 1 line
1.8.1.4
#1 lore raw

PATCH v2 1/1 gstreamer1-imx: new package

Peter, All,

I've added Gustavo in Cc: for his hindsights on Waf.

On 2014-02-25 22:24 +0100, Peter Seiderer spake thusly:

Quoted 2 lines

Add gstreamer1-imx package (gstreamer-1.x equivalent to gstreamer-0.10/gst-fsl-plugins package).

[--SNIP--]

package/gstreamer1/gstreamer1-imx/Config.in line 6

Quoted 12 lines
package/gstreamer1/gstreamer1-imx/Config.in new file +6 -0
new file mode 100644
index 0000000..5753202
@@ -0,0 +1,21 @@
+comment "gstreamer1-imx needs an imx-specific Linux kernel to be built"
+	depends on BR2_arm && !BR2_LINUX_KERNEL
+
+config BR2_PACKAGE_GSTREAMER1_IMX
+	bool "gstreamer1-imx"
+	depends on BR2_LINUX_KERNEL

This dependency is inherited from imx-lib, so we usually state so like this:
depends on BR2_LINUX_KERNEL # imx-lib

Quoted 7 lines
package/gstreamer1/gstreamer1-imx/gstreamer1-imx.mk new file +1 -0
new file mode 100644
index 0000000..91dab48
@@ -0,0 +1,36 @@
+################################################################################

package/gstreamer1/gstreamer1-imx/gstreamer1-imx.mk line 11

Quoted 10 lines
package/gstreamer1/gstreamer1-imx/gstreamer1-imx.mk new file +10 -0
+#
+# gstreamer1-imx
+#
+################################################################################
+
+GSTREAMER1_IMX_VERSION = 0.9.3
+GSTREAMER1_IMX_SITE = $(call github,Freescale,gstreamer-imx,$(GSTREAMER1_IMX_VERSION))
+
+GSTREAMER1_IMX_LICENSE = LGPLv2+
+GSTREAMER1_IMX_LICENSE_FILES = LICENSE

Yes, in case someone wonders, it is indeed the Library GPL, not the Lesser GPL, so it is indeed LGPLv2+.

package/gstreamer1/gstreamer1-imx/gstreamer1-imx.mk line 13

Quoted 1 line
package/gstreamer1/gstreamer1-imx/gstreamer1-imx.mk new file +1 -0
+GSTREAMER1_IMX_DEPENDENCIES = gstreamer1 gst1-plugins-base libfslvpuwrap \

You forgot to add a 'depends on BR2_PACKAGE_LIBFSLVPUWRAP' in the Config.in.

Quoted 6 lines
package/gstreamer1/gstreamer1-imx/gstreamer1-imx.mk new file +6 -0
+	imx-lib libfslparser libfslcodec
+
+# needs access to imx-specific kernel headers
+GSTREAMER1_IMX_DEPENDENCIES += linux
+
+define GSTREAMER1_IMX_CONFIGURE_CMDS

package/gstreamer1/gstreamer1-imx/gstreamer1-imx.mk line 29

Quoted 10 lines
package/gstreamer1/gstreamer1-imx/gstreamer1-imx.mk new file +10 -0
+	(cd $(@D); \
+		$(TARGET_CONFIGURE_OPTS) \
+		./waf configure \
+		--prefix=/usr \
+		--kernel-headers=$(LINUX_DIR)/include \
+	)
+endef
+
+define GSTREAMER1_IMX_BUILD_CMDS
+       (cd $(@D); ./waf build -j $(PARALLEL_JOBS))

Waf is known to have lotta isue when cross-compiling. Is that really working correctly?

Fortunately, this is only supposed to ever be run for an ARM target, so maybe they were not really concerned of making it really cross-compile friendly, as long as it works in these specific comditions.

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#2 lore raw

PATCH v2 1/1 gstreamer1-imx: new package

On 03/03/2014 05:53 PM, Yann E. MORIN wrote:

Hi all.

Quoted 9 lines

package/gstreamer1/gstreamer1-imx/gstreamer1-imx.mk line 29

Quoted 2 lines
package/gstreamer1/gstreamer1-imx/gstreamer1-imx.mk new file +2 -0
+define GSTREAMER1_IMX_BUILD_CMDS
+       (cd $(@D); ./waf build -j $(PARALLEL_JOBS))

Waf is known to have lotta isue when cross-compiling. Is that really working correctly?

Fortunately, this is only supposed to ever be run for an ARM target, so maybe they were not really concerned of making it really cross-compile friendly, as long as it works in these specific comditions.

Waf makes no distinction between host and target tools.
That being said if the wscript doesn't want to execute cross-tests (intended for the target) or need to build special host tools as part of the build process, then it's possible it works.
Regards.