Skip to contentSkip to conversation

Freescale i.MX multimedia libraries

RFC PATCH New Arnout Vandecappelle (Essensium/Mind) 3 participants 14 messages Dec 19, 2012 – Jan 14, 2013 Arm i.MX and Layerscape

lore
Share & tools
lore
#0 lore raw

cover Freescale i.MX multimedia libraries

This patch series adds Freescale's proprietary multimedia libraries for
the i.MX platform.

I only tested it on mx6q (SabreLite). I'm sending it now even though there
are still a few major shortcomings, so Peter (and others) have the chance to test it on different platforms while I'm on vacation.

These are the things I'd like to see improved - feedback is very welcome!

* The platform stuff. A separate choice in imx-lib and gst-fsl-plugins really doesn't work, because they are not kept consistent (the 'select' doesn't always work).

* The binary libraries are linked against glibc, so there probably should be a dependency on glibc/eglibc as well. However, for gst-fsl-plugins, not everything depends on the binary libraries. For instance, the VPU encoder/decoder only requires a firmware blob. Unfortunately, it still didn't work with uClibc (didn't spend much time on it though).

* All the binary libraries are installed, even though they are for other platforms. The whole thing is about 10MB.

* I couldn't find an official upstream download site, so I used a mirror, but it risks disappearing unexpectedly.

* More stuff should be selectable (e.g. which gst plugins to build).

The extraction of the .bin self-extractors if fortunately just slightly
messy :-) The legal-info on the other hand is horrible - as usual, the proprietary projects are much less conscientious about legal stuff and the typical open source project...

For the platform stuff, one idea I had was to create a new menu for
platform-specific packages. In that menu, you'd have a menuconfig per platform, and this menu could give a SoC choice. The platform-specific menus can collect all the platform-specific packages which are now "polluting" the rest of the menus. For example:

menu "Platform-specific packages"

menuconfig "Freescale i.MX"

choice "i.MX SoC"
config "i.MX 51"
config "i.MX 6"
endchoice

menuconfig "Freescale QorIQ"

menuconfig "Raspberry Pi"

menuconfig "Snowball"
source "package/snowball-hdmiservice"
source "package/snowball-init"

menuconfig "TI Davinci"

How does this sound?

Regards,
Arnout

#1 lore raw

RFC PATCH 1/6 imx-lib: new package

From: "Arnout Vandecappelle (Essensium/Mind)" <[email protected]>

---
 package/Config.in          |    1 +
 package/imx-lib/Config.in  |   53 ++++++++++++++++++++++++++++++++++++++++++++
 package/imx-lib/imx-lib.mk |   41 ++++++++++++++++++++++++++++++++++
 3 files changed, 95 insertions(+)
 create mode 100644 package/imx-lib/Config.in
 create mode 100644 package/imx-lib/imx-lib.mk
package/Config.in +1 -0
index 66445ff..def4b20 100644
@@ -421,6 +421,7 @@ endmenu
 
 menu "Hardware handling"
 source "package/ccid/Config.in"
+source "package/imx-lib/Config.in"
 source "package/lcdapi/Config.in"
 source "package/libaio/Config.in"
 source "package/libraw1394/Config.in"
package/imx-lib/Config.in new file +53 -0

53 lines not on this page · raw message

package/imx-lib/imx-lib.mk new file +41 -0

41 lines not on this page · raw message

Signature · 1 line
1.7.10.4
#2 lore raw

RFC PATCH 2/6 libfslvpuwrap: new package

In reply to Arnout Vandecappelle (Essensium/Mind)

From: "Arnout Vandecappelle (Essensium/Mind)" <[email protected]>

---
 package/Config.in                      |    1 +
 package/libfslvpuwrap/Config.in        |   13 +++++++++++++
 package/libfslvpuwrap/libfslvpuwrap.mk |   18 ++++++++++++++++++
 3 files changed, 32 insertions(+)
 create mode 100644 package/libfslvpuwrap/Config.in
 create mode 100644 package/libfslvpuwrap/libfslvpuwrap.mk
package/Config.in +1 -0
index def4b20..ac2488e 100644
@@ -453,6 +453,7 @@ menu "Multimedia"
 source "package/libdvdread/Config.in"
 source "package/libdvdnav/Config.in"
 source "package/libebml/Config.in"
+source "package/libfslvpuwrap/Config.in"
 source "package/libmatroska/Config.in"
 source "package/libmms/Config.in"
 source "package/libmpeg2/Config.in"
