Skip to contentSkip to conversation

gst1-imx: bump version to 0.12.0

PATCH Superseded Gary Bisson 4 participants 13 messages Feb 1, 2016 – Feb 17, 2016 Arm i.MX and Layerscape

v2 of 4 Superseded Latest is v4 →

lore
Share & tools
lore
#0 lore raw

v2 cover gst1-imx: bump version to 0.12.0

Hi all,

This series is the follow-up of the previous update of Freescale packages.
http://lists.busybox.net/pipermail/buildroot/2016-January/150904.html

It takes the following comments into account:
http://lists.busybox.net/pipermail/buildroot/2016-February/151316.html
http://lists.busybox.net/pipermail/buildroot/2016-February/151318.html

Thanks,
Gary

Gary Bisson (2):
libimxvpuapi: add new package
gst1-imx: bump to version 0.12.0

 package/Config.in                         |  1 +
 package/gstreamer1/gst1-imx/Config.in     | 58 ++++++++++++++++++++++++++-----
 package/gstreamer1/gst1-imx/gst1-imx.hash |  2 ++
 package/gstreamer1/gst1-imx/gst1-imx.mk   | 15 ++++++--
 package/libimxvpuapi/Config.in            | 12 +++++++
 package/libimxvpuapi/libimxvpuapi.hash    |  2 ++
 package/libimxvpuapi/libimxvpuapi.mk      | 35 +++++++++++++++++++
 7 files changed, 114 insertions(+), 11 deletions(-)
 create mode 100644 package/gstreamer1/gst1-imx/gst1-imx.hash
 create mode 100644 package/libimxvpuapi/Config.in
 create mode 100644 package/libimxvpuapi/libimxvpuapi.hash
 create mode 100644 package/libimxvpuapi/libimxvpuapi.mk
Signature · 1 line
2.6.4
#1 lore raw

PATCH v2 1/2 libimxvpuapi: add new package

This is a library for using the i.MX6 VPU. It is an alternative to libfslvpuwrap, hosted on Github, and has an API that features several improvements over libfslvpuwrap, which include:

* User-defined context information associated with input frames, which is passed on to corresponding output frames (to be able to identify which input frame produced which output frame)
* Groundwork for future DMA-BUF/BMM/ION/CMA allocator integration, using file descriptors instead of physical addresses
* Indicators for when it is safe to try to decode frames, which is critical in multi-threaded playback cases
* Simplified, higher-level JPEG en/decoding API, based on the VPU MJPEG codec; useful for picture viewing without the extra boilerplate for VPU-based en/decoding

Changelog 0.10.0 -> 0.10.1:
- add debian packaging files
- update waf to version 1.8.16
- add workaround in wscript to prevent stale pkg-config .pc files
- fix memory leak by adding missing IOFreeVirtMem() call in vpulib backend

This patch is based on the Yocto equivalent:
https://github.com/Freescale/meta-fsl-arm/commit/e519d6c
https://github.com/Freescale/meta-fsl-arm/commit/1dd6a5b

This package has been implicitely tested through gstreamer as the plugins rely on it for vpu decoding:

 # gst-launch-1.0 playbin uri=file:///root/tears_of_steel_1080p.webm

---

Changelog v1->v2:
- add hash file
- add upstream URL
- change license to LGPLv2.1+

Thanks,
Gary

---
 package/Config.in                      |  1 +
 package/libimxvpuapi/Config.in         | 12 ++++++++++++
 package/libimxvpuapi/libimxvpuapi.hash |  2 ++
 package/libimxvpuapi/libimxvpuapi.mk   | 35 ++++++++++++++++++++++++++++++++++
 4 files changed, 50 insertions(+)
 create mode 100644 package/libimxvpuapi/Config.in
 create mode 100644 package/libimxvpuapi/libimxvpuapi.hash
 create mode 100644 package/libimxvpuapi/libimxvpuapi.mk
package/Config.in +1 -0
index 09c2b40..d3e5e30 100644
@@ -1033,6 +1033,7 @@ menu "Multimedia"
 	source "package/libfslparser/Config.in"
 	source "package/libfslvpuwrap/Config.in"
 	source "package/libhdhomerun/Config.in"
+	source "package/libimxvpuapi/Config.in"
 	source "package/libmatroska/Config.in"
 	source "package/libmms/Config.in"
 	source "package/libmpeg2/Config.in"
package/libimxvpuapi/Config.in new file +12 -0
new file mode 100644
index 0000000..a48e441
@@ -0,0 +1,12 @@
+config BR2_PACKAGE_LIBIMXVPUAPI
+	bool "libimxvpuapi"
+	depends on BR2_arm # Only relevant for i.MX
+	select BR2_PACKAGE_FREESCALE_IMX
+	select BR2_PACKAGE_IMX_VPU
+	help
+	  This library provides an API for using the iMX6 VPU video engine. It
+	  is an alternative to Freescale's VPU wrapper. Both the wrapper and
+	  this library are layered on top of imx-vpu, the low-level iMX6 VPU
+	  interface.
+
+	  https://github.com/Freescale/libimxvpuapi
package/libimxvpuapi/libimxvpuapi.hash new file +2 -0
new file mode 100644
index 0000000..fd90a20
@@ -0,0 +1,2 @@
+# locally computed hash
+sha256 8d7aeed88c06fda44318cef9565ae47b86461bd309908b1103a7974ed0822a8d  libimxvpuapi-0.10.1.tar.gz
package/libimxvpuapi/libimxvpuapi.mk new file +35 -0
new file mode 100644
index 0000000..8e62682
@@ -0,0 +1,35 @@
+################################################################################
+#
+# libimxvpuapi
+#
+################################################################################
+
+LIBIMXVPUAPI_VERSION = 0.10.1
+LIBIMXVPUAPI_SITE = $(call github,Freescale,libimxvpuapi,$(LIBIMXVPUAPI_VERSION))
+LIBIMXVPUAPI_LICENSE = LGPLv2.1+
+LIBIMXVPUAPI_LICENSE_FILES = LICENSE
+LIBIMXVPUAPI_DEPENDENCIES = host-pkgconf host-python imx-vpu
+LIBIMXVPUAPI_INSTALL_STAGING = YES
+
+define LIBIMXVPUAPI_CONFIGURE_CMDS
+	cd $(@D); \
+	$(TARGET_CONFIGURE_OPTS) $(HOST_DIR)/usr/bin/python2 ./waf configure \
+		--prefix=/usr
+endef
+
+define LIBIMXVPUAPI_BUILD_CMDS
+	cd $(@D); \
+	$(HOST_DIR)/usr/bin/python2 ./waf build -j $(PARALLEL_JOBS)
+endef
+
+define LIBIMXVPUAPI_INSTALL_STAGING_CMDS
+	cd $(@D); \
+	$(HOST_DIR)/usr/bin/python2 ./waf --destdir=$(STAGING_DIR) install
+endef
+
+define LIBIMXVPUAPI_INSTALL_TARGET_CMDS
+	cd $(@D); \
+	$(HOST_DIR)/usr/bin/python2 ./waf --destdir=$(TARGET_DIR) install
+endef
+
+$(eval $(generic-package))
Signature · 1 line
2.6.4
#2 lore raw