package/libfslvpuwrap/Config.in new file +13 -0
new file mode 100644
index 0000000..57b8a02
@@ -0,0 +1,13 @@
+comment "libfslvpuwrap needs an imx-specific kernel to be built"
+	depends on BR2_arm && !BR2_LINUX_KERNEL
+
+config BR2_PACKAGE_LIBFSLVPUWRAP
+	bool "libfslvpuwrap"
+	depends on BR2_LINUX_KERNEL
+	depends on BR2_arm # Only relevant for i.MX
+	select BR2_PACKAGE_IMX_LIB
+	help
+	  Wrapper library for the vpu library, giving it a different API.
+
+	  This library is provided by Freescale as-is and doesn't have
+	  an upstream.
package/libfslvpuwrap/libfslvpuwrap.mk new file +18 -0
new file mode 100644
index 0000000..3ad33f9
@@ -0,0 +1,18 @@
+#############################################################
+#
+# buildroot makefile for libfslvpuwrap
+#
+#############################################################
+
+LIBFSLVPUWRAP_VERSION = 1.0.17
+# No official download site from freescale, just this mirror
+LIBFSLVPUWRAP_SITE = http://download.ossystems.com.br/bsp/freescale/source
+LIBFSLVPUWRAP_LICENSE = Freescale Semiconductor Software License Agreement
+LIBFSLVPUWRAP_LICENSE_FILES = EULA.txt
+LIBFSLVPUWRAP_REDISTRIBUTE = NO
+
+LIBFSLVPUWRAP_INSTALL_STAGING = YES
+
+LIBFSLVPUWRAP_DEPENDENCIES += imx-lib
+
+$(eval $(autotools-package))
Signature · 1 line
1.7.10.4
#3 lore raw

RFC PATCH 3/6 firmware-imx: new package

In reply to Arnout Vandecappelle (Essensium/Mind)

From: "Arnout Vandecappelle (Essensium/Mind)" <[email protected]>

---
 package/Config.in                    |    1 +
 package/firmware-imx/Config.in       |   13 ++++++++++++
 package/firmware-imx/firmware-imx.mk |   38 ++++++++++++++++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 package/firmware-imx/Config.in
 create mode 100644 package/firmware-imx/firmware-imx.mk
package/Config.in +1 -0
index ac2488e..52bb408 100644
@@ -213,6 +213,7 @@ source "package/eeprog/Config.in"
 source "package/evtest/Config.in"
 source "package/flashrom/Config.in"
 source "package/fconfig/Config.in"
+source "package/firmware-imx/Config.in"
 source "package/fis/Config.in"
 source "package/fmtools/Config.in"
 source "package/fxload/Config.in"
package/firmware-imx/Config.in new file +13 -0
new file mode 100644
index 0000000..dd96d88
@@ -0,0 +1,13 @@
+config BR2_PACKAGE_FIRMWARE_IMX
+	bool "firmware-imx"
+	depends on BR2_arm # Only relevant for i.MX
+	help
+	  Firmware blobs for the Freescale i.MX SoCs.
+
+	  It contains blobs for Atheros AR6003, SDMA and VPU.
+
+	  Note: it also contains a blob for ar3k/30101 but upstream
+	  linux-firmware has that as well.
+
+	  This library is provided by Freescale as-is and doesn't have
+	  an upstream.
package/firmware-imx/firmware-imx.mk new file +38 -0
new file mode 100644
index 0000000..5072288
@@ -0,0 +1,38 @@
+#############################################################
+#
+# buildroot makefile for firmware-imx
+#
+#############################################################
+
+FIRMWARE_IMX_VERSION = 12.09.01
+# No official download site from freescale, just this mirror
+FIRMWARE_IMX_SITE = http://download.ossystems.com.br/bsp/freescale/source
+FIRMWARE_IMX_SOURCE = firmware-imx-$(FIRMWARE_IMX_VERSION).bin
+FIRMWARE_IMX_LICENSE = Freescale Semiconductor Software License Agreement, \
+	Atheros license (ath6k)
+FIRMWARE_IMX_LICENSE_FILES = licenses/vpu/EULA licenses/ath6k/AR6102/License.txt
+# This is a legal minefield: the EULA specifies that
+# the Board Support Package includes software and hardware (sic!)
+# for which a separate license is needed...
+FIRMWARE_IMX_REDISTRIBUTE = NO
+
+FIRMWARE_IMX_BLOBS = ath6k sdma vpu
+
+# The archive is a shell-self-extractor of a bzipped tar. It happens
+# to extract in the correct directory (firmware-imx-x.y.z)
+# The --force makes sure it doesn't fail if the source dir already exists.
+# The --auto-accept skips the license check - not needed for us
+# because we have legal-info.
+define FIRMWARE_IMX_EXTRACT_CMDS
+	cd $(BUILD_DIR); \
+	sh $(DL_DIR)/$(FIRMWARE_IMX_SOURCE) --force --auto-accept
+endef
+
+
+define FIRMWARE_IMX_INSTALL_TARGET_CMDS
+	for blobdir in $(FIRMWARE_IMX_BLOBS); do \
+		cp -r $(@D)/firmware/$${blobdir} $(TARGET_DIR)/lib/firmware; \
+	done
+endef
+
+$(eval $(generic-package))
Signature · 1 line
1.7.10.4
#4 lore raw