PATCH v2 1/2 libimxvpuapi: add new package

Hello Gary,

Quoted 103 lines · Gary Bisson

This is a library for using the i.MX6 VPU. It is an alternative to libfslvpuwrap, hosted on Github, and has an API that features several improvements over libfslvpuwrap, which include:

* User-defined context information associated with input frames, which is passed on to corresponding output frames (to be able to identify which input frame produced which output frame)
* Groundwork for future DMA-BUF/BMM/ION/CMA allocator integration, using file descriptors instead of physical addresses
* Indicators for when it is safe to try to decode frames, which is critical in multi-threaded playback cases
* Simplified, higher-level JPEG en/decoding API, based on the VPU MJPEG codec; useful for picture viewing without the extra boilerplate for VPU-based en/decoding

Changelog 0.10.0 -> 0.10.1:
- add debian packaging files
- update waf to version 1.8.16
- add workaround in wscript to prevent stale pkg-config .pc files
- fix memory leak by adding missing IOFreeVirtMem() call in vpulib backend

This patch is based on the Yocto equivalent:
https://github.com/Freescale/meta-fsl-arm/commit/e519d6c
https://github.com/Freescale/meta-fsl-arm/commit/1dd6a5b

This package has been implicitely tested through gstreamer as the plugins rely on it for vpu decoding:

 # gst-launch-1.0 playbin uri=file:///root/tears_of_steel_1080p.webm

---

Changelog v1->v2:
- add hash file
- add upstream URL
- change license to LGPLv2.1+

Thanks,
Gary

---
 package/Config.in                      |  1 +
 package/libimxvpuapi/Config.in         | 12 ++++++++++++
 package/libimxvpuapi/libimxvpuapi.hash |  2 ++
 package/libimxvpuapi/libimxvpuapi.mk   | 35 ++++++++++++++++++++++++++++++++++
 4 files changed, 50 insertions(+)
 create mode 100644 package/libimxvpuapi/Config.in
 create mode 100644 package/libimxvpuapi/libimxvpuapi.hash
 create mode 100644 package/libimxvpuapi/libimxvpuapi.mk
package/Config.in +1 -0
index 09c2b40..d3e5e30 100644
@@ -1033,6 +1033,7 @@ menu "Multimedia"
 	source "package/libfslparser/Config.in"
 	source "package/libfslvpuwrap/Config.in"
 	source "package/libhdhomerun/Config.in"
+	source "package/libimxvpuapi/Config.in"
 	source "package/libmatroska/Config.in"
 	source "package/libmms/Config.in"
 	source "package/libmpeg2/Config.in"
package/libimxvpuapi/Config.in new file +12 -0
new file mode 100644
index 0000000..a48e441
@@ -0,0 +1,12 @@
+config BR2_PACKAGE_LIBIMXVPUAPI
+	bool "libimxvpuapi"
+	depends on BR2_arm # Only relevant for i.MX
+	select BR2_PACKAGE_FREESCALE_IMX
+	select BR2_PACKAGE_IMX_VPU
+	help
+	  This library provides an API for using the iMX6 VPU video engine. It
+	  is an alternative to Freescale's VPU wrapper. Both the wrapper and
+	  this library are layered on top of imx-vpu, the low-level iMX6 VPU
+	  interface.
+
+	  https://github.com/Freescale/libimxvpuapi
package/libimxvpuapi/libimxvpuapi.hash new file +2 -0
new file mode 100644
index 0000000..fd90a20
@@ -0,0 +1,2 @@
+# locally computed hash
+sha256 8d7aeed88c06fda44318cef9565ae47b86461bd309908b1103a7974ed0822a8d  libimxvpuapi-0.10.1.tar.gz
package/libimxvpuapi/libimxvpuapi.mk new file +8 -0
new file mode 100644
index 0000000..8e62682
@@ -0,0 +1,35 @@
+################################################################################
+#
+# libimxvpuapi
+#
+################################################################################
+
+LIBIMXVPUAPI_VERSION = 0.10.1
+LIBIMXVPUAPI_SITE = $(call github,Freescale,libimxvpuapi,$(LIBIMXVPUAPI_VERSION))

package/libimxvpuapi/libimxvpuapi.mk line 18

Quoted 10 lines
package/libimxvpuapi/libimxvpuapi.mk new file +10 -0
+LIBIMXVPUAPI_LICENSE = LGPLv2.1+
+LIBIMXVPUAPI_LICENSE_FILES = LICENSE
+LIBIMXVPUAPI_DEPENDENCIES = host-pkgconf host-python imx-vpu
+LIBIMXVPUAPI_INSTALL_STAGING = YES
+
+define LIBIMXVPUAPI_CONFIGURE_CMDS
+	cd $(@D); \
+	$(TARGET_CONFIGURE_OPTS) $(HOST_DIR)/usr/bin/python2 ./waf configure \
+		--prefix=/usr
+endef

On my x86_64 (OpenSUSE-13.2) host build the libs and libimxvpuapi.pc are installed into $(STAGING_DIR)/usr/lib64 and $(TARGET_DIR)/usr/lib64.

To be usable by eg. gst1-imx the install path should be $(STAGING_DIR)/usr/lib and $(TARGET_DIR)/usr/lib. To achieve this I added '--libdir=/usr/lib' to overwrite the default '/usr/lib64':

package/libimxvpuapi/libimxvpuapi.mk +1 -1
@@ -14,7 +14,7 @@ LIBIMXVPUAPI_INSTALL_STAGING = YES
 define LIBIMXVPUAPI_CONFIGURE_CMDS
        cd $(@D); \
        $(TARGET_CONFIGURE_OPTS) $(HOST_DIR)/usr/bin/python2 ./waf configure \
-               --prefix=/usr
+               --prefix=/usr --libdir=/usr/lib
 endef
 
 define LIBIMXVPUAPI_BUILD_CMDS

With this you can add my

for '...! imxvpudec ! imxipuvideosink'

But I had problems using the imxeglvivsink element and
with qt5 eglfs, suspecting your 'Update most Freescale packages' patch series (using buildroot-2016.02-rc1 with your '[PATCH v3 0/2] gst1-imx: bump version to 0.12.0' patches on top), but did not find time yet to investigate further...

Regards,
Peter

Quoted 17 lines
package/libimxvpuapi/libimxvpuapi.mk new file +17 -0
+
+define LIBIMXVPUAPI_BUILD_CMDS
+	cd $(@D); \
+	$(HOST_DIR)/usr/bin/python2 ./waf build -j $(PARALLEL_JOBS)
+endef
+
+define LIBIMXVPUAPI_INSTALL_STAGING_CMDS
+	cd $(@D); \
+	$(HOST_DIR)/usr/bin/python2 ./waf --destdir=$(STAGING_DIR) install
+endef
+
+define LIBIMXVPUAPI_INSTALL_TARGET_CMDS
+	cd $(@D); \
+	$(HOST_DIR)/usr/bin/python2 ./waf --destdir=$(TARGET_DIR) install
+endef
+
+$(eval $(generic-package))
#3 lore raw

PATCH v2 1/2 libimxvpuapi: add new package

Peter, All,

Quoted 22 lines · Peter Seiderer

Hello Gary,

Review

Quoted 13 lines · Gary Bisson

<snip>

(quoted diff) +12 -0
+LIBIMXVPUAPI_VERSION = 0.10.1
+LIBIMXVPUAPI_SITE = $(call github,Freescale,libimxvpuapi,$(LIBIMXVPUAPI_VERSION))
+LIBIMXVPUAPI_LICENSE = LGPLv2.1+
+LIBIMXVPUAPI_LICENSE_FILES = LICENSE
+LIBIMXVPUAPI_DEPENDENCIES = host-pkgconf host-python imx-vpu
+LIBIMXVPUAPI_INSTALL_STAGING = YES
+
+define LIBIMXVPUAPI_CONFIGURE_CMDS
+     cd $(@D); \
+     $(TARGET_CONFIGURE_OPTS) $(HOST_DIR)/usr/bin/python2 ./waf configure \
+             --prefix=/usr
+endef

On my x86_64 (OpenSUSE-13.2) host build the libs and libimxvpuapi.pc are installed into $(STAGING_DIR)/usr/lib64 and $(TARGET_DIR)/usr/lib64.

Quoted 3 lines

To be usable by eg. gst1-imx the install path should be $(STAGING_DIR)/usr/lib and $(TARGET_DIR)/usr/lib. To achieve this I added '--libdir=/usr/lib' to overwrite the default '/usr/lib64':

I'd like to understand why it behaves like this with your setup. I'm using a 64-bit OS too (Debian Testing) but the libs go to /usr/lib as expected.

Could you pastebin the full log of libimxvpuapi build, your buildroot configuration as well as you 'env'?

Quoted 13 lines
package/libimxvpuapi/libimxvpuapi.mk +1 -1
@@ -14,7 +14,7 @@ LIBIMXVPUAPI_INSTALL_STAGING = YES
 define LIBIMXVPUAPI_CONFIGURE_CMDS
        cd $(@D); \
        $(TARGET_CONFIGURE_OPTS) $(HOST_DIR)/usr/bin/python2 ./waf configure \
-               --prefix=/usr
+               --prefix=/usr --libdir=/usr/lib
 endef
 
 define LIBIMXVPUAPI_BUILD_CMDS
Quoted 5 lines

With this you can add my

for '...! imxvpudec ! imxipuvideosink'

Ok, I'll do that once I understand the difference which requires this libdir argument.

Quoted 4 lines

But I had problems using the imxeglvivsink element and
with qt5 eglfs, suspecting your 'Update most Freescale packages' patch series (using buildroot-2016.02-rc1 with your '[PATCH v3 0/2] gst1-imx: bump version to 0.12.0' patches on top), but did not find time yet to investigate further...

Does a basic gstreamer pipeline work?

# gst-launch-1.0 videotestsrc ! imxeglvivsink

If not there's no wonder qt5 doesn't like it. I haven't tried qt5 but I'm sure the gstreamer imxeglvivsink does work.

In case you've enabled BR2_PACKAGE_KERNEL_MODULE_IMX_GPU_VIV, you might need to load the Galcore module manually in case you don't have eudev for instance:

# insmod /lib/modules/3.14.28/extra/galcore.ko

Regards,
Gary

#4 lore raw

PATCH v2 1/2 libimxvpuapi: add new package

Hello Gary,

Quoted 5 lines

Gesendet: Dienstag, 16. Februar 2016 um 23:57 Uhr
Von: "Gary Bisson" <[email protected]>
An: "Peter Seiderer" <[email protected]>
Cc: buildroot at busybox.net, "Thomas Petazzoni" <[email protected]>
Betreff: Re: [Buildroot] [PATCH v2 1/2] libimxvpuapi: add new package

[snip]

Quoted 9 lines
Quoted 5 lines

But I had problems using the imxeglvivsink element and
with qt5 eglfs, suspecting your 'Update most Freescale packages' patch series (using buildroot-2016.02-rc1 with your '[PATCH v3 0/2] gst1-imx: bump version to 0.12.0' patches on top), but did not find time yet to investigate further...

Does a basic gstreamer pipeline work?

# gst-launch-1.0 videotestsrc ! imxeglvivsink

No:

$ GST_DEBUG=*:3 gst-launch-1.0 videotestsrc ! imxeglvivsink
Setting pipeline to PAUSED ...
mxc_sdc_fb fb.20: 1920x1080 h_sync,r,l: 44,88,148  v_sync,l,u: 5,4,36 pixclock=148500000 Hz
imx-ipuv3 2800000.ipu: try ipu internal clk
imx-ipuv3 2800000.ipu: disp=0, pixel_clk=148500000 148500000 parent=148500000 div=1
0:00:00.229253000   245   0x9d1ee0 ERROR      imxeglplatform_fb egl_platform_fb.c:72:gst_imx_egl_viv_sink_egl_platform_create: eglGetDisplay failed: bad alloc
ERROR: Pipeline doesn't want to pause.
Setting pipeline to NULL ...
Freeing pipeline ...
mxc_sdc_fb fb.20: 1920x1080 h_sync,r,l: 44,88,148  v_sync,l,u: 5,4,36 pixclock=148500000 Hz
imx-ipuv3 2800000.ipu: try ipu internal clk
imx-ipuv3 2800000.ipu: disp=0, pixel_clk=148500000 148500000 parent=148500000 div=1

Using Buildroot-2016-02-rc1 with
https://patchwork.ozlabs.org/patch/577011/mbox/
https://patchwork.ozlabs.org/patch/577012/mbox/
and 'qt5tools: new package' patches on top with the following defconfig (based on the original nitrogen6x_defconfig config):