RFC PATCH 3/6 firmware-imx: new package

Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Arnout" == Arnout Vandecappelle (Essensium/Mind) <[email protected]> writes:

Arnout> From: "Arnout Vandecappelle (Essensium/Mind)" <[email protected]> Arnout> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <[email protected]> Arnout> ---

 Arnout>  package/Config.in                    |    1 +
 Arnout>  package/firmware-imx/Config.in       |   13 ++++++++++++
 Arnout>  package/firmware-imx/firmware-imx.mk |   38 ++++++++++++++++++++++++++++++++++
 Arnout>  3 files changed, 52 insertions(+)
 Arnout>  create mode 100644 package/firmware-imx/Config.in
 Arnout>  create mode 100644 package/firmware-imx/firmware-imx.mk

Arnout> diff --git a/package/Config.in b/package/Config.in Arnout> index ac2488e..52bb408 100644
Arnout> --- a/package/Config.in
Arnout> +++ b/package/Config.in
Arnout> @@ -213,6 +213,7 @@ source "package/eeprog/Config.in"

 Arnout>  source "package/evtest/Config.in"
 Arnout>  source "package/flashrom/Config.in"
 Arnout>  source "package/fconfig/Config.in"

Arnout> +source "package/firmware-imx/Config.in"

I moved this under the new Misc devices firmware menu.

Arnout> +define FIRMWARE_IMX_INSTALL_TARGET_CMDS
Arnout> + for blobdir in $(FIRMWARE_IMX_BLOBS); do \
Arnout> + cp -r $(@D)/firmware/$${blobdir} $(TARGET_DIR)/lib/firmware; \
Arnout> + done
Arnout> +endef

And stuck a mkdir -p $(TARGET_DIR)/lib/firmware here to ensure it's available.

Signature · 1 line
Bye, Peter Korsgaard
#5 lore raw

RFC PATCH 4/6 libfslparser: new package

In reply to Arnout Vandecappelle (Essensium/Mind)

From: "Arnout Vandecappelle (Essensium/Mind)" <[email protected]>

---
 package/Config.in                    |    1 +
 package/libfslparser/Config.in       |    8 +++++++
 package/libfslparser/libfslparser.mk |   40 ++++++++++++++++++++++++++++++++++
 3 files changed, 49 insertions(+)
 create mode 100644 package/libfslparser/Config.in
 create mode 100644 package/libfslparser/libfslparser.mk
package/Config.in +1 -0
index 52bb408..171d936 100644
@@ -454,6 +454,7 @@ menu "Multimedia"
 source "package/libdvdread/Config.in"
 source "package/libdvdnav/Config.in"
 source "package/libebml/Config.in"
+source "package/libfslparser/Config.in"
 source "package/libfslvpuwrap/Config.in"
 source "package/libmatroska/Config.in"
 source "package/libmms/Config.in"