BR2_arm=y
BR2_cortex_a9=y
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_14=y
BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
BR2_GLIBC_VERSION_2_22=y
BR2_BINUTILS_VERSION_2_25_X=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
BR2_TARGET_GENERIC_GETTY_PORT="ttymxc1"
BR2_ROOTFS_POST_BUILD_SCRIPT="board/boundarydevices/nitrogen6x/post-build.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/boundarydevices/nitrogen6x/post-image.sh"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_TARBALL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux-imx6/tarball/f4c8395/linux-imx6-f4c8395.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="boundary"
BR2_LINUX_KERNEL_ZIMAGE=y
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6dl-nit6xlite imx6dl-nitrogen6_vm imx6dl-nitrogen6x imx6q-nitrogen6x imx6q-nitrogen6_max imx6q-sabrelite" BR2_LINUX_KERNEL_INSTALL_TARGET=y
BR2_PACKAGE_GSTREAMER1=y
BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP=y
BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOTESTSRC=y
BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOTESTSRC=y
BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ALSA=y
BR2_PACKAGE_GST1_PLUGINS_GOOD=y
BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2=y
BR2_PACKAGE_GST1_PLUGINS_BAD=y
BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOPARSERS=y
BR2_PACKAGE_GST1_PLUGINS_UGLY=y
BR2_PACKAGE_GST1_IMX=y
BR2_PACKAGE_BINUTILS=y
BR2_PACKAGE_DEJAVU=y
BR2_PACKAGE_QT5=y
BR2_PACKAGE_QT5BASE_LICENSE_APPROVED=y
BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM=y
BR2_PACKAGE_QT5BASE_OPENGL_LIB=y
BR2_PACKAGE_QT5BASE_LINUXFB=y
BR2_PACKAGE_QT5BASE_EGLFS=y
BR2_PACKAGE_QT5BASE_DEFAULT_QPA="eglfs"
BR2_PACKAGE_QT5BASE_FONTCONFIG=y
BR2_PACKAGE_QT5BASE_GIF=y
BR2_PACKAGE_QT5BASE_JPEG=y
BR2_PACKAGE_QT5BASE_PNG=y
BR2_PACKAGE_QT5GRAPHICALEFFECTS=y
BR2_PACKAGE_QT5MULTIMEDIA=y
BR2_PACKAGE_QT5QUICKCONTROLS=y
BR2_PACKAGE_QT5SERIALPORT=y
BR2_PACKAGE_QT5TOOLS=y
BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS=y
BR2_PACKAGE_QT5WEBSOCKETS=y
BR2_PACKAGE_QT5SCRIPT=y
BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q=y
BR2_PACKAGE_IMX_LIB=y
BR2_PACKAGE_IMX_GPU_VIV=y
BR2_PACKAGE_OPENSSL=y
BR2_PACKAGE_LIBV4L=y
BR2_PACKAGE_LIBV4L_UTILS=y
BR2_PACKAGE_LIBIMXVPUAPI=y
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BOARDNAME="nitrogen6q"
BR2_TARGET_UBOOT_CUSTOM_TARBALL=y BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="http://github.com/boundarydevices/u-boot-imx6/tarball/a4070a8/u-boot-a4070a8.tar.gz" BR2_TARGET_UBOOT_FORMAT_IMX=y
BR2_PACKAGE_HOST_GENIMAGE=y
BR2_PACKAGE_HOST_UBOOT_TOOLS=y

Quoted 3 lines

If not there's no wonder qt5 doesn't like it. I haven't tried qt5 but I'm sure the gstreamer imxeglvivsink does work.

My last working version was based on buildroot-2015.11.1 plus 'qt5: bump version to 5.5.1' and 'qt5tools: new package' on top...

Quoted 4 lines

In case you've enabled BR2_PACKAGE_KERNEL_MODULE_IMX_GPU_VIV, you might need to load the Galcore module manually in case you don't have eudev for instance:

# insmod /lib/modules/3.14.28/extra/galcore.ko

No, working with boundarydevices linux-imx6-f4c8395 and original boundary config and there is a '/dev/galcore' entry on the target...

Regards,
Peter

Quoted 4 lines

Regards,
Gary

#5 lore raw

PATCH v2 1/2 libimxvpuapi: add new package

Hi Peter,

Quoted 36 lines · Peter Seiderer

Hello Gary,

Quoted 5 lines

Gesendet: Dienstag, 16. Februar 2016 um 23:57 Uhr
Von: "Gary Bisson" <[email protected]>
An: "Peter Seiderer" <[email protected]>
Cc: buildroot at busybox.net, "Thomas Petazzoni" <[email protected]>
Betreff: Re: [Buildroot] [PATCH v2 1/2] libimxvpuapi: add new package

[snip]

Quoted 9 lines
Quoted 5 lines

But I had problems using the imxeglvivsink element and
with qt5 eglfs, suspecting your 'Update most Freescale packages' patch series (using buildroot-2016.02-rc1 with your '[PATCH v3 0/2] gst1-imx: bump version to 0.12.0' patches on top), but did not find time yet to investigate further...

Does a basic gstreamer pipeline work?

# gst-launch-1.0 videotestsrc ! imxeglvivsink

No:

$ GST_DEBUG=*:3 gst-launch-1.0 videotestsrc ! imxeglvivsink
Setting pipeline to PAUSED ...
mxc_sdc_fb fb.20: 1920x1080 h_sync,r,l: 44,88,148  v_sync,l,u: 5,4,36 pixclock=148500000 Hz
imx-ipuv3 2800000.ipu: try ipu internal clk
imx-ipuv3 2800000.ipu: disp=0, pixel_clk=148500000 148500000 parent=148500000 div=1
0:00:00.229253000   245   0x9d1ee0 ERROR      imxeglplatform_fb egl_platform_fb.c:72:gst_imx_egl_viv_sink_egl_platform_create: eglGetDisplay failed: bad alloc
ERROR: Pipeline doesn't want to pause.
Setting pipeline to NULL ...
Freeing pipeline ...
mxc_sdc_fb fb.20: 1920x1080 h_sync,r,l: 44,88,148  v_sync,l,u: 5,4,36 pixclock=148500000 Hz
imx-ipuv3 2800000.ipu: try ipu internal clk
imx-ipuv3 2800000.ipu: disp=0, pixel_clk=148500000 148500000 parent=148500000 div=1
Quoted 3 lines

Using Buildroot-2016-02-rc1 with
https://patchwork.ozlabs.org/patch/577011/mbox/
https://patchwork.ozlabs.org/patch/577012/mbox/

The setup I tried yesterday was:
- Buildroot master commit f3fac0dcfdf (post 2016.02-rc1).
- Plus the two patches you mention above

Quoted 78 lines

and 'qt5tools: new package' patches on top with the following defconfig (based on the original nitrogen6x_defconfig config):

BR2_arm=y
BR2_cortex_a9=y
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_14=y
BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
BR2_GLIBC_VERSION_2_22=y
BR2_BINUTILS_VERSION_2_25_X=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
BR2_TARGET_GENERIC_GETTY_PORT="ttymxc1"
BR2_ROOTFS_POST_BUILD_SCRIPT="board/boundarydevices/nitrogen6x/post-build.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/boundarydevices/nitrogen6x/post-image.sh"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_TARBALL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux-imx6/tarball/f4c8395/linux-imx6-f4c8395.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="boundary"
BR2_LINUX_KERNEL_ZIMAGE=y
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6dl-nit6xlite imx6dl-nitrogen6_vm imx6dl-nitrogen6x imx6q-nitrogen6x imx6q-nitrogen6_max imx6q-sabrelite" BR2_LINUX_KERNEL_INSTALL_TARGET=y
BR2_PACKAGE_GSTREAMER1=y
BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP=y
BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOTESTSRC=y
BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOTESTSRC=y
BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ALSA=y
BR2_PACKAGE_GST1_PLUGINS_GOOD=y
BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2=y
BR2_PACKAGE_GST1_PLUGINS_BAD=y
BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOPARSERS=y
BR2_PACKAGE_GST1_PLUGINS_UGLY=y
BR2_PACKAGE_GST1_IMX=y
BR2_PACKAGE_BINUTILS=y
BR2_PACKAGE_DEJAVU=y
BR2_PACKAGE_QT5=y
BR2_PACKAGE_QT5BASE_LICENSE_APPROVED=y
BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM=y
BR2_PACKAGE_QT5BASE_OPENGL_LIB=y
BR2_PACKAGE_QT5BASE_LINUXFB=y
BR2_PACKAGE_QT5BASE_EGLFS=y
BR2_PACKAGE_QT5BASE_DEFAULT_QPA="eglfs"
BR2_PACKAGE_QT5BASE_FONTCONFIG=y
BR2_PACKAGE_QT5BASE_GIF=y
BR2_PACKAGE_QT5BASE_JPEG=y
BR2_PACKAGE_QT5BASE_PNG=y
BR2_PACKAGE_QT5GRAPHICALEFFECTS=y
BR2_PACKAGE_QT5MULTIMEDIA=y
BR2_PACKAGE_QT5QUICKCONTROLS=y
BR2_PACKAGE_QT5SERIALPORT=y
BR2_PACKAGE_QT5TOOLS=y
BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS=y
BR2_PACKAGE_QT5WEBSOCKETS=y
BR2_PACKAGE_QT5SCRIPT=y
BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q=y
BR2_PACKAGE_IMX_LIB=y
BR2_PACKAGE_IMX_GPU_VIV=y
BR2_PACKAGE_OPENSSL=y
BR2_PACKAGE_LIBV4L=y
BR2_PACKAGE_LIBV4L_UTILS=y
BR2_PACKAGE_LIBIMXVPUAPI=y
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BOARDNAME="nitrogen6q"
BR2_TARGET_UBOOT_CUSTOM_TARBALL=y BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="http://github.com/boundarydevices/u-boot-imx6/tarball/a4070a8/u-boot-a4070a8.tar.gz" BR2_TARGET_UBOOT_FORMAT_IMX=y
BR2_PACKAGE_HOST_GENIMAGE=y
BR2_PACKAGE_HOST_UBOOT_TOOLS=y

Quoted 3 lines

If not there's no wonder qt5 doesn't like it. I haven't tried qt5 but I'm sure the gstreamer imxeglvivsink does work.

My last working version was based on buildroot-2015.11.1 plus 'qt5: bump version to 5.5.1' and 'qt5tools: new package' on top...

Quoted 7 lines
Quoted 4 lines

In case you've enabled BR2_PACKAGE_KERNEL_MODULE_IMX_GPU_VIV, you might need to load the Galcore module manually in case you don't have eudev for instance:

# insmod /lib/modules/3.14.28/extra/galcore.ko

No, working with boundarydevices linux-imx6-f4c8395 and original boundary config and there is a '/dev/galcore' entry on the target...

Yes but that is the problem. Please try again with BR2_PACKAGE_KERNEL_MODULE_IMX_GPU_VIV.

As you know, 3D graphics libraries match a specific kernel driver. Since it was an issue for many people, Vivante started to provide a kernel module so you can easily have the latest driver on an older kernel.

Since I've updated the graphics to the latest (5.0.11 p7.1), the driver inside the 3.14.28 kernel is outdated so you need to use the Vivante kernel module. I didn't for the selection of the kernel module when the libraries are selected since some kernels (3.14.52) have the correct driver built-in.

Sorry for the confusion but know that if you want to make sure the driver matches the user-space blobs, always select the Vivante kernel module as I'll make to always update both at the same time.

Regards,
Gary

#6 lore raw

PATCH v2 1/2 libimxvpuapi: add new package

Hello Gary,

Quoted 147 lines

Gesendet: Mittwoch, 17. Februar 2016 um 10:37 Uhr
Von: "Gary Bisson" <[email protected]>
An: "Peter Seiderer" <[email protected]>
Cc: buildroot at busybox.net, "Thomas Petazzoni" <[email protected]>
Betreff: Re: [Buildroot] [PATCH v2 1/2] libimxvpuapi: add new package

Hi Peter,

Quoted 36 lines · Peter Seiderer

Hello Gary,

Quoted 5 lines

Gesendet: Dienstag, 16. Februar 2016 um 23:57 Uhr
Von: "Gary Bisson" <[email protected]>
An: "Peter Seiderer" <[email protected]>
Cc: buildroot at busybox.net, "Thomas Petazzoni" <[email protected]>
Betreff: Re: [Buildroot] [PATCH v2 1/2] libimxvpuapi: add new package

[snip]

Quoted 9 lines
Quoted 5 lines

But I had problems using the imxeglvivsink element and
with qt5 eglfs, suspecting your 'Update most Freescale packages' patch series (using buildroot-2016.02-rc1 with your '[PATCH v3 0/2] gst1-imx: bump version to 0.12.0' patches on top), but did not find time yet to investigate further...

Does a basic gstreamer pipeline work?

# gst-launch-1.0 videotestsrc ! imxeglvivsink

No:

$ GST_DEBUG=*:3 gst-launch-1.0 videotestsrc ! imxeglvivsink
Setting pipeline to PAUSED ...
mxc_sdc_fb fb.20: 1920x1080 h_sync,r,l: 44,88,148  v_sync,l,u: 5,4,36 pixclock=148500000 Hz
imx-ipuv3 2800000.ipu: try ipu internal clk
imx-ipuv3 2800000.ipu: disp=0, pixel_clk=148500000 148500000 parent=148500000 div=1
0:00:00.229253000   245   0x9d1ee0 ERROR      imxeglplatform_fb egl_platform_fb.c:72:gst_imx_egl_viv_sink_egl_platform_create: eglGetDisplay failed: bad alloc
ERROR: Pipeline doesn't want to pause.
Setting pipeline to NULL ...
Freeing pipeline ...
mxc_sdc_fb fb.20: 1920x1080 h_sync,r,l: 44,88,148  v_sync,l,u: 5,4,36 pixclock=148500000 Hz
imx-ipuv3 2800000.ipu: try ipu internal clk
imx-ipuv3 2800000.ipu: disp=0, pixel_clk=148500000 148500000 parent=148500000 div=1
Quoted 3 lines

Using Buildroot-2016-02-rc1 with
https://patchwork.ozlabs.org/patch/577011/mbox/
https://patchwork.ozlabs.org/patch/577012/mbox/

The setup I tried yesterday was:
- Buildroot master commit f3fac0dcfdf (post 2016.02-rc1).
- Plus the two patches you mention above

Quoted 78 lines

and 'qt5tools: new package' patches on top with the following defconfig (based on the original nitrogen6x_defconfig config):