package/libfslparser/Config.in new file +8 -0
new file mode 100644
index 0000000..e3ab980
@@ -0,0 +1,8 @@
+config BR2_PACKAGE_LIBFSLPARSER
+	bool "libfslparser"
+	depends on BR2_arm # Only relevant for i.MX
+	help
+	  Binary parser libraries for the Freescale i.MX SoCs.
+
+	  This library is provided by Freescale as-is and doesn't have
+	  an upstream.
package/libfslparser/libfslparser.mk new file +40 -0
new file mode 100644
index 0000000..66f48cc
@@ -0,0 +1,40 @@
+#############################################################
+#
+# buildroot makefile for libfslparser
+#
+#############################################################
+
+LIBFSLPARSER_VERSION = 3.0.1
+# No official download site from freescale, just this mirror
+LIBFSLPARSER_SITE = http://download.ossystems.com.br/bsp/freescale/source
+LIBFSLPARSER_SOURCE = libfslparser-$(LIBFSLPARSER_VERSION).bin
+LIBFSLPARSER_LICENSE = Freescale Semiconductor Software License Agreement
+LIBFSLPARSER_LICENSE_FILES = EULA EULA.txt
+# This is a legal minefield: the EULA in the bin file specifies that
+# the Board Support Package includes software and hardware (sic!)
+# for which a separate license is needed...
+LIBFSLPARSER_REDISTRIBUTE = NO
+
+LIBFSLPARSER_INSTALL_STAGING = YES
+
+# The archive is a shell-self-extractor of a bzipped tar. It happens
+# to extract in the correct directory (libfslparser-x.y.z)
+# The --force makes sure it doesn't fail if the source dir already exists.
+# The --auto-accept skips the license check - not needed for us
+# because we have legal-info
+# Since the EULA in the bin file differs from the one in the tar file,
+# extract the one from the bin file as well.
+define LIBFSLPARSER_EXTRACT_CMDS
+	awk 'BEGIN      { start=0; } \
+	     /^EOEULA/  { start = 0; } \
+	                { if (start) print; } \
+	     /<<EOEULA/ { start=1; }'\
+	    $(DL_DIR)/$(LIBFSLPARSER_SOURCE) > $(@D)/EULA
+	cd $(BUILD_DIR); \
+	sh $(DL_DIR)/$(LIBFSLPARSER_SOURCE) --force --auto-accept
+endef
+
+# The Makefile installs several versions of the libraries, but we only
+# need one of them, depending on the platform.
+
+$(eval $(autotools-package))
Signature · 1 line
1.7.10.4
#6 lore raw

RFC PATCH 5/6 libfslcodec: new package

In reply to Arnout Vandecappelle (Essensium/Mind)

From: "Arnout Vandecappelle (Essensium/Mind)" <[email protected]>

---
 package/Config.in                  |    1 +
 package/libfslcodec/Config.in      |    8 ++++++++
 package/libfslcodec/libfslcodec.mk |   40 ++++++++++++++++++++++++++++++++++++
 3 files changed, 49 insertions(+)
 create mode 100644 package/libfslcodec/Config.in
 create mode 100644 package/libfslcodec/libfslcodec.mk
package/Config.in +1 -0
index 171d936..a2bded6 100644
@@ -454,6 +454,7 @@ menu "Multimedia"
 source "package/libdvdread/Config.in"
 source "package/libdvdnav/Config.in"
 source "package/libebml/Config.in"
+source "package/libfslcodec/Config.in"
 source "package/libfslparser/Config.in"
 source "package/libfslvpuwrap/Config.in"
 source "package/libmatroska/Config.in"
package/libfslcodec/Config.in new file +8 -0
new file mode 100644
index 0000000..7b31b7a
@@ -0,0 +1,8 @@
+config BR2_PACKAGE_LIBFSLCODEC
+	bool "libfslcodec"
+	depends on BR2_arm # Only relevant for i.MX
+	help
+	  Binary codec libraries for the Freescale i.MX SoCs.
+
+	  This library is provided by Freescale as-is and doesn't have
+	  an upstream.
package/libfslcodec/libfslcodec.mk new file +40 -0
new file mode 100644
index 0000000..a2b57b8
@@ -0,0 +1,40 @@
+#############################################################
+#
+# buildroot makefile for libfslcodec
+#
+#############################################################
+
+LIBFSLCODEC_VERSION = 3.0.1
+# No official download site from freescale, just this mirror
+LIBFSLCODEC_SITE = http://download.ossystems.com.br/bsp/freescale/source
+LIBFSLCODEC_SOURCE = libfslcodec-$(LIBFSLCODEC_VERSION).bin
+LIBFSLCODEC_LICENSE = Freescale Semiconductor Software License Agreement, BSD-3c (flac, ogg headers)
+LIBFSLCODEC_LICENSE_FILES = EULA EULA.txt
+# This is a legal minefield: the EULA in the bin file specifies that
+# the Board Support Package includes software and hardware (sic!)
+# for which a separate license is needed...
+LIBFSLCODEC_REDISTRIBUTE = NO
+
+LIBFSLCODEC_INSTALL_STAGING = YES
+
+# The archive is a shell-self-extractor of a bzipped tar. It happens
+# to extract in the correct directory (libfslcodec-x.y.z)
+# The --force makes sure it doesn't fail if the source dir already exists.
+# The --auto-accept skips the license check - not needed for us
+# because we have legal-info.
+# Since the EULA in the bin file differs from the one in the tar file,
+# extract the one from the bin file as well.
+define LIBFSLCODEC_EXTRACT_CMDS
+	awk 'BEGIN      { start=0; } \
+	     /^EOEULA/  { start = 0; } \
+	                { if (start) print; } \
+	     /<<EOEULA/ { start=1; }'\
+	    $(DL_DIR)/$(LIBFSLCODEC_SOURCE) > $(@D)/EULA
+	cd $(BUILD_DIR); \
+	sh $(DL_DIR)/$(LIBFSLCODEC_SOURCE) --force --auto-accept
+endef
+
+# FIXME The Makefile installs both the arm9 and arm11 versions of the
+# libraries, but we only need one of them.
+
+$(eval $(autotools-package))
Signature · 1 line
1.7.10.4
#7 lore raw