BR2_arm=y
BR2_cortex_a9=y
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_14=y
BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
BR2_GLIBC_VERSION_2_22=y
BR2_BINUTILS_VERSION_2_25_X=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
BR2_TARGET_GENERIC_GETTY_PORT="ttymxc1"
BR2_ROOTFS_POST_BUILD_SCRIPT="board/boundarydevices/nitrogen6x/post-build.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/boundarydevices/nitrogen6x/post-image.sh"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_TARBALL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux-imx6/tarball/f4c8395/linux-imx6-f4c8395.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="boundary"
BR2_LINUX_KERNEL_ZIMAGE=y
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6dl-nit6xlite imx6dl-nitrogen6_vm imx6dl-nitrogen6x imx6q-nitrogen6x imx6q-nitrogen6_max imx6q-sabrelite" BR2_LINUX_KERNEL_INSTALL_TARGET=y
BR2_PACKAGE_GSTREAMER1=y
BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP=y
BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOTESTSRC=y
BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOTESTSRC=y
BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ALSA=y
BR2_PACKAGE_GST1_PLUGINS_GOOD=y
BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2=y
BR2_PACKAGE_GST1_PLUGINS_BAD=y
BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOPARSERS=y
BR2_PACKAGE_GST1_PLUGINS_UGLY=y
BR2_PACKAGE_GST1_IMX=y
BR2_PACKAGE_BINUTILS=y
BR2_PACKAGE_DEJAVU=y
BR2_PACKAGE_QT5=y
BR2_PACKAGE_QT5BASE_LICENSE_APPROVED=y
BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM=y
BR2_PACKAGE_QT5BASE_OPENGL_LIB=y
BR2_PACKAGE_QT5BASE_LINUXFB=y
BR2_PACKAGE_QT5BASE_EGLFS=y
BR2_PACKAGE_QT5BASE_DEFAULT_QPA="eglfs"
BR2_PACKAGE_QT5BASE_FONTCONFIG=y
BR2_PACKAGE_QT5BASE_GIF=y
BR2_PACKAGE_QT5BASE_JPEG=y
BR2_PACKAGE_QT5BASE_PNG=y
BR2_PACKAGE_QT5GRAPHICALEFFECTS=y
BR2_PACKAGE_QT5MULTIMEDIA=y
BR2_PACKAGE_QT5QUICKCONTROLS=y
BR2_PACKAGE_QT5SERIALPORT=y
BR2_PACKAGE_QT5TOOLS=y
BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS=y
BR2_PACKAGE_QT5WEBSOCKETS=y
BR2_PACKAGE_QT5SCRIPT=y
BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q=y
BR2_PACKAGE_IMX_LIB=y
BR2_PACKAGE_IMX_GPU_VIV=y
BR2_PACKAGE_OPENSSL=y
BR2_PACKAGE_LIBV4L=y
BR2_PACKAGE_LIBV4L_UTILS=y
BR2_PACKAGE_LIBIMXVPUAPI=y
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BOARDNAME="nitrogen6q"
BR2_TARGET_UBOOT_CUSTOM_TARBALL=y BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="http://github.com/boundarydevices/u-boot-imx6/tarball/a4070a8/u-boot-a4070a8.tar.gz" BR2_TARGET_UBOOT_FORMAT_IMX=y
BR2_PACKAGE_HOST_GENIMAGE=y
BR2_PACKAGE_HOST_UBOOT_TOOLS=y

Quoted 3 lines

If not there's no wonder qt5 doesn't like it. I haven't tried qt5 but I'm sure the gstreamer imxeglvivsink does work.

My last working version was based on buildroot-2015.11.1 plus 'qt5: bump version to 5.5.1' and 'qt5tools: new package' on top...

Quoted 7 lines
Quoted 4 lines

In case you've enabled BR2_PACKAGE_KERNEL_MODULE_IMX_GPU_VIV, you might need to load the Galcore module manually in case you don't have eudev for instance:

# insmod /lib/modules/3.14.28/extra/galcore.ko

No, working with boundarydevices linux-imx6-f4c8395 and original boundary config and there is a '/dev/galcore' entry on the target...

Yes but that is the problem. Please try again with BR2_PACKAGE_KERNEL_MODULE_IMX_GPU_VIV.

As you know, 3D graphics libraries match a specific kernel driver. Since it was an issue for many people, Vivante started to provide a kernel module so you can easily have the latest driver on an older kernel.

Quoted 6 lines

Since I've updated the graphics to the latest (5.0.11 p7.1), the driver inside the 3.14.28 kernel is outdated so you need to use the Vivante kernel module. I didn't for the selection of the kernel module when the libraries are selected since some kernels (3.14.52) have the correct driver built-in.

Got it now, the missing part was:

BR2_PACKAGE_KERNEL_MODULE_IMX_GPU_VIV=y

Qt5 eglfs and gstreamer imxeglvivsink are working now...

Quoted 4 lines

Sorry for the confusion but know that if you want to make sure the driver matches the user-space blobs, always select the Vivante kernel module as I'll make to always update both at the same time.

Maybe a little hint in board/boundarydevices/nitrogen6x/readme.txt would be useful?

Many thanks for your support...

Regards,
Peter

Quoted 7 lines

Regards,
Gary
_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot

#7 lore raw

PATCH v2 1/2 libimxvpuapi: add new package

Hi Peter,

Quoted 21 lines · Peter Seiderer

Hello Gary,

Quoted 12 lines

<snip>

Quoted 2 lines

No, working with boundarydevices linux-imx6-f4c8395 and original boundary config and there is a '/dev/galcore' entry on the target...

Yes but that is the problem. Please try again with BR2_PACKAGE_KERNEL_MODULE_IMX_GPU_VIV.

As you know, 3D graphics libraries match a specific kernel driver. Since it was an issue for many people, Vivante started to provide a kernel module so you can easily have the latest driver on an older kernel.

Quoted 6 lines

Since I've updated the graphics to the latest (5.0.11 p7.1), the driver inside the 3.14.28 kernel is outdated so you need to use the Vivante kernel module. I didn't for the selection of the kernel module when the libraries are selected since some kernels (3.14.52) have the correct driver built-in.

Quoted 5 lines

Got it now, the missing part was:

BR2_PACKAGE_KERNEL_MODULE_IMX_GPU_VIV=y

Qt5 eglfs and gstreamer imxeglvivsink are working now...

Good to hear!

Quoted 6 lines
Quoted 4 lines

Sorry for the confusion but know that if you want to make sure the driver matches the user-space blobs, always select the Vivante kernel module as I'll make to always update both at the same time.

Maybe a little hint in board/boundarydevices/nitrogen6x/readme.txt would be useful?

Well it is not Nitrogen6x-specific, it applies to all i.MX6 platforms so I'm not sure where would be the best place to give this info apart from the help text. Thomas, any idea on this?