RFC PATCH 5/6 libfslcodec: new package

Dear Arnout Vandecappelle,

Quoted 88 lines · Arnout Vandecappelle

From: "Arnout Vandecappelle (Essensium/Mind)" <[email protected]>

---
 package/Config.in                  |    1 +
 package/libfslcodec/Config.in      |    8 ++++++++
 package/libfslcodec/libfslcodec.mk |   40
 ++++++++++++++++++++++++++++++++++++
 3 files changed, 49 insertions(+)
 create mode 100644 package/libfslcodec/Config.in
 create mode 100644 package/libfslcodec/libfslcodec.mk
package/Config.in +1 -0
index 171d936..a2bded6 100644
@@ -454,6 +454,7 @@ menu "Multimedia"
 source "package/libdvdread/Config.in"
 source "package/libdvdnav/Config.in"
 source "package/libebml/Config.in"
+source "package/libfslcodec/Config.in"
 source "package/libfslparser/Config.in"
 source "package/libfslvpuwrap/Config.in"
 source "package/libmatroska/Config.in"
package/libfslcodec/Config.in new file +8 -0
new file mode 100644
index 0000000..7b31b7a
@@ -0,0 +1,8 @@
+config BR2_PACKAGE_LIBFSLCODEC
+	bool "libfslcodec"
+	depends on BR2_arm # Only relevant for i.MX
+	help
+	  Binary codec libraries for the Freescale i.MX SoCs.
+
+	  This library is provided by Freescale as-is and doesn't have
+	  an upstream.
package/libfslcodec/libfslcodec.mk new file +9 -0
new file mode 100644
index 0000000..a2b57b8
@@ -0,0 +1,40 @@
+#############################################################
+#
+# buildroot makefile for libfslcodec
+#
+#############################################################
+
+LIBFSLCODEC_VERSION = 3.0.1
+# No official download site from freescale, just this mirror
+LIBFSLCODEC_SITE =

http://download.ossystems.com.br/bsp/freescale/source

package/libfslcodec/libfslcodec.mk new file +2 -0
+LIBFSLCODEC_SOURCE = libfslcodec-$(LIBFSLCODEC_VERSION).bin
+LIBFSLCODEC_LICENSE = Freescale Semiconductor Software License

Agreement, BSD-3c (flac, ogg headers)

package/libfslcodec/libfslcodec.mk new file +11 -0
+LIBFSLCODEC_LICENSE_FILES = EULA EULA.txt
+# This is a legal minefield: the EULA in the bin file specifies that
+# the Board Support Package includes software and hardware (sic!)
+# for which a separate license is needed...
+LIBFSLCODEC_REDISTRIBUTE = NO
+
+LIBFSLCODEC_INSTALL_STAGING = YES
+
+# The archive is a shell-self-extractor of a bzipped tar. It happens
+# to extract in the correct directory (libfslcodec-x.y.z)
+# The --force makes sure it doesn't fail if the source dir already

exists.

package/libfslcodec/libfslcodec.mk new file +3 -0
+# The --auto-accept skips the license check - not needed for us
+# because we have legal-info.
+# Since the EULA in the bin file differs from the one in the tar

file,

package/libfslcodec/libfslcodec.mk new file +12 -0
+# extract the one from the bin file as well.
+define LIBFSLCODEC_EXTRACT_CMDS
+	awk 'BEGIN      { start=0; } \
+	     /^EOEULA/  { start = 0; } \
+	                { if (start) print; } \
+	     /<<EOEULA/ { start=1; }'\
+	    $(DL_DIR)/$(LIBFSLCODEC_SOURCE) > $(@D)/EULA
+	cd $(BUILD_DIR); \
+	sh $(DL_DIR)/$(LIBFSLCODEC_SOURCE) --force --auto-accept
+endef
+
+# FIXME The Makefile installs both the arm9 and arm11 versions of

the

package/libfslcodec/libfslcodec.mk line 40

Quoted 3 lines
package/libfslcodec/libfslcodec.mk new file +3 -0
+# libraries, but we only need one of them.
+
+$(eval $(autotools-package))

For packages like this one that install pre-built libraries, it would be good to document somewhere or to auto-check (e.g. with toolchain kconfig options vs. package kconfig options) the ABI compatibility to make sure that there won't be any issue with the toolchain used.

Best regards,
Beno?t

#8 lore raw

RFC PATCH 5/6 libfslcodec: new package

Quoted 9 lines · Beno?t Th?baudeau
Quoted 5 lines
Quoted 5 lines

+# FIXME The Makefile installs both the arm9 and arm11 versions of the
+# libraries, but we only need one of them.
+
+$(eval $(autotools-package))

For packages like this one that install pre-built libraries, it would be good to document somewhere or to auto-check (e.g. with toolchain kconfig options vs. package kconfig options) the ABI compatibility to make sure that there won't be any issue with the toolchain used.

I agree, but how?

Regards,
Arnout

Signature · 6 lines
Arnout Vandecappelle                               arnout at mind be
Senior Embedded Software Architect                 +32-16-286540
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
#9 lore raw

RFC PATCH 5/6 libfslcodec: new package

Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Arnout" == Arnout Vandecappelle <[email protected]> writes:

Hi,

Quoted 5 lines
Quoted 5 lines

For packages like this one that install pre-built libraries, it would be good to document somewhere or to auto-check (e.g. with toolchain kconfig options vs. package kconfig options) the ABI compatibility to make sure that there won't be any issue with the toolchain used.

Arnout> I agree, but how?

I don't know the specifics of this package, but presumably it only works with glibc and a specific soft/softfp/hard floating point mode? If so, we could atleast catch some of these dependencies in Config.in.

Signature · 1 line
Bye, Peter Korsgaard
#10 lore raw

RFC PATCH 5/6 libfslcodec: new package

Quoted 10 lines · Peter Korsgaard
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Arnout" == Arnout Vandecappelle<[email protected]> writes:

Hi,

Quoted 5 lines
Quoted 5 lines

For packages like this one that install pre-built libraries, it would be good to document somewhere or to auto-check (e.g. with toolchain kconfig options vs. package kconfig options) the ABI compatibility to make sure that there won't be any issue with the toolchain used.

Quoted 5 lines

Arnout> I agree, but how?

I don't know the specifics of this package, but presumably it only works with glibc and a specific soft/softfp/hard floating point mode? If so, we could atleast catch some of these dependencies in Config.in.

Yes, but how to know what the dependencies are (except by run-testing
with all the different toolchains on all the different SoCs)?

I'd also like to find a way to decide which of the _arm9, _arm11 or
_arm12 libraries to use (they all have the same ABI flags...).

Regards,
Arnout

Signature · 6 lines
Arnout Vandecappelle                               arnout at mind be
Senior Embedded Software Architect                 +32-16-286540
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
#11 lore raw

RFC PATCH 5/6 libfslcodec: new package

Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Arnout" == Arnout Vandecappelle <[email protected]> writes:

Hi,

Quoted 4 lines
Quoted 4 lines

I don't know the specifics of this package, but presumably it only works with glibc and a specific soft/softfp/hard floating point mode? If so, we could atleast catch some of these dependencies in Config.in.

Arnout> Yes, but how to know what the dependencies are (except by Arnout> run-testing with all the different toolchains on all the Arnout> different SoCs)?

Doesn't Freescale document this anyware, or atleast mention what toolchain they have used to build it?

Arnout> I'd also like to find a way to decide which of the _arm9, Arnout> _arm11 or _arm12 libraries to use (they all have the same ABI Arnout> flags...).