Yocto is forcing the use of the Vivante kernel module, maybe we should do the same but I'm not fond of this approach.

Quoted 1 line

Many thanks for your support...

No problem. Thanks for your valuable feedback!

Regards,
Gary

#8 lore raw

PATCH v2 1/2 libimxvpuapi: add new package

Hello,

Quoted 3 lines · Gary Bisson

Well it is not Nitrogen6x-specific, it applies to all i.MX6 platforms so I'm not sure where would be the best place to give this info apart from the help text. Thomas, any idea on this?

I am not sure where to store such platform-specific information. A new section in the Buildroot manual, perhaps?

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#9 lore raw

PATCH v2 1/2 libimxvpuapi: add new package

In reply to Gary Bisson
Quoted 37 lines · Gary Bisson

Hi Peter,

Quoted 21 lines · Peter Seiderer

Hello Gary,

Quoted 12 lines

<snip>

Quoted 2 lines

No, working with boundarydevices linux-imx6-f4c8395 and original boundary config and there is a '/dev/galcore' entry on the target...

Yes but that is the problem. Please try again with BR2_PACKAGE_KERNEL_MODULE_IMX_GPU_VIV.

As you know, 3D graphics libraries match a specific kernel driver. Since it was an issue for many people, Vivante started to provide a kernel module so you can easily have the latest driver on an older kernel.

Quoted 6 lines

Since I've updated the graphics to the latest (5.0.11 p7.1), the driver inside the 3.14.28 kernel is outdated so you need to use the Vivante kernel module. I didn't for the selection of the kernel module when the libraries are selected since some kernels (3.14.52) have the correct driver built-in.

Quoted 5 lines

Got it now, the missing part was:

BR2_PACKAGE_KERNEL_MODULE_IMX_GPU_VIV=y

Qt5 eglfs and gstreamer imxeglvivsink are working now...

Good to hear!

Quoted 5 lines
Quoted 4 lines

Sorry for the confusion but know that if you want to make sure the driver matches the user-space blobs, always select the Vivante kernel module as I'll make to always update both at the same time.

Quoted 8 lines
Quoted 1 line

Maybe a little hint in board/boundarydevices/nitrogen6x/readme.txt would be useful?

Well it is not Nitrogen6x-specific, it applies to all i.MX6 platforms so I'm not sure where would be the best place to give this info apart from the help text. Thomas, any idea on this?

Yocto is forcing the use of the Vivante kernel module, maybe we should do the same but I'm not fond of this approach.

We can't force select because BR2_PACKAGE_KERNEL_MODULE_IMX_GPU_VIV depends on
the kernel to be built. But we could do

select BR2_PACKAGE_KERNEL_MODULE_IMX_GPU_VIV if BR2_LINUX_KERNEL

I don't think this would be such a bad idea. Added size isn't really a big
deal. Of course, the user still has to load the module...

Regards,
Arnout

Quoted 12 lines
Quoted 2 lines

Many thanks for your support...

No problem. Thanks for your valuable feedback!

Regards,
Gary
_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot

Signature · 6 lines
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:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
#10 lore raw

PATCH v2 1/2 libimxvpuapi: add new package

In reply to Gary Bisson

Hello Gary,

Quoted 35 lines

Gesendet: Dienstag, 16. Februar 2016 um 23:57 Uhr
Von: "Gary Bisson" <[email protected]>
An: "Peter Seiderer" <[email protected]>
Cc: buildroot at busybox.net, "Thomas Petazzoni" <[email protected]>
Betreff: Re: [Buildroot] [PATCH v2 1/2] libimxvpuapi: add new package

Peter, All,

Quoted 22 lines · Peter Seiderer

Hello Gary,

Review

Quoted 13 lines · Gary Bisson

<snip>

(quoted diff) +12 -0
+LIBIMXVPUAPI_VERSION = 0.10.1
+LIBIMXVPUAPI_SITE = $(call github,Freescale,libimxvpuapi,$(LIBIMXVPUAPI_VERSION))
+LIBIMXVPUAPI_LICENSE = LGPLv2.1+
+LIBIMXVPUAPI_LICENSE_FILES = LICENSE
+LIBIMXVPUAPI_DEPENDENCIES = host-pkgconf host-python imx-vpu
+LIBIMXVPUAPI_INSTALL_STAGING = YES
+
+define LIBIMXVPUAPI_CONFIGURE_CMDS
+     cd $(@D); \
+     $(TARGET_CONFIGURE_OPTS) $(HOST_DIR)/usr/bin/python2 ./waf configure \
+             --prefix=/usr
+endef

On my x86_64 (OpenSUSE-13.2) host build the libs and libimxvpuapi.pc are installed into $(STAGING_DIR)/usr/lib64 and $(TARGET_DIR)/usr/lib64.

Quoted 3 lines

To be usable by eg. gst1-imx the install path should be $(STAGING_DIR)/usr/lib and $(TARGET_DIR)/usr/lib. To achieve this I added '--libdir=/usr/lib' to overwrite the default '/usr/lib64':

Quoted 7 lines

I'd like to understand why it behaves like this with your setup. I'm using a 64-bit OS too (Debian Testing) but the libs go to /usr/lib as expected.

Could you pastebin the full log of libimxvpuapi build, your buildroot configuration as well as you 'env'?

Build log attached (rm -r build/libimxvpuapi-0.10.1; make V=1 2>&1 | tee out_build_libimxvpuapi_orig.txt), same buildroot setup as in previous e-mail: out_build_libimxvpuapi_orig.txt

$ cd build/libimxvpuapi-0.10.1/
$ /home/seiderer/Work/BD_Nitrogen6x/Buildroot-2016-02/build_2016_02_001/host/usr/bin/python2 ./waf configure --help
...
    --libdir=LIBDIR     object code libraries [EXEC_PREFIX/lib64]