Can't you decide based on the selected ARM subarchitecture? If we need to do this in a bunch of places we could centralize it by adding some BR2_ARM_Vx symbols and select the correct one from the subarch choice.

Signature · 1 line
Bye, Peter Korsgaard
#12 lore raw

RFC PATCH 6/6 gst-fsl-plugins: new package

In reply to Arnout Vandecappelle (Essensium/Mind)

From: "Arnout Vandecappelle (Essensium/Mind)" <[email protected]>

---
 package/multimedia/Config.in                       |    1 +
 package/multimedia/gst-fsl-plugins/Config.in       |   92 ++++++++++++++++++++
 ...sl-plugins-0001-gplay-add-missing-include.patch |   23 +++++
 ...gins-0002-Fix-bashism-in-configure-script.patch |   65 ++++++++++++++
 .../gst-fsl-plugins-0003-Use-proper-objdump.patch  |   36 ++++++++
 .../multimedia/gst-fsl-plugins/gst-fsl-plugins.mk  |   42 +++++++++
 6 files changed, 259 insertions(+)
 create mode 100644 package/multimedia/gst-fsl-plugins/Config.in
 create mode 100644 package/multimedia/gst-fsl-plugins/gst-fsl-plugins-0001-gplay-add-missing-include.patch
 create mode 100644 package/multimedia/gst-fsl-plugins/gst-fsl-plugins-0002-Fix-bashism-in-configure-script.patch
 create mode 100644 package/multimedia/gst-fsl-plugins/gst-fsl-plugins-0003-Use-proper-objdump.patch
 create mode 100644 package/multimedia/gst-fsl-plugins/gst-fsl-plugins.mk
package/multimedia/Config.in +1 -0
index 273d9bc..e50eda9 100644
@@ -8,6 +8,7 @@ source "package/multimedia/ffmpeg/Config.in"
 source "package/multimedia/gstreamer/Config.in"
 source "package/multimedia/gst-ffmpeg/Config.in"
 source "package/multimedia/gst-dsp/Config.in"
+source "package/multimedia/gst-fsl-plugins/Config.in"
 source "package/multimedia/gst-omapfb/Config.in"
 source "package/multimedia/gst-plugins-base/Config.in"
 source "package/multimedia/gst-plugins-good/Config.in"
package/multimedia/gst-fsl-plugins/Config.in new file +92 -0

92 lines not on this page · raw message

package/multimedia/gst-fsl-plugins/gst-fsl-plugins-0001-gplay-add-missing-include.patch new file +23 -0
new file mode 100644
index 0000000..19753bc
@@ -0,0 +1,23 @@
+From ed649ccb8ddc724546172d329fca39b23c49b804 Mon Sep 17 00:00:00 2001
+From: "Arnout Vandecappelle (Essensium/Mind)" <[email protected]>
+Date: Mon, 17 Dec 2012 17:58:28 +0100
+Subject: [PATCH] gplay: add missing include
+
+Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <[email protected]>
+---
+ tools/gplay/gst_snapshot.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/tools/gplay/gst_snapshot.c b/tools/gplay/gst_snapshot.c
+index 40dbb6f..596f399 100755
+--- a/tools/gplay/gst_snapshot.c
++++ b/tools/gplay/gst_snapshot.c
+@@ -22,6 +22,7 @@
+ 
+ #include <gst/gst.h>
+ #include <string.h>
++#include <stdio.h>
+ #include "gst_snapshot.h"
+ 
+ static void
+-- 
package/multimedia/gst-fsl-plugins/gst-fsl-plugins-0002-Fix-bashism-in-configure-script.patch new file +65 -0

65 lines not on this page · raw message

package/multimedia/gst-fsl-plugins/gst-fsl-plugins-0003-Use-proper-objdump.patch new file +36 -0
new file mode 100644
index 0000000..8fce239
@@ -0,0 +1,36 @@
+From c58b658a93b1b6d6e94ba0306d58de845012cef6 Mon Sep 17 00:00:00 2001
+From: "Arnout Vandecappelle (Essensium/Mind)" <[email protected]>
+Date: Tue, 18 Dec 2012 12:22:52 +0100
+Subject: [PATCH] Use proper objdump
+
+If the OBJDUMP environment variable is set, that should be used rather
+than the objdump in PATH.
+
+Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <[email protected]>
+---
+ configure.ac |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 1a31a06..cc7557d 100755
+--- a/configure.ac
++++ b/configure.ac
+@@ -17,7 +17,7 @@ AC_DEFUN([FIND_PARSER_SONAME],
+     AC_MSG_CHECKING([for lib_$1_parser_$2_elinux.3.0.so soname])
+     path=`$PKG_CONFIG --variable=libdir libfslparser`
+     SONAME=$( $CC -print-file-name=$path/lib_$1_parser_$2_elinux.so | \
+-	    while read output; do objdump -p $output | \
++	    while read output; do $OBJDUMP -p $output | \
+ 	    grep "SONAME" | \
+ 	    sed -e 's/ \+SONAME \+//'; done 2> /dev/null )
+     if [[ -z "$SONAME" ]]; then
+@@ -37,7 +37,7 @@ AC_DEFUN([FIND_ACODEC_SONAME],
+     AC_MSG_CHECKING([for lib_$1_wrap_$2_elinux.so soname])
+     path=`$PKG_CONFIG --variable=libdir libfslaudiocodec`
+     SONAME=$( $CC -print-file-name=$path/wrap/lib_$1_wrap_$2_elinux.so | \
+-	    while read output; do objdump -p $output | \
++	    while read output; do $OBJDUMP -p $output | \
+ 	    grep "SONAME" | \
+ 	    sed -e 's/ \+SONAME \+//'; done 2> /dev/null )
+     if [[ -z "$SONAME" ]]; then
+-- 
package/multimedia/gst-fsl-plugins/gst-fsl-plugins.mk new file +42 -0

42 lines not on this page · raw message

Signature · 1 line
1.7.10.4
#13 lore raw

cover Freescale i.MX multimedia libraries

In reply to Arnout Vandecappelle (Essensium/Mind)
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Arnout" == Arnout Vandecappelle (Essensium/Mind) <[email protected]> writes:

Arnout> This patch series adds Freescale's proprietary multimedia libraries for Arnout> the i.MX platform.

Arnout> I only tested it on mx6q (SabreLite). I'm sending it now even Arnout> though there are still a few major shortcomings, so Peter (and Arnout> others) have the chance to test it on different platforms while Arnout> I'm on vacation.

Thanks. Nobody commented on these patches, and it's obviously useful for some people even if it isn't perfect, so I've committed them, thanks.

I haven't gotten to runtime test it yet, just done a tets build based on nitrogen6x_defconfig.

I will try to find time to runtime test stuff as well soonish.

Arnout> These are the things I'd like to see improved - feedback is Arnout> very welcome!

Arnout> * The platform stuff. A separate choice in imx-lib and Arnout> gst-fsl-plugins really doesn't work, because they are not kept Arnout> consistent (the 'select' doesn't always work).

Agreed. My build first failed because I had just enabled gst-fsl-plugins but forgotten to track down the imx-lib option to build for mx6.

I wonder where we should put such a "global" option though. Together with the arch settings?

Arnout> * All the binary libraries are installed, even though they are Arnout> for other platforms. The whole thing is about 10MB.

Yeah, that could presumably be trimmed fairly easily if we had a global imx variant setting.

Arnout> * I couldn't find an official upstream download site, so I used Arnout> a mirror, but it risks disappearing unexpectedly.

Yeah :/ It should get mirrored on sources.buildroot.net soon though. It's not completely clear to me if we are strictly allowed to mirror these though.

Arnout> For the platform stuff, one idea I had was to create a new menu for Arnout> platform-specific packages. In that menu, you'd have a menuconfig per Arnout> platform, and this menu could give a SoC choice. The platform-specific Arnout> menus can collect all the platform-specific packages which are now Arnout> "polluting" the rest of the menus. For example:

Arnout> menu "Platform-specific packages"

Arnout> menuconfig "Freescale i.MX"

Arnout> choice "i.MX SoC"
Arnout> config "i.MX 51"
Arnout> config "i.MX 6"
Arnout> endchoice

Arnout> menuconfig "Freescale QorIQ"

Arnout> menuconfig "Raspberry Pi"

Arnout> menuconfig "Snowball"
Arnout> source "package/snowball-hdmiservice"
Arnout> source "package/snowball-init"

Arnout> menuconfig "TI Davinci"

Yes, I guess that's what we need to move towards. It gets complicated when things either don't fit nicely within a single family though.

Signature · 1 line
Bye, Peter Korsgaard