...
$ env
LESSKEY=/etc/lesskey.bin
NNTPSERVER=news
MANPATH=/usr/local/man:/usr/share/man
HOSTNAME=XXXXXXX
XKEYSYMDB=/usr/X11R6/lib/X11/XKeysymDB
HOST=XXXXXXX
TERM=rxvt-unicode-256color
SHELL=/bin/bash
PROFILEREAD=true
HISTSIZE=1000
MORE=-sl
JRE_HOME=/usr/lib64/jvm/java/jre
USER=seiderer
LS_COLORS=
XNLSPATH=/usr/share/X11/nls
QEMU_AUDIO_DRV=pa
HOSTTYPE=x86_64
CONFIG_SITE=/usr/share/site/x86_64-unknown-linux-gnu
FROM_HEADER=
PAGER=less
CSHEDIT=emacs
XDG_CONFIG_DIRS=/etc/xdg
LIBGL_DEBUG=quiet
MINICOM=-c on
MAIL=/var/mail/seiderer
PATH=/opt/tools/bin:/home/seiderer/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
CPU=x86_64
JAVA_BINDIR=/usr/lib64/jvm/java/bin
INPUTRC=/home/seiderer/.inputrc
PWD=/home/seiderer/Work/BD_Nitrogen6x/Buildroot-2016-02/build_2016_02_001/build/libimxvpuapi-0.10.1
gopher_proxy=
JAVA_HOME=/usr/lib64/jvm/java
LANG=en_US.UTF-8
PYTHONSTARTUP=/etc/pythonstart
SDK_HOME=/usr/lib64/jvm/java
GPG_TTY=/dev/pts/3
AUDIODRIVER=pulseaudio
QT_SYSTEM_DIR=/usr/share/desktop-data
JDK_HOME=/usr/lib64/jvm/java
SHLVL=1
HOME=/home/seiderer
ALSA_CONFIG_PATH=/etc/alsa-pulse.conf
SDL_AUDIODRIVER=pulse
LESS_ADVANCED_PREPROCESSOR=no
OSTYPE=linux
LS_OPTIONS=-N --color=none -T 0
WINDOWMANAGER=/usr/bin/gnome
G_FILENAME_ENCODING=@locale,UTF-8,ISO-8859-15,CP1252
LESS=-M -I -R
MACHTYPE=x86_64-suse-linux
LOGNAME=seiderer
CVS_RSH=ssh
XDG_DATA_DIRS=/usr/share
SSH_CONNECTION=10.5.121.193 49159 10.5.123.15 22
LESSOPEN=lessopen.sh %s
XDG_RUNTIME_DIR=/run/user/1000
DISPLAY=localhost:13.0
XAUTHLOCALHOSTNAME=DLxX9PSE02
NO_AT_BRIDGE=1
LESSCLOSE=lessclose.sh %s %s
G_BROKEN_FILENAMES=1
JAVA_ROOT=/usr/lib64/jvm/java
COLORTERM=1
BASH_FUNC_mc%%=() {  . /usr/share/mc/mc-wrapper.sh
}
OLDPWD=/home/seiderer/Work/BD_Nitrogen6x/Buildroot-2016-02/build_2016_02_001
_=/usr/bin/env

Regards,
Peter

Quoted 33 lines
Quoted 13 lines
package/libimxvpuapi/libimxvpuapi.mk +1 -1
@@ -14,7 +14,7 @@ LIBIMXVPUAPI_INSTALL_STAGING = YES
 define LIBIMXVPUAPI_CONFIGURE_CMDS
        cd $(@D); \
        $(TARGET_CONFIGURE_OPTS) $(HOST_DIR)/usr/bin/python2 ./waf configure \
-               --prefix=/usr
+               --prefix=/usr --libdir=/usr/lib
 endef
 
 define LIBIMXVPUAPI_BUILD_CMDS
Quoted 5 lines

With this you can add my

for '...! imxvpudec ! imxipuvideosink'

Ok, I'll do that once I understand the difference which requires this libdir argument.

Quoted 4 lines

But I had problems using the imxeglvivsink element and
with qt5 eglfs, suspecting your 'Update most Freescale packages' patch series (using buildroot-2016.02-rc1 with your '[PATCH v3 0/2] gst1-imx: bump version to 0.12.0' patches on top), but did not find time yet to investigate further...

Does a basic gstreamer pipeline work?

# gst-launch-1.0 videotestsrc ! imxeglvivsink

If not there's no wonder qt5 doesn't like it. I haven't tried qt5 but I'm sure the gstreamer imxeglvivsink does work.

Quoted 8 lines

In case you've enabled BR2_PACKAGE_KERNEL_MODULE_IMX_GPU_VIV, you might need to load the Galcore module manually in case you don't have eudev for instance:

# insmod /lib/modules/3.14.28/extra/galcore.ko

Regards,
Gary

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: out_build_libimxvpuapi_orig.txt
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20160217/72bf950a/attachment.txt>

#11 lore raw

PATCH v2 1/2 libimxvpuapi: add new package

Hi Peter,

Quoted 5 lines · Peter Seiderer

<snip>

Quoted 3 lines

Could you pastebin the full log of libimxvpuapi build, your buildroot configuration as well as you 'env'?

Quoted 7 lines

Build log attached (rm -r build/libimxvpuapi-0.10.1; make V=1 2>&1 | tee out_build_libimxvpuapi_orig.txt), same buildroot setup as in previous e-mail: out_build_libimxvpuapi_orig.txt

$ cd build/libimxvpuapi-0.10.1/
$ /home/seiderer/Work/BD_Nitrogen6x/Buildroot-2016-02/build_2016_02_001/host/usr/bin/python2 ./waf configure --help
...
    --libdir=LIBDIR     object code libraries [EXEC_PREFIX/lib64]

Thanks for your quick reply. Indeed the same command on my platform gives me:
--libdir=LIBDIR object code libraries [EXEC_PREFIX/lib]

Plus your env seems just fine. Digging into it I've found my the difference is between our system, multiarch is enabled on mine. In the Configure.py script the libdir is initialized as follows:
if not env.LIBDIR:
if Options.options.libdir:
env.LIBDIR=Utils.sane_path(Options.options.libdir)
else:

    env.LIBDIR=Utils.subst_vars('${PREFIX}/lib%s'%Utils.lib64(),env)

And Utils.py tells us where the 64 comes from:
def lib64():
if os.sep=='/':

    if platform.architecture()[0]=='64bit':
      if os.path.exists('/usr/lib64')and not os.path.exists('/usr/lib32'):
        return'64'

return''

So I'll submit the v3 today and cc you. Thanks for reporting and fixing the issue!

Regards,
Gary

#12 lore raw

PATCH v2 2/2 gst1-imx: bump to version 0.12.0

In reply to Gary Bisson

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

---

Changelog v1->v2:
- add hash file

So far I've kept the PXP/IPU "options" which are not really options. As explained earlier, the goal is for users of the i.MX7 to know the PXP plugin will be built without any other dependency.

Thanks,
Gary

---
 package/gstreamer1/gst1-imx/Config.in     | 58 ++++++++++++++++++++++++++-----
 package/gstreamer1/gst1-imx/gst1-imx.hash |  2 ++
 package/gstreamer1/gst1-imx/gst1-imx.mk   | 15 ++++++--
 3 files changed, 64 insertions(+), 11 deletions(-)
 create mode 100644 package/gstreamer1/gst1-imx/gst1-imx.hash
package/gstreamer1/gst1-imx/Config.in +49 -9
index f7284f4..5f0da84 100644
@@ -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
package/gstreamer1/gst1-imx/gst1-imx.hash new file +2 -0
new file mode 100644
index 0000000..03e1729
@@ -0,0 +1,2 @@
+# locally computed hash
+sha256 df34f080e24ac8f1619780aa5ad4e6ab1333f822cd2bf5fcb380b28c97248810  gst1-imx-0.12.0.tar.gz
package/gstreamer1/gst1-imx/gst1-imx.mk +13 -2
index 8ede8ad..f3eac0a 100644
@@ -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); \
Signature · 1 line
2.6.4