diff --git a/meta-digi-arm/dynamic-layers/freescale-layer/recipes-security/optee-imx/optee-client/tee-supplicant.service b/meta-digi-arm/dynamic-layers/freescale-layer/recipes-security/optee-imx/optee-client/tee-supplicant.service deleted file mode 120000 index 3e9b85c39..000000000 --- a/meta-digi-arm/dynamic-layers/freescale-layer/recipes-security/optee-imx/optee-client/tee-supplicant.service +++ /dev/null @@ -1 +0,0 @@ -../../../../../meta-freescale/recipes-security/optee-imx/optee-client/tee-supplicant.service \ No newline at end of file diff --git a/meta-digi-arm/dynamic-layers/freescale-layer/recipes-security/optee-imx/optee-client_%.imx.bbappend b/meta-digi-arm/dynamic-layers/freescale-layer/recipes-security/optee-imx/optee-client_%.imx.bbappend deleted file mode 100644 index 41309fe0d..000000000 --- a/meta-digi-arm/dynamic-layers/freescale-layer/recipes-security/optee-imx/optee-client_%.imx.bbappend +++ /dev/null @@ -1,3 +0,0 @@ -inherit features_check - -REQUIRED_MACHINE_FEATURES = "optee" diff --git a/meta-digi-arm/dynamic-layers/freescale-layer/recipes-security/optee-imx/optee-client_3.15.0.imx.bb b/meta-digi-arm/dynamic-layers/freescale-layer/recipes-security/optee-imx/optee-client_3.15.0.imx.bb deleted file mode 100644 index 2ab2571bb..000000000 --- a/meta-digi-arm/dynamic-layers/freescale-layer/recipes-security/optee-imx/optee-client_3.15.0.imx.bb +++ /dev/null @@ -1,58 +0,0 @@ -# Copyright (C) 2017-2021 NXP - -SUMMARY = "OPTEE Client libs" -HOMEPAGE = "http://www.optee.org/" -LICENSE = "BSD" -LIC_FILES_CHKSUM = "file://LICENSE;md5=69663ab153298557a59c67a60a743e5b" - -SRCBRANCH = "lf-5.10.72_2.2.0" -OPTEE_CLIENT_SRC ?= "git://source.codeaurora.org/external/imx/imx-optee-client.git;protocol=https" -SRC_URI = " \ - ${OPTEE_CLIENT_SRC};branch=${SRCBRANCH} \ - file://tee-supplicant.service \ -" -SRCREV = "182874320395787a389e5b0f7df02b32f3c0a1b0" - -S = "${WORKDIR}/git" -B = "${WORKDIR}/build" - -inherit python3native systemd features_check - -REQUIRED_MACHINE_FEATURES = "optee" - -SYSTEMD_SERVICE:${PN} = "tee-supplicant.service" - -OPTEE_ARCH ?= "arm32" -OPTEE_ARCH:armv7a = "arm32" -OPTEE_ARCH:aarch64 = "arm64" - -EXTRA_OEMAKE = "ARCH=${OPTEE_ARCH} -C ${S} O=${B}" - -do_install () { - oe_runmake install - - install -D -p -m0644 ${B}/export/usr/lib/libteec.so.1.0.0 ${D}${libdir}/libteec.so.1.0.0 - ln -sf libteec.so.1.0.0 ${D}${libdir}/libteec.so.1 - ln -sf libteec.so.1.0.0 ${D}${libdir}/libteec.so - - install -D -p -m0644 ${B}/export/usr/lib/libckteec.so.0.1.0 ${D}${libdir}/libckteec.so.0.1.0 - ln -sf libckteec.so.0.1.0 ${D}${libdir}/libckteec.so.0 - ln -sf libckteec.so.0.1.0 ${D}${libdir}/libckteec.so - - install -D -p -m0755 ${B}/export/usr/sbin/tee-supplicant ${D}${bindir}/tee-supplicant - - cp -a ${B}/export/usr/include ${D}${includedir} - - sed -i -e s:/etc:${sysconfdir}:g -e s:/usr/bin:${bindir}:g ${WORKDIR}/tee-supplicant.service - install -D -p -m0644 ${WORKDIR}/tee-supplicant.service ${D}${systemd_system_unitdir}/tee-supplicant.service -} - -PACKAGES += "tee-supplicant" -FILES:${PN} += "${libdir}/* ${includedir}/*" -FILES:tee-supplicant += "${bindir}/tee-supplicant" - -INSANE_SKIP:${PN} = "ldflags dev-elf" -INSANE_SKIP:${PN}-dev = "ldflags dev-elf" -INSANE_SKIP:tee-supplicant = "ldflags" - -COMPATIBLE_MACHINE = "(mx6|mx7|mx8)" diff --git a/meta-digi-arm/dynamic-layers/freescale-layer/recipes-security/optee-imx/optee-os_%.imx.bbappend b/meta-digi-arm/dynamic-layers/freescale-layer/recipes-security/optee-imx/optee-os_%.imx.bbappend deleted file mode 100644 index 41309fe0d..000000000 --- a/meta-digi-arm/dynamic-layers/freescale-layer/recipes-security/optee-imx/optee-os_%.imx.bbappend +++ /dev/null @@ -1,3 +0,0 @@ -inherit features_check - -REQUIRED_MACHINE_FEATURES = "optee" diff --git a/meta-digi-arm/dynamic-layers/freescale-layer/recipes-security/optee-imx/optee-os_3.15.0.imx.bb b/meta-digi-arm/dynamic-layers/freescale-layer/recipes-security/optee-imx/optee-os_3.15.0.imx.bb deleted file mode 100644 index 9b20202a0..000000000 --- a/meta-digi-arm/dynamic-layers/freescale-layer/recipes-security/optee-imx/optee-os_3.15.0.imx.bb +++ /dev/null @@ -1,102 +0,0 @@ -# Copyright (C) 2017-2021 NXP - -SUMMARY = "OPTEE OS" -DESCRIPTION = "OPTEE OS" -HOMEPAGE = "http://www.optee.org/" -LICENSE = "BSD" -LIC_FILES_CHKSUM = "file://LICENSE;md5=c1f21c4f72f372ef38a5a4aee55ec173" - -DEPENDS = "python3-pycryptodomex-native python3-pyelftools-native u-boot-mkimage-native" - -SRCBRANCH = "lf-5.10.72_2.2.0" -OPTEE_OS_SRC ?= "git://source.codeaurora.org/external/imx/imx-optee-os.git;protocol=https" -SRC_URI = "${OPTEE_OS_SRC};branch=${SRCBRANCH}" -SRCREV = "c939619d64dea014ad1b8382356eee4d1cbfbb22" - -S = "${WORKDIR}/git" - -inherit deploy python3native autotools features_check - -REQUIRED_MACHINE_FEATURES = "optee" - -# The platform flavor corresponds to the Yocto machine without the leading 'i'. -PLATFORM_FLAVOR = "${@d.getVar('MACHINE')[1:]}" -PLATFORM_FLAVOR_imx6qpdlsolox = "mx6qsabresd" -PLATFORM_FLAVOR_imx6ul7d = "mx6ulevk" -PLATFORM_FLAVOR_imx6ull14x14evk = "mx6ullevk" -PLATFORM_FLAVOR_imx6ull9x9evk = "mx6ullevk" -PLATFORM_FLAVOR_imx6ulz-14x14-evk = "mx6ulzevk" -PLATFORM_FLAVOR_mx8mq = "mx8mqevk" -PLATFORM_FLAVOR_mx8mm = "mx8mmevk" -PLATFORM_FLAVOR_mx8mn = "mx8mnevk" -PLATFORM_FLAVOR_mx8mp = "mx8mpevk" -PLATFORM_FLAVOR_mx8mpul = "mx8mpevk" -PLATFORM_FLAVOR_mx8qm = "mx8qmmek" -PLATFORM_FLAVOR_mx8qxp = "mx8qxpmek" -PLATFORM_FLAVOR_mx8dx = "mx8dxmek" -PLATFORM_FLAVOR_mx8dxl = "mx8dxlevk" -PLATFORM_FLAVOR_mx8mnul = "mx8mnevk" -PLATFORM_FLAVOR_mx8ulp = "mx8ulpevk" - -OPTEE_ARCH ?= "arm32" -OPTEE_ARCH:armv7a = "arm32" -OPTEE_ARCH:aarch64 = "arm64" - -# Optee-os can be built for 32 bits and 64 bits at the same time -# as long as the compilers are correctly defined. -# For 64bits, CROSS_COMPILE64 must be set -# When defining CROSS_COMPILE and CROSS_COMPILE64, we assure that -# any 32 or 64 bits builds will pass -EXTRA_OEMAKE = " \ - PLATFORM=imx \ - PLATFORM_FLAVOR=${PLATFORM_FLAVOR} \ - CROSS_COMPILE=${HOST_PREFIX} \ - CROSS_COMPILE64=${HOST_PREFIX} \ - CFG_TEE_TA_LOG_LEVEL=0 \ - CFG_TEE_CORE_LOG_LEVEL=0 \ - -C ${S} O=${B}\ -" - -LDFLAGS = "" -CFLAGS += "--sysroot=${STAGING_DIR_HOST}" -CXXFLAGS += "--sysroot=${STAGING_DIR_HOST}" - -do_deploy () { - install -d ${DEPLOYDIR} - cp ${B}/core/tee-raw.bin ${DEPLOYDIR}/tee.${PLATFORM_FLAVOR}.bin - ln -sf tee.${PLATFORM_FLAVOR}.bin ${DEPLOYDIR}/tee.bin - - if [ "${OPTEE_ARCH}" != "arm64" ]; then - IMX_LOAD_ADDR=`${TARGET_PREFIX}readelf -h ${B}/core/tee.elf | grep "Entry point address" | awk '{print $4}'` - uboot-mkimage -A arm -O linux -C none -a ${IMX_LOAD_ADDR} -e ${IMX_LOAD_ADDR} \ - -d ${DEPLOYDIR}/tee.${PLATFORM_FLAVOR}.bin ${DEPLOYDIR}/uTee-${OPTEE_BIN_EXT} - fi -} - -do_install () { - install -d ${D}${nonarch_base_libdir}/firmware/ - install -m 644 ${B}/core/*.bin ${D}${nonarch_base_libdir}/firmware/ - - # Install the TA devkit - install -d ${D}${includedir}/optee/export-user_ta_${OPTEE_ARCH}/ - - for f in ${B}/export-ta_${OPTEE_ARCH}/*; do - cp -aR $f ${D}${includedir}/optee/export-user_ta_${OPTEE_ARCH}/ - done - - # Install embedded TAs - install -d ${D}${base_libdir}/optee_armtz - find ${B}/ta -name '*.ta' | while read name; do - install -m 444 $name ${D}${base_libdir}/optee_armtz/ - done -} - -addtask deploy after do_compile before do_install - - -FILES:${PN} = "${nonarch_base_libdir}/firmware/ /lib*/optee_armtz/" -FILES:${PN}-staticdev = "/usr/include/optee/" -RDEPENDS:${PN}-dev += "${PN}-staticdev" - -PACKAGE_ARCH = "${MACHINE_ARCH}" -COMPATIBLE_MACHINE = "(imx|imx-boot-container)" diff --git a/meta-digi-arm/dynamic-layers/freescale-layer/recipes-security/optee-imx/optee-test_3.15.0.imx.bb b/meta-digi-arm/dynamic-layers/freescale-layer/recipes-security/optee-imx/optee-test_3.15.0.imx.bb deleted file mode 100644 index d6df0b99c..000000000 --- a/meta-digi-arm/dynamic-layers/freescale-layer/recipes-security/optee-imx/optee-test_3.15.0.imx.bb +++ /dev/null @@ -1,64 +0,0 @@ -# Copyright (C) 2017-2021 NXP - -SUMMARY = "OPTEE test" -HOMEPAGE = "http://www.optee.org/" - -LICENSE = "BSD" -LIC_FILES_CHKSUM = "file://LICENSE.md;md5=daa2bcccc666345ab8940aab1315a4fa" - -DEPENDS = "python3-pycrypto-native python3-pycryptodomex-native optee-os optee-client openssl" - -SRCBRANCH = "lf-5.10.72_2.2.0" - -OPTEE_TEST_SRC ?= "git://source.codeaurora.org/external/imx/imx-optee-test.git;protocol=https" -SRC_URI = "${OPTEE_TEST_SRC};branch=${SRCBRANCH}" - -S = "${WORKDIR}/git" -B = "${WORKDIR}/build" - -SRCREV = "4d81b964a72e89a62d04187b3f055d8346b383c9" - -inherit python3native - -OPTEE_ARCH ?= "arm32" -OPTEE_ARCH:armv7a = "arm32" -OPTEE_ARCH:aarch64 = "arm64" - -TA_DEV_KIT_DIR:arm = "${STAGING_INCDIR}/optee/export-user_ta:arm32/" -TA_DEV_KIT_DIR:aarch64 = "${STAGING_INCDIR}/optee/export-user_ta:arm64/" - -CFLAGS += "--sysroot=${STAGING_DIR_HOST}" -CXXFLAGS += "--sysroot=${STAGING_DIR_HOST}" - -EXTRA_OEMAKE = " \ - TA_DEV_KIT_DIR=${TA_DEV_KIT_DIR} \ - ARCH=${OPTEE_ARCH} \ - OPTEE_CLIENT_EXPORT=${STAGING_DIR_HOST}/usr \ - CROSS_COMPILE_HOST=${HOST_PREFIX} \ - CROSS_COMPILE_TA=${HOST_PREFIX} \ - CROSS_COMPILE=${HOST_PREFIX} \ - OPTEE_OPENSSL_EXPORT=${STAGING_INCDIR}/ \ - -C ${S} O=${B} \ -" - -do_compile() { - oe_runmake all -} -do_compile[cleandirs] = "${B}" - -do_install () { - install -d ${D}/usr/bin - install ${B}/xtest/xtest ${D}/usr/bin/ - - install -d ${D}/lib/optee_armtz - find ${B}/ta -name '*.ta' | while read name; do - install -m 444 $name ${D}/lib/optee_armtz/ - done - - install -d ${D}/usr/lib/tee-supplicant/plugins/ - install ${B}/supp_plugin/*plugin ${D}/usr/lib/tee-supplicant/plugins/ -} - -FILES:${PN} = "/usr/bin/ /lib*/optee_armtz/ /usr/lib/tee-supplicant/plugins/" - -COMPATIBLE_MACHINE = "(mx6|mx7|mx8)" diff --git a/meta-digi-arm/recipes-kernel/linux/linux-imx-headers_5.4.bb b/meta-digi-arm/recipes-kernel/linux/linux-imx-headers_5.4.bb deleted file mode 100644 index e48c002c2..000000000 --- a/meta-digi-arm/recipes-kernel/linux/linux-imx-headers_5.4.bb +++ /dev/null @@ -1,66 +0,0 @@ -# Copyright 2017-2020 NXP -# Released under the MIT license (see COPYING.MIT for the terms) - -SUMMARY = "Installs i.MX-specific kernel headers" -DESCRIPTION = "Installs i.MX-specific kernel headers to userspace. \ -New headers are installed in ${includedir}/imx." -LICENSE = "GPL-2.0-only" -LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814" - -SRCBRANCH = "v5.4.70/master" -require recipes-kernel/linux/linux-dey-src.inc - -S = "${WORKDIR}/git" - -do_compile[noexec] = "1" - -IMX_UAPI_HEADERS = " \ - dma-buf.h \ - hantrodec.h \ - hx280enc.h \ - ion.h \ - ipu.h \ - isl29023.h \ - mxc_asrc.h \ - mxc_dcic.h \ - mxc_mlb.h \ - mxc_sim_interface.h \ - mxc_v4l2.h \ - mxcfb.h \ - pxp_device.h \ - pxp_dma.h \ - videodev2.h \ -" - -do_install() { - # We install all headers inside of B so we can copy only the - # whitelisted ones, and there is no risk of a new header to be - # installed by mistake. - oe_runmake headers_install INSTALL_HDR_PATH=${B}${exec_prefix} - - # FIXME: The ion.h is still on staging so "promote" it for now - cp ${S}/drivers/staging/android/uapi/ion.h ${B}${includedir}/linux - - # Install whitelisted headers only - for h in ${IMX_UAPI_HEADERS}; do - install -D -m 0644 ${B}${includedir}/linux/$h \ - ${D}${includedir}/imx/linux/$h - done -} - -DEPENDS += "rsync-native" - -# Allow to build empty main package, this is required in order for -dev package -# to be propagated into the SDK -# -# Without this setting the RDEPENDS in other recipes fails to find this -# package, therefore causing the -dev package also to be skipped effectively not -# populating it into SDK -ALLOW_EMPTY:${PN} = "1" - -INHIBIT_DEFAULT_DEPS = "1" -DEPENDS += "unifdef-native bison-native rsync-native" - -PACKAGE_ARCH = "${MACHINE_SOCARCH}" - -COMPATIBLE_MACHINE = "(ccimx6ul|ccimx8x|ccimx8m|ccimx6)" diff --git a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-graphics/drm/libdrm/0001-meson-add-libdrm-vivante-to-the-meson-meta-data.patch b/meta-digi-dey/dynamic-layers/freescale-layer/recipes-graphics/drm/libdrm/0001-meson-add-libdrm-vivante-to-the-meson-meta-data.patch deleted file mode 100644 index ae6b0ab7d..000000000 --- a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-graphics/drm/libdrm/0001-meson-add-libdrm-vivante-to-the-meson-meta-data.patch +++ /dev/null @@ -1,140 +0,0 @@ -From 45f48f8a5de59c04b0510c23853772bc970f411e Mon Sep 17 00:00:00 2001 -From: Max Krummenacher -Date: Thu, 9 Jan 2020 01:01:35 +0000 -Subject: [PATCH] meson: add libdrm-vivante to the meson meta data - -Upstream libdrm added the option to use meason as the buildsystem. -Integrate Vivante into the relevant meson build information. - -Upstream-Status: Pending - -Signed-off-by: Max Krummenacher ---- - meson.build | 14 +++++++++++++ - meson_options.txt | 7 +++++++ - vivante/meson.build | 50 +++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 71 insertions(+) - create mode 100644 vivante/meson.build - -diff --git a/meson.build b/meson.build -index e292554a..f4740634 100644 ---- a/meson.build -+++ b/meson.build -@@ -157,6 +157,15 @@ if _vc4 != 'false' - with_vc4 = _vc4 == 'true' or ['arm', 'aarch64'].contains(host_machine.cpu_family()) - endif - -+with_vivante = false -+_vivante = get_option('vivante') -+if _vivante == 'true' -+ if not with_atomics -+ error('libdrm_vivante requires atomics.') -+ endif -+ with_vivante = true -+endif -+ - # XXX: Apparently only freebsd and dragonfly bsd actually need this (and - # gnu/kfreebsd), not openbsd and netbsd - with_libkms = false -@@ -312,6 +321,7 @@ install_headers( - 'include/drm/savage_drm.h', 'include/drm/sis_drm.h', - 'include/drm/tegra_drm.h', 'include/drm/vc4_drm.h', - 'include/drm/via_drm.h', 'include/drm/virtgpu_drm.h', -+ 'include/drm/vivante_drm.h', - subdir : 'libdrm', - ) - if with_vmwgfx -@@ -362,6 +372,9 @@ endif - if with_etnaviv - subdir('etnaviv') - endif -+if with_vivante -+ subdir('vivante') -+endif - if with_man_pages - subdir('man') - endif -@@ -382,5 +395,6 @@ message(' EXYNOS API @0@'.format(with_exynos)) - message(' Freedreno API @0@ (kgsl: @1@)'.format(with_freedreno, with_freedreno_kgsl)) - message(' Tegra API @0@'.format(with_tegra)) - message(' VC4 API @0@'.format(with_vc4)) -+message(' Vivante API @0@'.format(with_etnaviv)) - message(' Etnaviv API @0@'.format(with_etnaviv)) - message('') -diff --git a/meson_options.txt b/meson_options.txt -index 8af33f1c..dc69563d 100644 ---- a/meson_options.txt -+++ b/meson_options.txt -@@ -95,6 +95,13 @@ option( - choices : ['true', 'false', 'auto'], - description : '''Enable support for vc4's KMS API.''', - ) -+option( -+ 'vivante', -+ type : 'combo', -+ value : 'false', -+ choices : ['true', 'false', 'auto'], -+ description : '''Enable support for vivante's propriatary experimental KMS API.''', -+) - option( - 'etnaviv', - type : 'combo', -diff --git a/vivante/meson.build b/vivante/meson.build -new file mode 100644 -index 00000000..f6adb598 ---- /dev/null -+++ b/vivante/meson.build -@@ -0,0 +1,50 @@ -+# Copyright © 2017-2018 Intel Corporation -+ -+# Permission is hereby granted, free of charge, to any person obtaining a copy -+# of this software and associated documentation files (the "Software"), to deal -+# in the Software without restriction, including without limitation the rights -+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -+# copies of the Software, and to permit persons to whom the Software is -+# furnished to do so, subject to the following conditions: -+ -+# The above copyright notice and this permission notice shall be included in -+# all copies or substantial portions of the Software. -+ -+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -+# SOFTWARE. -+ -+ -+libdrm_vivante = shared_library( -+ 'drm_vivante', -+ [ -+ files( -+ 'vivante_bo.c', -+ ), -+ config_file -+ ], -+ include_directories : [inc_root, inc_drm], -+ link_with : libdrm, -+ c_args : libdrm_c_args, -+ dependencies : [dep_pthread_stubs, dep_rt, dep_atomic_ops], -+ version : '1.0.0', -+ install : true, -+) -+ -+pkg.generate( -+ name : 'libdrm_vivante', -+ libraries : libdrm_vivante, -+ subdirs : ['.', 'libdrm'], -+ version : meson.project_version(), -+ requires_private : 'libdrm', -+ description : 'Userspace interface to Vivante kernel DRM services', -+) -+ -+ext_libdrm_vivante = declare_dependency( -+ link_with : [libdrm, libdrm_vivante], -+ include_directories : [inc_drm, include_directories('.')], -+) --- -2.20.1 - diff --git a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-graphics/drm/libdrm_2.4.107.imx.bb b/meta-digi-dey/dynamic-layers/freescale-layer/recipes-graphics/drm/libdrm_2.4.107.imx.bb deleted file mode 100644 index cf5dadd40..000000000 --- a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-graphics/drm/libdrm_2.4.107.imx.bb +++ /dev/null @@ -1,73 +0,0 @@ -SUMMARY = "Userspace interface to the kernel DRM services" -DESCRIPTION = "The runtime library for accessing the kernel DRM services. DRM \ -stands for \"Direct Rendering Manager\", which is the kernel portion of the \ -\"Direct Rendering Infrastructure\" (DRI). DRI is required for many hardware \ -accelerated OpenGL drivers." -HOMEPAGE = "http://dri.freedesktop.org" -SECTION = "x11/base" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://xf86drm.c;beginline=9;endline=32;md5=c8a3b961af7667c530816761e949dc71" -PROVIDES = "drm" -DEPENDS = "libpthread-stubs" - -IMX_LIBDRM_SRC ?= "git://source.codeaurora.org/external/imx/libdrm-imx.git;protocol=https;nobranch=1" -IMX_LIBDRM_BRANCH ?= "libdrm-imx-2.4.107" -SRC_URI = "${IMX_LIBDRM_SRC};branch=${IMX_LIBDRM_BRANCH} \ - file://0001-meson-add-libdrm-vivante-to-the-meson-meta-data.patch " -SRCREV = "a7316e7d67b7708f40ffe469858dae07f14fe21a" -S = "${WORKDIR}/git" - -DEFAULT_PREFERENCE = "-1" -COMPATIBLE_MACHINE = "(mx6|mx7|mx8)" - -inherit meson pkgconfig manpages - -PACKAGECONFIG ??= "libkms intel radeon amdgpu nouveau vmwgfx omap freedreno vc4 etnaviv install-test-programs" -PACKAGECONFIG[libkms] = "-Dlibkms=true,-Dlibkms=false" -PACKAGECONFIG[intel] = "-Dintel=true,-Dintel=false,libpciaccess" -PACKAGECONFIG[radeon] = "-Dradeon=true,-Dradeon=false" -PACKAGECONFIG[amdgpu] = "-Damdgpu=true,-Damdgpu=false" -PACKAGECONFIG[nouveau] = "-Dnouveau=true,-Dnouveau=false" -PACKAGECONFIG[vmwgfx] = "-Dvmwgfx=true,-Dvmwgfx=false" -PACKAGECONFIG[omap] = "-Domap=true,-Domap=false" -PACKAGECONFIG[exynos] = "-Dexynos=true,-Dexynos=false" -PACKAGECONFIG[freedreno] = "-Dfreedreno=true,-Dfreedreno=false" -PACKAGECONFIG[tegra] = "-Dtegra=true,-Dtegra=false" -PACKAGECONFIG[vc4] = "-Dvc4=true,-Dvc4=false" -PACKAGECONFIG[etnaviv] = "-Detnaviv=true,-Detnaviv=false" -PACKAGECONFIG[freedreno-kgsl] = "-Dfreedreno-kgsl=true,-Dfreedreno-kgsl=false" -PACKAGECONFIG[valgrind] = "-Dvalgrind=true,-Dvalgrind=false,valgrind" -PACKAGECONFIG[install-test-programs] = "-Dinstall-test-programs=true,-Dinstall-test-programs=false" -PACKAGECONFIG[cairo-tests] = "-Dcairo-tests=true,-Dcairo-tests=false" -PACKAGECONFIG[udev] = "-Dudev=true,-Dudev=false,udev" -PACKAGECONFIG[manpages] = "-Dman-pages=true,-Dman-pages=false,libxslt-native xmlto-native python3-docutils-native" - -ALLOW_EMPTY:${PN}-drivers = "1" -PACKAGES =+ "${PN}-tests ${PN}-drivers ${PN}-radeon ${PN}-nouveau ${PN}-omap \ - ${PN}-intel ${PN}-exynos ${PN}-kms ${PN}-freedreno ${PN}-amdgpu \ - ${PN}-etnaviv" - -RRECOMMENDS:${PN}-drivers = "${PN}-radeon ${PN}-nouveau ${PN}-omap ${PN}-intel \ - ${PN}-exynos ${PN}-freedreno ${PN}-amdgpu \ - ${PN}-etnaviv" - -FILES:${PN}-tests = "${bindir}/*" -FILES:${PN}-radeon = "${libdir}/libdrm_radeon.so.*" -FILES:${PN}-nouveau = "${libdir}/libdrm_nouveau.so.*" -FILES:${PN}-omap = "${libdir}/libdrm_omap.so.*" -FILES:${PN}-intel = "${libdir}/libdrm_intel.so.*" -FILES:${PN}-exynos = "${libdir}/libdrm_exynos.so.*" -FILES:${PN}-kms = "${libdir}/libkms*.so.*" -FILES:${PN}-freedreno = "${libdir}/libdrm_freedreno.so.*" -FILES:${PN}-amdgpu = "${libdir}/libdrm_amdgpu.so.* ${datadir}/${PN}/amdgpu.ids" -FILES:${PN}-etnaviv = "${libdir}/libdrm_etnaviv.so.*" - -BBCLASSEXTEND = "native nativesdk" - -PACKAGES:prepend:imxgpu = "${PN}-vivante " -RRECOMMENDS:${PN}-drivers:append:imxgpu = " ${PN}-vivante" -FILES:${PN}-vivante = "${libdir}/libdrm_vivante.so.*" -PACKAGECONFIG:append:imxgpu = " vivante" -PACKAGECONFIG[vivante] = "-Dvivante=true,-Dvivante=false" - -PACKAGE_ARCH = "${MACHINE_SOCARCH}" diff --git a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.18.5.bb b/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.18.5.bb deleted file mode 100644 index a77ec6275..000000000 --- a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.18.5.bb +++ /dev/null @@ -1,24 +0,0 @@ -SUMMARY = "Libav-based GStreamer 1.x plugin" -DESCRIPTION = "Contains a GStreamer plugin for using the encoders, decoders, \ -muxers, and demuxers provided by FFmpeg." -HOMEPAGE = "http://gstreamer.freedesktop.org/" -SECTION = "multimedia" - -# ffmpeg has comercial license flags so add it as we need ffmpeg as a dependency -LICENSE_FLAGS = "commercial" -LICENSE = "LGPLv2+" -LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d \ - file://ext/libav/gstav.h;beginline=1;endline=18;md5=a752c35267d8276fd9ca3db6994fca9c \ - " - -SRC_URI = "https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${PV}.tar.xz" -SRC_URI[sha256sum] = "822e008a910e9dd13aedbdd8dc63fedef4040c0ee2e927bab3112e9de693a548" - -S = "${WORKDIR}/gst-libav-${PV}" - -DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base ffmpeg" - -inherit meson pkgconfig upstream-version-is-even - -FILES:${PN} += "${libdir}/gstreamer-1.0/*.so" -FILES:${PN}-staticdev += "${libdir}/gstreamer-1.0/*.a" diff --git a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-fix-maybe-uninitialized-warnings-when-compiling-with.patch b/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-fix-maybe-uninitialized-warnings-when-compiling-with.patch deleted file mode 100644 index 13a673cd5..000000000 --- a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-fix-maybe-uninitialized-warnings-when-compiling-with.patch +++ /dev/null @@ -1,28 +0,0 @@ -From f08ab3ac2ce43ac91d3bf65b26f26436690f499b Mon Sep 17 00:00:00 2001 -From: Andre McCurdy -Date: Tue, 26 Jan 2016 15:16:01 -0800 -Subject: [PATCH 1/4] fix maybe-uninitialized warnings when compiling with -Os - -Upstream-Status: Pending - -Signed-off-by: Andre McCurdy ---- - gst-libs/gst/codecparsers/gstvc1parser.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/gst-libs/gst/codecparsers/gstvc1parser.c b/gst-libs/gst/codecparsers/gstvc1parser.c -index 2c60ced..e8226d8 100644 ---- a/gst-libs/gst/codecparsers/gstvc1parser.c -+++ b/gst-libs/gst/codecparsers/gstvc1parser.c -@@ -1730,7 +1730,7 @@ gst_vc1_parse_sequence_layer (const guint8 * data, gsize size, - GstVC1SeqLayer * seqlayer) - { - guint32 tmp; -- guint8 tmp8; -+ guint8 tmp8 = 0; - guint8 structA[8] = { 0, }; - guint8 structB[12] = { 0, }; - GstBitReader br; --- -2.28.0 - diff --git a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0002-avoid-including-sys-poll.h-directly.patch b/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0002-avoid-including-sys-poll.h-directly.patch deleted file mode 100644 index ead6897f6..000000000 --- a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0002-avoid-including-sys-poll.h-directly.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 3b05e91720c10fcf6e0e408595b7217f6fa145c2 Mon Sep 17 00:00:00 2001 -From: Andre McCurdy -Date: Wed, 3 Feb 2016 18:05:41 -0800 -Subject: [PATCH 2/4] avoid including directly - -musl libc generates warnings if is included directly. - -Upstream-Status: Pending - -Signed-off-by: Andre McCurdy ---- - sys/dvb/gstdvbsrc.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/sys/dvb/gstdvbsrc.c b/sys/dvb/gstdvbsrc.c -index ca6b92a..b2772db 100644 ---- a/sys/dvb/gstdvbsrc.c -+++ b/sys/dvb/gstdvbsrc.c -@@ -97,7 +97,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include --- -2.28.0 - diff --git a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0003-ensure-valid-sentinals-for-gst_structure_get-etc.patch b/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0003-ensure-valid-sentinals-for-gst_structure_get-etc.patch deleted file mode 100644 index 88fbc40dc..000000000 --- a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0003-ensure-valid-sentinals-for-gst_structure_get-etc.patch +++ /dev/null @@ -1,88 +0,0 @@ -From 5ed27de9f662fe063b8b3d5d4335aa64cd4718c9 Mon Sep 17 00:00:00 2001 -From: Andre McCurdy -Date: Tue, 9 Feb 2016 14:00:00 -0800 -Subject: [PATCH 3/4] ensure valid sentinals for gst_structure_get() etc - -For GStreamer functions declared with G_GNUC_NULL_TERMINATED, -ie __attribute__((__sentinel__)), gcc will generate a warning if the -last parameter passed to the function is not NULL (where a valid NULL -in this context is defined as zero with any pointer type). - -The C callers to such functions within gst-plugins-bad use the C NULL -definition (ie ((void*)0)), which is a valid sentinel. - -However the C++ NULL definition (ie 0L), is not a valid sentinel -without an explicit cast to a pointer type. - -Upstream-Status: Pending - -Signed-off-by: Andre McCurdy ---- - sys/decklink/gstdecklink.cpp | 10 +++++----- - sys/decklink/gstdecklinkaudiosrc.cpp | 2 +- - sys/decklink/gstdecklinkvideosink.cpp | 2 +- - 3 files changed, 7 insertions(+), 7 deletions(-) - -diff --git a/sys/decklink/gstdecklink.cpp b/sys/decklink/gstdecklink.cpp -index 4dac7e1..43762ce 100644 ---- a/sys/decklink/gstdecklink.cpp -+++ b/sys/decklink/gstdecklink.cpp -@@ -674,7 +674,7 @@ gst_decklink_mode_get_generic_structure (GstDecklinkModeEnum e) - "pixel-aspect-ratio", GST_TYPE_FRACTION, mode->par_n, mode->par_d, - "interlace-mode", G_TYPE_STRING, - mode->interlaced ? "interleaved" : "progressive", -- "framerate", GST_TYPE_FRACTION, mode->fps_n, mode->fps_d, NULL); -+ "framerate", GST_TYPE_FRACTION, mode->fps_n, mode->fps_d, (void*)NULL); - - return s; - } -@@ -699,16 +699,16 @@ gst_decklink_mode_get_structure (GstDecklinkModeEnum e, BMDPixelFormat f, - case bmdFormat8BitYUV: /* '2vuy' */ - gst_structure_set (s, "format", G_TYPE_STRING, "UYVY", - "colorimetry", G_TYPE_STRING, mode->colorimetry, -- "chroma-site", G_TYPE_STRING, "mpeg2", NULL); -+ "chroma-site", G_TYPE_STRING, "mpeg2", (void*)NULL); - break; - case bmdFormat10BitYUV: /* 'v210' */ -- gst_structure_set (s, "format", G_TYPE_STRING, "v210", NULL); -+ gst_structure_set (s, "format", G_TYPE_STRING, "v210", (void*)NULL); - break; - case bmdFormat8BitARGB: /* 'ARGB' */ -- gst_structure_set (s, "format", G_TYPE_STRING, "ARGB", NULL); -+ gst_structure_set (s, "format", G_TYPE_STRING, "ARGB", (void*)NULL); - break; - case bmdFormat8BitBGRA: /* 'BGRA' */ -- gst_structure_set (s, "format", G_TYPE_STRING, "BGRA", NULL); -+ gst_structure_set (s, "format", G_TYPE_STRING, "BGRA", (void*)NULL); - break; - case bmdFormat10BitRGB: /* 'r210' Big-endian RGB 10-bit per component with SMPTE video levels (64-960). Packed as 2:10:10:10 */ - case bmdFormat12BitRGB: /* 'R12B' Big-endian RGB 12-bit per component with full range (0-4095). Packed as 12-bit per component */ -diff --git a/sys/decklink/gstdecklinkaudiosrc.cpp b/sys/decklink/gstdecklinkaudiosrc.cpp -index 2fef934..c47229a 100644 ---- a/sys/decklink/gstdecklinkaudiosrc.cpp -+++ b/sys/decklink/gstdecklinkaudiosrc.cpp -@@ -379,7 +379,7 @@ gst_decklink_audio_src_start (GstDecklinkAudioSrc * self) - g_mutex_unlock (&self->input->lock); - - if (videosrc) { -- g_object_get (videosrc, "connection", &vconn, NULL); -+ g_object_get (videosrc, "connection", &vconn, (void *) NULL); - gst_object_unref (videosrc); - - switch (vconn) { -diff --git a/sys/decklink/gstdecklinkvideosink.cpp b/sys/decklink/gstdecklinkvideosink.cpp -index e3a6775..f1a5aae 100644 ---- a/sys/decklink/gstdecklinkvideosink.cpp -+++ b/sys/decklink/gstdecklinkvideosink.cpp -@@ -286,7 +286,7 @@ reset_framerate (GstCapsFeatures * features, GstStructure * structure, - gpointer user_data) - { - gst_structure_set (structure, "framerate", GST_TYPE_FRACTION_RANGE, 0, 1, -- G_MAXINT, 1, NULL); -+ G_MAXINT, 1, (void *) NULL); - - return TRUE; - } --- -2.28.0 - diff --git a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0004-opencv-resolve-missing-opencv-data-dir-in-yocto-buil.patch b/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0004-opencv-resolve-missing-opencv-data-dir-in-yocto-buil.patch deleted file mode 100644 index b81670906..000000000 --- a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0004-opencv-resolve-missing-opencv-data-dir-in-yocto-buil.patch +++ /dev/null @@ -1,49 +0,0 @@ -From f19ff66640f2f472c4e9d9055253032d34e125c6 Mon Sep 17 00:00:00 2001 -From: Andrey Zhizhikin -Date: Mon, 27 Jan 2020 10:22:35 +0000 -Subject: [PATCH 4/4] opencv: resolve missing opencv data dir in yocto build - -When Yocto build is performed, opencv searches for data dir using simple -'test' command, this fails because pkg-config provides an absolute -path on the target which needs to be prepended by PKG_CONFIG_SYSROOT_DIR -in order for the 'test' utility to pick up the absolute path. - -Upstream-Status: Inappropriate [OE-specific] - -Signed-off-by: Andrey Zhizhikin ---- - ext/opencv/meson.build | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git a/ext/opencv/meson.build b/ext/opencv/meson.build -index 0b0b3fc..0ed3344 100644 ---- a/ext/opencv/meson.build -+++ b/ext/opencv/meson.build -@@ -78,20 +78,21 @@ else - endif - - if opencv_found -+ pkgconf_sysroot = run_command(python3, '-c', 'import os; print(os.environ.get("PKG_CONFIG_SYSROOT_DIR"))').stdout().strip() - opencv_prefix = opencv_dep.get_pkgconfig_variable('prefix') - gstopencv_cargs += ['-DOPENCV_PREFIX="' + opencv_prefix + '"'] - - # Check the data dir used by opencv for its xml data files - # Use prefix from pkg-config to be compatible with cross-compilation -- r = run_command('test', '-d', opencv_prefix + '/share/opencv') -+ r = run_command('test', '-d', pkgconf_sysroot + opencv_prefix + '/share/opencv') - if r.returncode() == 0 - gstopencv_cargs += '-DOPENCV_PATH_NAME="opencv"' - else -- r = run_command('test', '-d', opencv_prefix + '/share/OpenCV') -+ r = run_command('test', '-d', pkgconf_sysroot + opencv_prefix + '/share/OpenCV') - if r.returncode() == 0 - gstopencv_cargs += '-DOPENCV_PATH_NAME="OpenCV"' - else -- r = run_command('test', '-d', opencv_prefix + '/share/opencv4') -+ r = run_command('test', '-d', pkgconf_sysroot + opencv_prefix + '/share/opencv4') - if r.returncode() == 0 - gstopencv_cargs += '-DOPENCV_PATH_NAME="opencv4"' - else --- -2.28.0 - diff --git a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0005-msdk-fix-includedir-path.patch b/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0005-msdk-fix-includedir-path.patch deleted file mode 100644 index cb3bb7d36..000000000 --- a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0005-msdk-fix-includedir-path.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 1f00d5026118ebd48e4ccf83d32d67155c4e7f60 Mon Sep 17 00:00:00 2001 -From: Naveen Saini -Date: Wed, 30 Dec 2020 16:37:47 +0800 -Subject: [PATCH] msdk: fix includedir path - -In cross compilation, need to prepend PKG_CONFIG_SYSROOT_DIR to the dir path. - -Upstream-Status: Inappropriate [OE-specific] - -Signed-off-by: Naveen Saini ---- - sys/msdk/meson.build | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/sys/msdk/meson.build b/sys/msdk/meson.build -index 6346c9451..068f38548 100644 ---- a/sys/msdk/meson.build -+++ b/sys/msdk/meson.build -@@ -40,7 +40,9 @@ endif - - mfx_dep = dependency('libmfx', required: false) - if mfx_dep.found() -+ pkgconf_sysroot = run_command(python3, '-c', 'import os; print(os.environ.get("PKG_CONFIG_SYSROOT_DIR"))').stdout().strip() - mfx_incdir = mfx_dep.get_pkgconfig_variable('includedir') -+ mfx_incdir = pkgconf_sysroot + mfx_incdir - mfx_inc = [] - else - # Old versions of MediaSDK don't provide a pkg-config file --- -2.17.1 - diff --git a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.18.5.imx.bb b/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.18.5.imx.bb deleted file mode 100644 index 177791a01..000000000 --- a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.18.5.imx.bb +++ /dev/null @@ -1,197 +0,0 @@ -# This recipe is for the i.MX fork of gstreamer1.0-plugins-bad. For ease of -# maintenance, the top section is a verbatim copy of an OE-core -# recipe. The second section customizes the recipe for i.MX. - -########### OE-core copy ################## -# Upstream hash: 633739bc912cf84c78f5ae0f7fbcb41663a05c7f - -require recipes-multimedia/gstreamer/gstreamer1.0-plugins-common.inc - -DESCRIPTION = "'Bad' GStreamer plugins and helper libraries " -HOMEPAGE = "https://gstreamer.freedesktop.org/" -BUGTRACKER = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues" - -SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${PV}.tar.xz \ - file://0001-fix-maybe-uninitialized-warnings-when-compiling-with.patch \ - file://0002-avoid-including-sys-poll.h-directly.patch \ - file://0003-ensure-valid-sentinals-for-gst_structure_get-etc.patch \ - file://0004-opencv-resolve-missing-opencv-data-dir-in-yocto-buil.patch \ - file://0005-msdk-fix-includedir-path.patch \ - " -SRC_URI[sha256sum] = "74e806bc5595b18c70e9ca93571e27e79dfb808e5d2e7967afa952b52e99c85f" - -S = "${WORKDIR}/gst-plugins-bad-${PV}" - -LICENSE = "GPLv2+ & LGPLv2+ & LGPLv2.1+" -LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c" - -DEPENDS += "gstreamer1.0-plugins-base" - -inherit gobject-introspection - -PACKAGECONFIG ??= " \ - ${GSTREAMER_ORC} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \ - ${@bb.utils.filter('DISTRO_FEATURES', 'directfb vulkan', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gl', '', d)} \ - bz2 closedcaption curl dash dtls hls rsvg sbc smoothstreaming sndfile \ - ttml uvch264 webp \ -" - -PACKAGECONFIG[aom] = "-Daom=enabled,-Daom=disabled,aom" -PACKAGECONFIG[assrender] = "-Dassrender=enabled,-Dassrender=disabled,libass" -PACKAGECONFIG[bluez] = "-Dbluez=enabled,-Dbluez=disabled,bluez5" -PACKAGECONFIG[bz2] = "-Dbz2=enabled,-Dbz2=disabled,bzip2" -PACKAGECONFIG[closedcaption] = "-Dclosedcaption=enabled,-Dclosedcaption=disabled,pango cairo" -PACKAGECONFIG[curl] = "-Dcurl=enabled,-Dcurl=disabled,curl" -PACKAGECONFIG[dash] = "-Ddash=enabled,-Ddash=disabled,libxml2" -PACKAGECONFIG[dc1394] = "-Ddc1394=enabled,-Ddc1394=disabled,libdc1394" -PACKAGECONFIG[directfb] = "-Ddirectfb=enabled,-Ddirectfb=disabled,directfb" -PACKAGECONFIG[dtls] = "-Ddtls=enabled,-Ddtls=disabled,openssl" -PACKAGECONFIG[faac] = "-Dfaac=enabled,-Dfaac=disabled,faac" -PACKAGECONFIG[faad] = "-Dfaad=enabled,-Dfaad=disabled,faad2" -PACKAGECONFIG[fluidsynth] = "-Dfluidsynth=enabled,-Dfluidsynth=disabled,fluidsynth" -PACKAGECONFIG[hls] = "-Dhls=enabled -Dhls-crypto=nettle,-Dhls=disabled,nettle" -# the gl packageconfig enables OpenGL elements that haven't been ported -# to -base yet. They depend on the gstgl library in -base, so we do -# not add GL dependencies here, since these are taken care of in -base. -PACKAGECONFIG[gl] = "-Dgl=enabled,-Dgl=disabled," -PACKAGECONFIG[kms] = "-Dkms=enabled,-Dkms=disabled,libdrm" -PACKAGECONFIG[libde265] = "-Dlibde265=enabled,-Dlibde265=disabled,libde265" -PACKAGECONFIG[libmms] = "-Dlibmms=enabled,-Dlibmms=disabled,libmms" -PACKAGECONFIG[libssh2] = "-Dcurl-ssh2=enabled,-Dcurl-ssh2=disabled,libssh2" -PACKAGECONFIG[lcms2] = "-Dcolormanagement=enabled,-Dcolormanagement=disabled,lcms" -PACKAGECONFIG[modplug] = "-Dmodplug=enabled,-Dmodplug=disabled,libmodplug" -PACKAGECONFIG[msdk] = "-Dmsdk=enabled,-Dmsdk=disabled,intel-mediasdk" -PACKAGECONFIG[neon] = "-Dneon=enabled,-Dneon=disabled,neon" -PACKAGECONFIG[openal] = "-Dopenal=enabled,-Dopenal=disabled,openal-soft" -PACKAGECONFIG[opencv] = "-Dopencv=enabled,-Dopencv=disabled,opencv" -PACKAGECONFIG[openh264] = "-Dopenh264=enabled,-Dopenh264=disabled,openh264" -PACKAGECONFIG[openjpeg] = "-Dopenjpeg=enabled,-Dopenjpeg=disabled,openjpeg" -PACKAGECONFIG[openmpt] = "-Dopenmpt=enabled,-Dopenmpt=disabled,libopenmpt" -# the opus encoder/decoder elements are now in the -base package, -# but the opus parser remains in -bad -PACKAGECONFIG[opusparse] = "-Dopus=enabled,-Dopus=disabled,libopus" -PACKAGECONFIG[resindvd] = "-Dresindvd=enabled,-Dresindvd=disabled,libdvdread libdvdnav" -PACKAGECONFIG[rsvg] = "-Drsvg=enabled,-Drsvg=disabled,librsvg" -PACKAGECONFIG[rtmp] = "-Drtmp=enabled,-Drtmp=disabled,rtmpdump" -PACKAGECONFIG[sbc] = "-Dsbc=enabled,-Dsbc=disabled,sbc" -PACKAGECONFIG[sctp] = "-Dsctp=enabled,-Dsctp=disabled" -PACKAGECONFIG[smoothstreaming] = "-Dsmoothstreaming=enabled,-Dsmoothstreaming=disabled,libxml2" -PACKAGECONFIG[sndfile] = "-Dsndfile=enabled,-Dsndfile=disabled,libsndfile1" -PACKAGECONFIG[srt] = "-Dsrt=enabled,-Dsrt=disabled,srt" -PACKAGECONFIG[srtp] = "-Dsrtp=enabled,-Dsrtp=disabled,libsrtp" -PACKAGECONFIG[tinyalsa] = "-Dtinyalsa=enabled,-Dtinyalsa=disabled,tinyalsa" -PACKAGECONFIG[ttml] = "-Dttml=enabled,-Dttml=disabled,libxml2 pango cairo" -PACKAGECONFIG[uvch264] = "-Duvch264=enabled,-Duvch264=disabled,libusb1 libgudev" -PACKAGECONFIG[v4l2codecs] = "-Dv4l2codecs=enabled,-Dv4l2codecs=disabled,libgudev" -PACKAGECONFIG[va] = "-Dva=enabled,-Dva=disabled,libva" -PACKAGECONFIG[voaacenc] = "-Dvoaacenc=enabled,-Dvoaacenc=disabled,vo-aacenc" -PACKAGECONFIG[voamrwbenc] = "-Dvoamrwbenc=enabled,-Dvoamrwbenc=disabled,vo-amrwbenc" -PACKAGECONFIG[vulkan] = "-Dvulkan=enabled,-Dvulkan=disabled,vulkan-loader shaderc-native" -PACKAGECONFIG[wayland] = "-Dwayland=enabled,-Dwayland=disabled,wayland-native wayland wayland-protocols libdrm" -PACKAGECONFIG[webp] = "-Dwebp=enabled,-Dwebp=disabled,libwebp" -PACKAGECONFIG[webrtc] = "-Dwebrtc=enabled,-Dwebrtc=disabled,libnice" -PACKAGECONFIG[webrtcdsp] = "-Dwebrtcdsp=enabled,-Dwebrtcdsp=disabled,webrtc-audio-processing" -PACKAGECONFIG[zbar] = "-Dzbar=enabled,-Dzbar=disabled,zbar" -PACKAGECONFIG[x265] = "-Dx265=enabled,-Dx265=disabled,x265" - -EXTRA_OEMESON += " \ - -Ddoc=disabled \ - -Ddecklink=enabled \ - -Ddvb=enabled \ - -Dfbdev=enabled \ - -Dipcpipeline=enabled \ - -Dshm=enabled \ - -Dtranscode=enabled \ - -Dandroidmedia=disabled \ - -Dapplemedia=disabled \ - -Davtp=disabled \ - -Dbs2b=disabled \ - -Dchromaprint=disabled \ - -Dd3dvideosink=disabled \ - -Dd3d11=disabled \ - -Ddirectsound=disabled \ - -Ddts=disabled \ - -Dfdkaac=disabled \ - -Dflite=disabled \ - -Dgme=disabled \ - -Dgsm=disabled \ - -Diqa=disabled \ - -Dkate=disabled \ - -Dladspa=disabled \ - -Dlv2=disabled \ - -Dmagicleap=disabled \ - -Dmediafoundation=disabled \ - -Dmicrodns=disabled \ - -Dmpeg2enc=disabled \ - -Dmplex=disabled \ - -Dmusepack=disabled \ - -Dnvcodec=disabled \ - -Dofa=disabled \ - -Dopenexr=disabled \ - -Dopenni2=disabled \ - -Dopensles=disabled \ - -Dsoundtouch=disabled \ - -Dspandsp=disabled \ - -Dsvthevcenc=disabled \ - -Dteletext=disabled \ - -Dwasapi=disabled \ - -Dwasapi2=disabled \ - -Dwildmidi=disabled \ - -Dwinks=disabled \ - -Dwinscreencap=disabled \ - -Dwpe=disabled \ - -Dzxing=disabled \ -" - -export OPENCV_PREFIX = "${STAGING_DIR_TARGET}${prefix}" - -ARM_INSTRUCTION_SET:armv4 = "arm" -ARM_INSTRUCTION_SET:armv5 = "arm" - -FILES:${PN}-freeverb += "${datadir}/gstreamer-1.0/presets/GstFreeverb.prs" -FILES:${PN}-opencv += "${datadir}/gst-plugins-bad/1.0/opencv*" -FILES:${PN}-transcode += "${datadir}/gstreamer-1.0/encoding-profiles" -FILES:${PN}-voamrwbenc += "${datadir}/gstreamer-1.0/presets/GstVoAmrwbEnc.prs" - -########### End of OE-core copy ########### - -########### i.MX overrides ################ - -DEFAULT_PREFERENCE = "-1" - -DEPENDS:append:imxgpu2d = " virtual/libg2d" - -SRC_URI:remove = "https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${PV}.tar.xz" -GST1.0-PLUGINS-BAD_SRC ?= "gitsm://source.codeaurora.org/external/imx/gst-plugins-bad.git;protocol=https" -SRCBRANCH = "MM_04.06.03_2110_L5.10.y" -SRC_URI:prepend = "${GST1.0-PLUGINS-BAD_SRC};branch=${SRCBRANCH} " -SRCREV = "64ea74a49cc06da92126cc680968497df679da8c" - -S = "${WORKDIR}/git" - -inherit use-imx-headers - -PACKAGE_ARCH:imxpxp = "${MACHINE_SOCARCH}" -PACKAGE_ARCH:mx8 = "${MACHINE_SOCARCH}" - -PACKAGECONFIG_REMOVE ?= " \ - dtls vulkan \ - ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', '', 'gl', d)} \ -" -PACKAGECONFIG:remove = "${PACKAGECONFIG_REMOVE}" -PACKAGECONFIG:append:mx8 = " kms tinycompress" - -PACKAGECONFIG[tinycompress] = "-Dtinycompress=enabled,-Dtinycompress=disabled,tinycompress" - -# Disable introspection to fix [GstPlayer-1.0.gir] Error -EXTRA_OEMESON += " \ - -Dintrospection=disabled \ - -Dc_args="${CFLAGS} -I${STAGING_INCDIR_IMX}" \ -" - -COMPATIBLE_MACHINE = "(mx6|mx7|mx8)" - -########### End of i.MX overrides ######### diff --git a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-viv-fb-Make-sure-config.h-is-included.patch b/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-viv-fb-Make-sure-config.h-is-included.patch deleted file mode 100644 index 5dc405299..000000000 --- a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-viv-fb-Make-sure-config.h-is-included.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 4b5c7f655bf10b8b58df5ed5647a711b3502d4d2 Mon Sep 17 00:00:00 2001 -From: Carlos Rafael Giani -Date: Tue, 21 May 2019 14:01:11 +0200 -Subject: [PATCH] viv-fb: Make sure config.h is included - -This prevents build errors due to missing GST_API_* symbols - -Upstream-Status: Pending - -Signed-off-by: Carlos Rafael Giani - ---- - gst-libs/gst/gl/gl-prelude.h | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/gst-libs/gst/gl/gl-prelude.h b/gst-libs/gst/gl/gl-prelude.h -index 05e1f6229..96ce5e685 100644 ---- a/gst-libs/gst/gl/gl-prelude.h -+++ b/gst-libs/gst/gl/gl-prelude.h -@@ -22,6 +22,10 @@ - #ifndef __GST_GL_PRELUDE_H__ - #define __GST_GL_PRELUDE_H__ - -+#ifdef HAVE_CONFIG_H -+#include "config.h" -+#endif -+ - #include - - #ifdef BUILDING_GST_GL diff --git a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.18.5.imx.bb b/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.18.5.imx.bb deleted file mode 100644 index 42393bca2..000000000 --- a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.18.5.imx.bb +++ /dev/null @@ -1,138 +0,0 @@ -# This recipe is for the i.MX fork of gstreamer1.0-plugins-base. For ease of -# maintenance, the top section is a verbatim copy of an OE-core -# recipe. The second section customizes the recipe for i.MX. - -########### OE-core copy ################## -# Upstream hash: 633739bc912cf84c78f5ae0f7fbcb41663a05c7f - -require recipes-multimedia/gstreamer/gstreamer1.0-plugins-common.inc - -DESCRIPTION = "'Base' GStreamer plugins and helper libraries" -HOMEPAGE = "https://gstreamer.freedesktop.org/" -BUGTRACKER = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues" -LICENSE = "GPLv2+ & LGPLv2+" -LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d" - -SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${PV}.tar.xz \ - file://0001-ENGR00312515-get-caps-from-src-pad-when-query-caps.patch \ - file://0003-viv-fb-Make-sure-config.h-is-included.patch \ - file://0002-ssaparse-enhance-SSA-text-lines-parsing.patch \ - file://0004-glimagesink-Downrank-to-marginal.patch \ - " -SRC_URI[sha256sum] = "29e53229a84d01d722f6f6db13087231cdf6113dd85c25746b9b58c3d68e8323" - -S = "${WORKDIR}/gst-plugins-base-${PV}" - -DEPENDS += "iso-codes util-linux zlib" - -inherit gobject-introspection - -PACKAGES_DYNAMIC =+ "^libgst.*" - -# opengl packageconfig factored out to make it easy for distros -# and BSP layers to choose OpenGL APIs/platforms/window systems -PACKAGECONFIG_GL ?= "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gles2 egl', '', d)}" - -PACKAGECONFIG ??= " \ - ${GSTREAMER_ORC} \ - ${PACKAGECONFIG_GL} \ - ${@bb.utils.filter('DISTRO_FEATURES', 'alsa x11', d)} \ - jpeg ogg pango png theora vorbis \ - ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland egl', '', d)} \ -" - -OPENGL_APIS = 'opengl gles2' -OPENGL_PLATFORMS = 'egl' - -X11DEPENDS = "virtual/libx11 libsm libxrender libxv" -X11ENABLEOPTS = "-Dx11=enabled -Dxvideo=enabled -Dxshm=enabled" -X11DISABLEOPTS = "-Dx11=disabled -Dxvideo=disabled -Dxshm=disabled" - -PACKAGECONFIG[alsa] = "-Dalsa=enabled,-Dalsa=disabled,alsa-lib" -PACKAGECONFIG[cdparanoia] = "-Dcdparanoia=enabled,-Dcdparanoia=disabled,cdparanoia" -PACKAGECONFIG[jpeg] = "-Dgl-jpeg=enabled,-Dgl-jpeg=disabled,jpeg" -PACKAGECONFIG[ogg] = "-Dogg=enabled,-Dogg=disabled,libogg" -PACKAGECONFIG[opus] = "-Dopus=enabled,-Dopus=disabled,libopus" -PACKAGECONFIG[pango] = "-Dpango=enabled,-Dpango=disabled,pango" -PACKAGECONFIG[png] = "-Dgl-png=enabled,-Dgl-png=disabled,libpng" -PACKAGECONFIG[theora] = "-Dtheora=enabled,-Dtheora=disabled,libtheora" -PACKAGECONFIG[tremor] = "-Dtremor=enabled,-Dtremor=disabled,tremor" -PACKAGECONFIG[visual] = "-Dlibvisual=enabled,-Dlibvisual=disabled,libvisual" -PACKAGECONFIG[vorbis] = "-Dvorbis=enabled,-Dvorbis=disabled,libvorbis" -PACKAGECONFIG[x11] = "${X11ENABLEOPTS},${X11DISABLEOPTS},${X11DEPENDS}" - -# OpenGL API packageconfigs -PACKAGECONFIG[opengl] = ",,virtual/libgl libglu" -PACKAGECONFIG[gles2] = ",,virtual/libgles2" - -# OpenGL platform packageconfigs -PACKAGECONFIG[egl] = ",,virtual/egl" - -# OpenGL window systems (except for X11) -PACKAGECONFIG[gbm] = ",,virtual/libgbm libgudev libdrm" -PACKAGECONFIG[wayland] = ",,wayland-native wayland wayland-protocols libdrm" -PACKAGECONFIG[dispmanx] = ",,virtual/libomxil" - -OPENGL_WINSYS:append = "${@bb.utils.contains('PACKAGECONFIG', 'x11', ' x11', '', d)}" -OPENGL_WINSYS:append = "${@bb.utils.contains('PACKAGECONFIG', 'gbm', ' gbm', '', d)}" -OPENGL_WINSYS:append = "${@bb.utils.contains('PACKAGECONFIG', 'wayland', ' wayland', '', d)}" -OPENGL_WINSYS:append = "${@bb.utils.contains('PACKAGECONFIG', 'dispmanx', ' dispmanx', '', d)}" -OPENGL_WINSYS:append = "${@bb.utils.contains('PACKAGECONFIG', 'egl', ' egl', '', d)}" - -EXTRA_OEMESON += " \ - -Ddoc=disabled \ - -Dgl-graphene=disabled \ - ${@get_opengl_cmdline_list('gl_api', d.getVar('OPENGL_APIS'), d)} \ - ${@get_opengl_cmdline_list('gl_platform', d.getVar('OPENGL_PLATFORMS'), d)} \ - ${@get_opengl_cmdline_list('gl_winsys', d.getVar('OPENGL_WINSYS'), d)} \ -" - -FILES:${PN}-dev += "${libdir}/gstreamer-1.0/include/gst/gl/gstglconfig.h" -FILES:${MLPREFIX}libgsttag-1.0 += "${datadir}/gst-plugins-base/1.0/license-translations.dict" - -def get_opengl_cmdline_list(switch_name, options, d): - selected_options = [] - if bb.utils.contains('DISTRO_FEATURES', 'opengl', True, False, d): - for option in options.split(): - if bb.utils.contains('PACKAGECONFIG', option, True, False, d): - selected_options += [option] - if selected_options: - return '-D' + switch_name + '=' + ','.join(selected_options) - else: - return '' - -CVE_PRODUCT += "gst-plugins-base" - -########### End of OE-core copy ########### - -########### i.MX overrides ################ - -DEFAULT_PREFERENCE = "-1" - -DEPENDS:append:imxgpu2d = " virtual/libg2d" - -SRC_URI:remove = " \ - https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${PV}.tar.xz \ - file://0001-ENGR00312515-get-caps-from-src-pad-when-query-caps.patch \ - file://0002-ssaparse-enhance-SSA-text-lines-parsing.patch \ - file://0004-glimagesink-Downrank-to-marginal.patch \ -" -GST1.0-PLUGINS-BASE_SRC ?= "gitsm://source.codeaurora.org/external/imx/gst-plugins-base.git;protocol=https" -SRCBRANCH = "MM_04.06.03_2110_L5.10.y" -SRC_URI:prepend = "${GST1.0-PLUGINS-BASE_SRC};branch=${SRCBRANCH} " -SRCREV = "5fe4c49ad969d0bc5e104212ad261911b15a0b83" - -S = "${WORKDIR}/git" - -inherit use-imx-headers - -PACKAGECONFIG_REMOVE ?= "jpeg" -PACKAGECONFIG:remove = "${PACKAGECONFIG_REMOVE}" -PACKAGECONFIG_GL:append = "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', ' viv-fb', '', d)}" -PACKAGECONFIG[viv-fb] = ",,virtual/libgles2" -OPENGL_WINSYS:append = "${@bb.utils.contains('PACKAGECONFIG', 'viv-fb', ' viv-fb', '', d)}" -EXTRA_OEMESON += "-Dc_args="${CFLAGS} -I${STAGING_INCDIR_IMX}"" - -COMPATIBLE_MACHINE = "(mx6|mx7|mx8)" - -########### End of i.MX overrides ######### diff --git a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-qt-include-ext-qt-gstqtgl.h-instead-of-gst-gl-gstglf.patch b/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-qt-include-ext-qt-gstqtgl.h-instead-of-gst-gl-gstglf.patch deleted file mode 100644 index 788d75205..000000000 --- a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-qt-include-ext-qt-gstqtgl.h-instead-of-gst-gl-gstglf.patch +++ /dev/null @@ -1,56 +0,0 @@ -From bf8b2fa0f6870589d036f0f33c140a3f85b530a0 Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Tue, 31 Mar 2020 21:23:28 -0700 -Subject: [PATCH] qt: include ext/qt/gstqtgl.h instead of gst/gl/gstglfuncs.h - -gst/gl/gstglfuncs.h is included via ext/qt/gstqtgl.h which has logic to -prefer qt headers definitions for GLsync - -This helps in fixing build errors like below - -/mnt/b/yoe/build/tmp/work/cortexa7t2hf-neon-vfpv4-yoe-linux-gnueabi/gstreamer1.0-plugins-good/1.16.2-r0/recipe-sysroot/usr/include/QtGui/qopengles2ext.h:24:26: error: conflicting declaration 'typedef struct __GLsync* GLsync' - 24 | typedef struct __GLsync *GLsync; - | ^~~~~~ -In file included from /mnt/b/yoe/build/tmp/work/cortexa7t2hf-neon-vfpv4-yoe-linux-gnueabi/gstreamer1.0-plugins-good/1.16.2-r0/recipe-sysroot/usr/include/gstreamer-1.0/gst/gl/gstglfuncs.h:84, - from ../gst-plugins-good-1.16.2/ext/qt/gstqsgtexture.cc:30: -/mnt/b/yoe/build/tmp/work/cortexa7t2hf-neon-vfpv4-yoe-linux-gnueabi/gstreamer1.0-plugins-good/1.16.2-r0/recipe-sysroot/usr/include/gstreamer-1.0/gst/gl/glprototypes/gstgl_compat.h:40:18: note: previous declaration as 'typedef void* GLsync -' - 40 | typedef gpointer GLsync; - | ^~~~~~ - -Upstream-Status: Pending -Signed-off-by: Khem Raj ---- - ext/qt/gstqsgtexture.cc | 2 +- - ext/qt/qtwindow.cc | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/ext/qt/gstqsgtexture.cc b/ext/qt/gstqsgtexture.cc -index a05d26e..4cc9fc6 100644 ---- a/ext/qt/gstqsgtexture.cc -+++ b/ext/qt/gstqsgtexture.cc -@@ -27,7 +27,7 @@ - - #include - #include --#include -+#include - #include "gstqsgtexture.h" - - #define GST_CAT_DEFAULT gst_qsg_texture_debug -diff --git a/ext/qt/qtwindow.cc b/ext/qt/qtwindow.cc -index 9360c33..0dfd3f1 100644 ---- a/ext/qt/qtwindow.cc -+++ b/ext/qt/qtwindow.cc -@@ -25,7 +25,7 @@ - #include - - #include --#include -+#include - #include "qtwindow.h" - #include "gstqsgtexture.h" - #include "gstqtglutility.h" --- -2.28.0 - diff --git a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.18.5.imx.bb b/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.18.5.imx.bb deleted file mode 100644 index 3516f31d3..000000000 --- a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.18.5.imx.bb +++ /dev/null @@ -1,109 +0,0 @@ -# This recipe is for the i.MX fork of gstreamer1.0-plugins-good. For ease of -# maintenance, the top section is a verbatim copy of an OE-core -# recipe. The second section customizes the recipe for i.MX. - -########### OE-core copy ################## -# Upstream hash: 633739bc912cf84c78f5ae0f7fbcb41663a05c7f - -require recipes-multimedia/gstreamer/gstreamer1.0-plugins-common.inc - -DESCRIPTION = "'Good' GStreamer plugins" -HOMEPAGE = "https://gstreamer.freedesktop.org/" -BUGTRACKER = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues" - -SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${PV}.tar.xz \ - file://0001-qt-include-ext-qt-gstqtgl.h-instead-of-gst-gl-gstglf.patch \ - file://0002-rtpjitterbuffer-Fix-parsing-of-the-mediaclk-direct-f.patch \ - " - -SRC_URI[sha256sum] = "b6e50e3a9bbcd56ee6ec71c33aa8332cc9c926b0c1fae995aac8b3040ebe39b0" - -S = "${WORKDIR}/gst-plugins-good-${PV}" - -LICENSE = "GPLv2+ & LGPLv2.1+" -LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ - file://gst/replaygain/rganalysis.c;beginline=1;endline=23;md5=b60ebefd5b2f5a8e0cab6bfee391a5fe" - -DEPENDS += "gstreamer1.0-plugins-base libcap zlib" -RPROVIDES:${PN}-pulseaudio += "${PN}-pulse" -RPROVIDES:${PN}-soup += "${PN}-souphttpsrc" - -PACKAGECONFIG ??= " \ - ${GSTREAMER_ORC} \ - ${@bb.utils.filter('DISTRO_FEATURES', 'pulseaudio x11', d)} \ - ${@bb.utils.contains('TUNE_FEATURES', 'm64', 'asm', '', d)} \ - bz2 cairo flac gdk-pixbuf gudev jpeg lame libpng mpg123 soup speex taglib v4l2 \ -" - -X11DEPENDS = "virtual/libx11 libsm libxrender libxfixes libxdamage" -X11ENABLEOPTS = "-Dximagesrc=enabled -Dximagesrc-xshm=enabled -Dximagesrc-xfixes=enabled -Dximagesrc-xdamage=enabled" -X11DISABLEOPTS = "-Dximagesrc=disabled -Dximagesrc-xshm=disabled -Dximagesrc-xfixes=disabled -Dximagesrc-xdamage=disabled" - -QT5WAYLANDDEPENDS = "${@bb.utils.contains("DISTRO_FEATURES", "wayland", "qtwayland", "", d)}" - -PACKAGECONFIG[asm] = "-Dasm=enabled,-Dasm=disabled,nasm-native" -PACKAGECONFIG[bz2] = "-Dbz2=enabled,-Dbz2=disabled,bzip2" -PACKAGECONFIG[cairo] = "-Dcairo=enabled,-Dcairo=disabled,cairo" -PACKAGECONFIG[dv1394] = "-Ddv1394=enabled,-Ddv1394=disabled,libiec61883 libavc1394 libraw1394" -PACKAGECONFIG[flac] = "-Dflac=enabled,-Dflac=disabled,flac" -PACKAGECONFIG[gdk-pixbuf] = "-Dgdk-pixbuf=enabled,-Dgdk-pixbuf=disabled,gdk-pixbuf" -PACKAGECONFIG[gtk] = "-Dgtk3=enabled,-Dgtk3=disabled,gtk+3" -PACKAGECONFIG[gudev] = "-Dv4l2-gudev=enabled,-Dv4l2-gudev=disabled,libgudev" -PACKAGECONFIG[jack] = "-Djack=enabled,-Djack=disabled,jack" -PACKAGECONFIG[jpeg] = "-Djpeg=enabled,-Djpeg=disabled,jpeg" -PACKAGECONFIG[lame] = "-Dlame=enabled,-Dlame=disabled,lame" -PACKAGECONFIG[libpng] = "-Dpng=enabled,-Dpng=disabled,libpng" -PACKAGECONFIG[libv4l2] = "-Dv4l2-libv4l2=enabled,-Dv4l2-libv4l2=disabled,v4l-utils" -PACKAGECONFIG[mpg123] = "-Dmpg123=enabled,-Dmpg123=disabled,mpg123" -PACKAGECONFIG[pulseaudio] = "-Dpulse=enabled,-Dpulse=disabled,pulseaudio" -PACKAGECONFIG[qt5] = "-Dqt5=enabled,-Dqt5=disabled,qtbase qtdeclarative qtbase-native ${QT5WAYLANDDEPENDS}" -PACKAGECONFIG[soup] = "-Dsoup=enabled,-Dsoup=disabled,libsoup-2.4" -PACKAGECONFIG[speex] = "-Dspeex=enabled,-Dspeex=disabled,speex" -PACKAGECONFIG[rpi] = "-Drpicamsrc=enabled,-Drpicamsrc=disabled,userland" -PACKAGECONFIG[taglib] = "-Dtaglib=enabled,-Dtaglib=disabled,taglib" -PACKAGECONFIG[v4l2] = "-Dv4l2=enabled -Dv4l2-probe=true,-Dv4l2=disabled -Dv4l2-probe=false" -PACKAGECONFIG[vpx] = "-Dvpx=enabled,-Dvpx=disabled,libvpx" -PACKAGECONFIG[wavpack] = "-Dwavpack=enabled,-Dwavpack=disabled,wavpack" -PACKAGECONFIG[x11] = "${X11ENABLEOPTS},${X11DISABLEOPTS},${X11DEPENDS}" - -EXTRA_OEMESON += " \ - -Ddoc=disabled \ - -Daalib=disabled \ - -Ddirectsound=disabled \ - -Ddv=disabled \ - -Dlibcaca=disabled \ - -Doss=enabled \ - -Doss4=disabled \ - -Dosxaudio=disabled \ - -Dosxvideo=disabled \ - -Dshout2=disabled \ - -Dtwolame=disabled \ - -Dwaveform=disabled \ -" - -FILES:${PN}-equalizer += "${datadir}/gstreamer-1.0/presets/*.prs" - -########### End of OE-core copy ########### - -########### i.MX overrides ################ - -DEFAULT_PREFERENCE = "-1" - -# fb implementation of v4l2 uses libdrm -DEPENDS_V4L2 = "${@bb.utils.contains_any('DISTRO_FEATURES', 'wayland x11', '', 'libdrm', d)}" -DEPENDS += "${@bb.utils.contains('PACKAGECONFIG', 'v4l2', '${DEPENDS_V4L2}', '', d)}" - -SRC_URI:remove = " \ - https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${PV}.tar.xz \ - file://0002-rtpjitterbuffer-Fix-parsing-of-the-mediaclk-direct-f.patch \ -" -GST1.0-PLUGINS-GOOD_SRC ?= "gitsm://source.codeaurora.org/external/imx/gst-plugins-good.git;protocol=https" -SRCBRANCH = "MM_04.06.03_2110_L5.10.y" -SRC_URI:prepend = "${GST1.0-PLUGINS-GOOD_SRC};branch=${SRCBRANCH} " -SRCREV = "7113baa4dd681cf028b04ef4ebe70b06db4b0f08" - -S = "${WORKDIR}/git" - -COMPATIBLE_MACHINE = "(mx6|mx7|mx8)" - -########### End of i.MX overrides ######### diff --git a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.18.5.bb b/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.18.5.bb deleted file mode 100644 index e4ae0344c..000000000 --- a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.18.5.bb +++ /dev/null @@ -1,43 +0,0 @@ -require recipes-multimedia/gstreamer/gstreamer1.0-plugins-common.inc - -DESCRIPTION = "'Ugly GStreamer plugins" -HOMEPAGE = "https://gstreamer.freedesktop.org/" -BUGTRACKER = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/issues" - -LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ - file://tests/check/elements/xingmux.c;beginline=1;endline=21;md5=4c771b8af188724855cb99cadd390068" - -LICENSE = "GPLv2+ & LGPLv2.1+ & LGPLv2+" -LICENSE_FLAGS = "commercial" - -SRC_URI = " \ - https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${PV}.tar.xz \ - " -SRC_URI[sha256sum] = "df32803e98f8a9979373fa2ca7e05e62f977b1097576d3a80619d9f5c69f66d9" - -S = "${WORKDIR}/gst-plugins-ugly-${PV}" - -DEPENDS += "gstreamer1.0-plugins-base" - -GST_PLUGIN_SET_HAS_EXAMPLES = "0" - -PACKAGECONFIG ??= " \ - ${GSTREAMER_ORC} \ - a52dec mpeg2dec \ -" - -PACKAGECONFIG[a52dec] = "-Da52dec=enabled,-Da52dec=disabled,liba52" -PACKAGECONFIG[amrnb] = "-Damrnb=enabled,-Damrnb=disabled,opencore-amr" -PACKAGECONFIG[amrwb] = "-Damrwbdec=enabled,-Damrwbdec=disabled,opencore-amr" -PACKAGECONFIG[cdio] = "-Dcdio=enabled,-Dcdio=disabled,libcdio" -PACKAGECONFIG[dvdread] = "-Ddvdread=enabled,-Ddvdread=disabled,libdvdread" -PACKAGECONFIG[mpeg2dec] = "-Dmpeg2dec=enabled,-Dmpeg2dec=disabled,mpeg2dec" -PACKAGECONFIG[x264] = "-Dx264=enabled,-Dx264=disabled,x264" - -EXTRA_OEMESON += " \ - -Ddoc=disabled \ - -Dsidplay=disabled \ -" - -FILES:${PN}-amrnb += "${datadir}/gstreamer-1.0/presets/GstAmrnbEnc.prs" -FILES:${PN}-x264 += "${datadir}/gstreamer-1.0/presets/GstX264Enc.prs" diff --git a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.18.5.bb b/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.18.5.bb deleted file mode 100644 index 02fb4b0f7..000000000 --- a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.18.5.bb +++ /dev/null @@ -1,31 +0,0 @@ -SUMMARY = "A library on top of GStreamer for building an RTSP server" -HOMEPAGE = "http://cgit.freedesktop.org/gstreamer/gst-rtsp-server/" -SECTION = "multimedia" -LICENSE = "LGPLv2" -LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d" - -DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base" - -PNREAL = "gst-rtsp-server" - -SRC_URI = "https://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz" - -SRC_URI[sha256sum] = "04d63bf48816c6f41c73f6de0f912a7cef0aab39c44162a7bcece1923dfc9d1f" - -S = "${WORKDIR}/${PNREAL}-${PV}" - -inherit meson pkgconfig upstream-version-is-even gobject-introspection - -EXTRA_OEMESON += " \ - -Ddoc=disabled \ - -Dexamples=disabled \ - -Dtests=disabled \ -" - -GIR_MESON_ENABLE_FLAG = "enabled" -GIR_MESON_DISABLE_FLAG = "disabled" - -# Starting with 1.8.0 gst-rtsp-server includes dependency-less plugins as well -require recipes-multimedia/gstreamer/gstreamer1.0-plugins-packaging.inc - -CVE_PRODUCT += "gst-rtsp-server" diff --git a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0/0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch b/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0/0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch deleted file mode 100644 index 786e7faaa..000000000 --- a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0/0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch +++ /dev/null @@ -1,64 +0,0 @@ -From 14a8b5f82f70b7619e3b5596dec14fa6532919d5 Mon Sep 17 00:00:00 2001 -From: Jose Quaresma -Date: Sat, 10 Oct 2020 19:09:03 +0000 -Subject: [PATCH] gstpluginloader: when env var is set do not fall through to - system plugin scanner - -If we set a custom GST_PLUGIN_SCANNER env var, then we probably want to use that and only that. - -Falling through to the one installed on the system is problamatic in cross-compilation -environemnts, regardless of whether one pointed to by the env var succeeded or failed. - -taken from: -http://cgit.openembedded.org/openembedded-core/commit/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch?id=0db7ba34ca41b107042306d13a6f0162885c123b - -Upstream-Status: Submitted [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/669] -Signed-off-by: Jose Quaresma - ---- - gst/gstpluginloader.c | 15 +++++++-------- - 1 file changed, 7 insertions(+), 8 deletions(-) - -diff --git a/gst/gstpluginloader.c b/gst/gstpluginloader.c -index 621b24349..4e0f64650 100644 ---- a/gst/gstpluginloader.c -+++ b/gst/gstpluginloader.c -@@ -464,20 +464,19 @@ gst_plugin_loader_spawn (GstPluginLoader * loader) - if (loader->child_running) - return TRUE; - -- /* Find the gst-plugin-scanner: first try the env-var if it is set, -- * otherwise use the installed version */ -+ /* Find the gst-plugin-scanner */ - env = g_getenv ("GST_PLUGIN_SCANNER_1_0"); - if (env == NULL) - env = g_getenv ("GST_PLUGIN_SCANNER"); - - if (env != NULL && *env != '\0') { -+ /* use the env-var if it is set */ - GST_LOG ("Trying GST_PLUGIN_SCANNER env var: %s", env); - helper_bin = g_strdup (env); - res = gst_plugin_loader_try_helper (loader, helper_bin); - g_free (helper_bin); -- } -- -- if (!res) { -+ } else { -+ /* use the installed version */ - GST_LOG ("Trying installed plugin scanner"); - - #ifdef G_OS_WIN32 -@@ -497,10 +496,10 @@ gst_plugin_loader_spawn (GstPluginLoader * loader) - #endif - res = gst_plugin_loader_try_helper (loader, helper_bin); - g_free (helper_bin); -+ } - -- if (!res) { -- GST_INFO ("No gst-plugin-scanner available, or not working"); -- } -+ if (!res) { -+ GST_INFO ("No gst-plugin-scanner available, or not working"); - } - - return loader->child_running; diff --git a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0/0001-tests-seek-Don-t-use-too-strict-timeout-for-validati.patch b/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0/0001-tests-seek-Don-t-use-too-strict-timeout-for-validati.patch deleted file mode 100644 index a2af5eec3..000000000 --- a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0/0001-tests-seek-Don-t-use-too-strict-timeout-for-validati.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 30958cc93d4872926a7e8f139ad45d29b5be2520 Mon Sep 17 00:00:00 2001 -From: Seungha Yang -Date: Tue, 15 Sep 2020 00:54:58 +0900 -Subject: [PATCH] tests: seek: Don't use too strict timeout for validation - -Expected segment-done message might not be seen within expected -time if system is not powerful enough. - -Part-of: - -Upstream-Status: Backport [https://cgit.freedesktop.org/gstreamer/gstreamer/commit?id=f44312ae5d831438fcf8041162079c65321c588c] -Signed-off-by: Anuj Mittal - ---- - tests/check/pipelines/seek.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/tests/check/pipelines/seek.c b/tests/check/pipelines/seek.c -index 28bb8846d..5f7447bc5 100644 ---- a/tests/check/pipelines/seek.c -+++ b/tests/check/pipelines/seek.c -@@ -521,7 +521,7 @@ GST_START_TEST (test_loopback_2) - - GST_INFO ("wait for segment done message"); - -- msg = gst_bus_timed_pop_filtered (bus, (GstClockTime) 2 * GST_SECOND, -+ msg = gst_bus_timed_pop_filtered (bus, GST_CLOCK_TIME_NONE, - GST_MESSAGE_SEGMENT_DONE | GST_MESSAGE_ERROR); - fail_unless (msg, "no message within the timed window"); - fail_unless_equals_string (GST_MESSAGE_TYPE_NAME (msg), "segment-done"); diff --git a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0/0002-Remove-unused-valgrind-detection.patch b/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0/0002-Remove-unused-valgrind-detection.patch deleted file mode 100644 index c4ecd0069..000000000 --- a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0/0002-Remove-unused-valgrind-detection.patch +++ /dev/null @@ -1,110 +0,0 @@ -From caa29d32c6729aa6a7005d6cf8ea5e36ff710272 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= -Date: Fri, 14 Aug 2020 16:38:26 +0100 -Subject: [PATCH] Remove unused valgrind detection - -Having this just to log a debug message in case we're -running inside valgrind doesn't seem very useful, and -the code that used to use this no longer exists it seems. - -Part-of: - -Upstream-Status: Backport [a2cbf75523cdf8a4df1baa7007d86ef455972245] - -Signed-off-by: Jose Quaresma - ---- - gst/gst_private.h | 2 -- - gst/gstinfo.c | 39 --------------------------------------- - meson.build | 1 - - 3 files changed, 42 deletions(-) - -diff --git a/gst/gst_private.h b/gst/gst_private.h -index eefd044d9..8252ede51 100644 ---- a/gst/gst_private.h -+++ b/gst/gst_private.h -@@ -116,8 +116,6 @@ G_GNUC_INTERNAL gboolean _priv_plugin_deps_env_vars_changed (GstPlugin * plugin - - G_GNUC_INTERNAL gboolean _priv_plugin_deps_files_changed (GstPlugin * plugin); - --G_GNUC_INTERNAL gboolean _priv_gst_in_valgrind (void); -- - /* init functions called from gst_init(). */ - G_GNUC_INTERNAL void _priv_gst_quarks_initialize (void); - G_GNUC_INTERNAL void _priv_gst_mini_object_initialize (void); -diff --git a/gst/gstinfo.c b/gst/gstinfo.c -index eea1a219d..d3035d6db 100644 ---- a/gst/gstinfo.c -+++ b/gst/gstinfo.c -@@ -305,36 +305,6 @@ static gboolean pretty_tags = PRETTY_TAGS_DEFAULT; - static gint G_GNUC_MAY_ALIAS __default_level = GST_LEVEL_DEFAULT; - static gint G_GNUC_MAY_ALIAS __use_color = GST_DEBUG_COLOR_MODE_ON; - --/* FIXME: export this? */ --gboolean --_priv_gst_in_valgrind (void) --{ -- static enum -- { -- GST_VG_UNCHECKED, -- GST_VG_NO_VALGRIND, -- GST_VG_INSIDE -- } -- in_valgrind = GST_VG_UNCHECKED; -- -- if (in_valgrind == GST_VG_UNCHECKED) { --#ifdef HAVE_VALGRIND_VALGRIND_H -- if (RUNNING_ON_VALGRIND) { -- GST_CAT_INFO (GST_CAT_GST_INIT, "we're running inside valgrind"); -- in_valgrind = GST_VG_INSIDE; -- } else { -- GST_CAT_LOG (GST_CAT_GST_INIT, "not doing extra valgrind stuff"); -- in_valgrind = GST_VG_NO_VALGRIND; -- } --#else -- in_valgrind = GST_VG_NO_VALGRIND; --#endif -- g_assert (in_valgrind == GST_VG_NO_VALGRIND || -- in_valgrind == GST_VG_INSIDE); -- } -- return (in_valgrind == GST_VG_INSIDE); --} -- - static gchar * - _replace_pattern_in_gst_debug_file_name (gchar * name, const char *token, - guint val) -@@ -463,9 +433,6 @@ _priv_gst_debug_init (void) - _priv_GST_CAT_PROTECTION = - _gst_debug_category_new ("GST_PROTECTION", 0, "protection"); - -- /* print out the valgrind message if we're in valgrind */ -- _priv_gst_in_valgrind (); -- - env = g_getenv ("GST_DEBUG_OPTIONS"); - if (env != NULL) { - if (strstr (env, "full_tags") || strstr (env, "full-tags")) -@@ -2505,12 +2472,6 @@ gst_debug_construct_win_color (guint colorinfo) - return 0; - } - --gboolean --_priv_gst_in_valgrind (void) --{ -- return FALSE; --} -- - void - _gst_debug_dump_mem (GstDebugCategory * cat, const gchar * file, - const gchar * func, gint line, GObject * obj, const gchar * msg, -diff --git a/meson.build b/meson.build -index 82a17282b..42ae61790 100644 ---- a/meson.build -+++ b/meson.build -@@ -200,7 +200,6 @@ check_headers = [ - 'sys/wait.h', - 'ucontext.h', - 'unistd.h', -- 'valgrind/valgrind.h', - 'sys/resource.h', - 'sys/uio.h', - ] diff --git a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0/0003-meson-Add-option-for-installed-tests.patch b/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0/0003-meson-Add-option-for-installed-tests.patch deleted file mode 100644 index 503ef7971..000000000 --- a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0/0003-meson-Add-option-for-installed-tests.patch +++ /dev/null @@ -1,255 +0,0 @@ -From 1453e8c73b8cb9414143df6a7dd164709d3c454c Mon Sep 17 00:00:00 2001 -From: Carlos Rafael Giani -Date: Fri, 25 Oct 2019 00:06:26 +0200 -Subject: [PATCH] meson: Add option for installed tests - -This adds an option for producing installed versions of the unit tests. -These versions don't need meson to run (only a small shell script). This -makes it easier to run cross compiled tests on a target machine. - -Upstream-Status: Pending - -Signed-off-by: Carlos Rafael Giani - ---- - build-aux/gen-installed-test-desc.py | 18 ++++++ - build-aux/gen-installed-test-shscript.py | 25 ++++++++ - meson_options.txt | 2 + - tests/check/meson.build | 46 +++++++++++++- - tests/files/testfile | 80 ++++++++++++++++++++++++ - 5 files changed, 170 insertions(+), 1 deletion(-) - create mode 100644 build-aux/gen-installed-test-desc.py - create mode 100644 build-aux/gen-installed-test-shscript.py - create mode 100644 tests/files/testfile - -diff --git a/build-aux/gen-installed-test-desc.py b/build-aux/gen-installed-test-desc.py -new file mode 100644 -index 000000000..69e8a0faf ---- /dev/null -+++ b/build-aux/gen-installed-test-desc.py -@@ -0,0 +1,18 @@ -+import sys -+import os -+import argparse -+ -+def write_template(filename, data): -+ with open(filename, 'w') as f: -+ f.write(data) -+ -+def build_template(testdir, testname): -+ return "[Test]\nType=session\nExec={}\n".format(os.path.join(testdir, testname)) -+ -+argparser = argparse.ArgumentParser(description='Generate installed-test data.') -+argparser.add_argument('--test-execdir', metavar='dir', required=True, help='Installed test directory') -+argparser.add_argument('--testname', metavar='name', required=True, help='Installed test name') -+argparser.add_argument('--output', metavar='file', required=True, help='Output file') -+args = argparser.parse_args() -+ -+write_template(args.output, build_template(args.test_execdir, args.testname)) -diff --git a/build-aux/gen-installed-test-shscript.py b/build-aux/gen-installed-test-shscript.py -new file mode 100644 -index 000000000..5da86fb37 ---- /dev/null -+++ b/build-aux/gen-installed-test-shscript.py -@@ -0,0 +1,25 @@ -+import sys -+import os -+import argparse -+ -+def write_template(filename, data): -+ with open(filename, 'w') as f: -+ f.write(data) -+ -+def build_template(testdir, testname): -+ return ''.join([ -+ "#!/usr/bin/env sh\n", -+ "export GST_STATE_IGNORE_ELEMENTS=''\n", -+ "export CK_DEFAULT_TIMEOUT=20\n", -+ "export GST_PLUGIN_LOADING_WHITELIST='gstreamer'\n", -+ "{}\n".format(os.path.join(testdir, testname)), -+ ]) -+ -+argparser = argparse.ArgumentParser(description='Generate installed-test data.') -+argparser.add_argument('--test-execdir', metavar='dir', required=True, help='Installed test directory') -+argparser.add_argument('--testname', metavar='name', required=True, help='Installed test name') -+argparser.add_argument('--output', metavar='file', required=True, help='Output file') -+args = argparser.parse_args() -+ -+write_template(args.output, build_template(args.test_execdir, args.testname)) -+os.chmod(args.output, 0o755) -diff --git a/meson_options.txt b/meson_options.txt -index 72c3997e2..346c423d4 100644 ---- a/meson_options.txt -+++ b/meson_options.txt -@@ -15,6 +15,8 @@ option('poisoning', type : 'boolean', value : false, description : 'Enable poiso - option('memory-alignment', type: 'combo', - choices : ['1', '2', '4', '8', '16', '32', '64', '128', '256', '512', '1024', '2048', '4096', '8192', 'malloc', 'pagesize'], - value: 'malloc') -+option('installed-tests', type : 'boolean', value : false, description : 'enable installed tests') -+option('test-files-path', type : 'string', description : 'Path where to find test files') - - # Feature options - option('check', type : 'feature', value : 'auto', description : 'Build unit test libraries') -diff --git a/tests/check/meson.build b/tests/check/meson.build -index a617cf159..e629131c5 100644 ---- a/tests/check/meson.build -+++ b/tests/check/meson.build -@@ -120,11 +120,17 @@ if add_languages('cpp', native: false, required: false) - ] - endif - -+test_files_path = get_option('test-files-path') -+if test_files_path == '' -+ test_files_path = meson.current_source_dir() + '/../files' -+endif -+message('Using path "@0@" as the path to read test files from'.format(test_files_path)) -+ - test_defines = [ - '-UG_DISABLE_ASSERT', - '-UG_DISABLE_CAST_CHECKS', - '-DGST_CHECK_TEST_ENVIRONMENT_BEACON="GST_STATE_IGNORE_ELEMENTS"', -- '-DTESTFILE="' + meson.current_source_dir() + '/meson.build"', -+ '-DTESTFILE="@0@"'.format(test_files_path + '/testfile'), - '-DGST_DISABLE_DEPRECATED', - ] - -@@ -138,6 +144,14 @@ endif - glib_deps = [gio_dep, gobject_dep, gmodule_dep, glib_dep] - gst_deps = [gst_dep, gst_base_dep, gst_check_dep, gst_net_dep, gst_controller_dep] - -+installed_tests_datadir = join_paths(prefix, get_option('datadir'), 'installed-tests', 'gstreamer-1.0') -+installed_tests_execdir = join_paths(prefix, libexecdir, 'installed-tests', 'gstreamer-1.0') -+installed_tests_enabled = get_option('installed-tests') -+ -+python = import('python').find_installation() -+gen_installed_test_desc = files('../../build-aux/gen-installed-test-desc.py') -+gen_installed_test_shscript = files('../../build-aux/gen-installed-test-shscript.py') -+ - foreach t : core_tests - fname = t[0] - test_name = fname.split('.')[0].underscorify() -@@ -151,8 +165,38 @@ foreach t : core_tests - include_directories : [configinc], - link_with : link_with_libs, - dependencies : test_deps + glib_deps + gst_deps, -+ install_dir: installed_tests_execdir, -+ install: installed_tests_enabled - ) - -+ if installed_tests_enabled -+ installed_test_shscript = test_name + '.sh' -+ shscript = custom_target (test_name + '_shscript', -+ output: installed_test_shscript, -+ command: [ -+ python, -+ gen_installed_test_shscript, -+ '--test-execdir=@0@'.format(installed_tests_execdir), -+ '--testname=@0@'.format(test_name), -+ '--output=@0@'.format(join_paths('@OUTDIR@', installed_test_shscript)), -+ ], -+ install: true, -+ install_dir: installed_tests_execdir) -+ -+ installed_test_desc = test_name + '.test' -+ data = custom_target(test_name + '_desc', -+ output: installed_test_desc, -+ command: [ -+ python, -+ gen_installed_test_desc, -+ '--test-execdir=@0@'.format(installed_tests_execdir), -+ '--testname=@0@'.format(installed_test_shscript), -+ '--output=@0@'.format(join_paths('@OUTDIR@', installed_test_desc)), -+ ], -+ install: true, -+ install_dir: installed_tests_datadir) -+ endif -+ - env = environment() - env.set('GST_PLUGIN_PATH_1_0', meson.build_root()) - env.set('GST_PLUGIN_SYSTEM_PATH_1_0', '') -diff --git a/tests/files/testfile b/tests/files/testfile -new file mode 100644 -index 000000000..89954e0e2 ---- /dev/null -+++ b/tests/files/testfile -@@ -0,0 +1,80 @@ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ -+................................................................................ diff --git a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0_1.18.5.imx.bb b/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0_1.18.5.imx.bb deleted file mode 100644 index e647d6f81..000000000 --- a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/gstreamer1.0_1.18.5.imx.bb +++ /dev/null @@ -1,97 +0,0 @@ -# This recipe is for the i.MX fork of gstreamer1.0. For ease of -# maintenance, the top section is a verbatim copy of an OE-core -# recipe. The second section customizes the recipe for i.MX. - -########### OE-core copy ################## -# Upstream hash: 633739bc912cf84c78f5ae0f7fbcb41663a05c7f - -SUMMARY = "GStreamer 1.0 multimedia framework" -DESCRIPTION = "GStreamer is a multimedia framework for encoding and decoding video and sound. \ -It supports a wide range of formats including mp3, ogg, avi, mpeg and quicktime." -HOMEPAGE = "http://gstreamer.freedesktop.org/" -BUGTRACKER = "https://bugzilla.gnome.org/enter_bug.cgi?product=Gstreamer" -SECTION = "multimedia" -LICENSE = "LGPLv2+" - -DEPENDS = "glib-2.0 glib-2.0-native libxml2 bison-native flex-native" - -inherit meson pkgconfig gettext upstream-version-is-even gobject-introspection - -LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d \ - file://gst/gst.h;beginline=1;endline=21;md5=e059138481205ee2c6fc1c079c016d0d" - -S = "${WORKDIR}/gstreamer-${PV}" - -SRC_URI = "https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${PV}.tar.xz \ - file://0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch \ - file://0002-Remove-unused-valgrind-detection.patch \ - file://0003-meson-Add-option-for-installed-tests.patch \ - file://0001-tests-seek-Don-t-use-too-strict-timeout-for-validati.patch \ - " -SRC_URI[sha256sum] = "9aeec99b38e310817012aa2d1d76573b787af47f8a725a65b833880a094dfbc5" - -PACKAGECONFIG ??= "${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)} \ - check \ - debug \ - tools" - -PACKAGECONFIG[debug] = "-Dgst_debug=true,-Dgst_debug=false" -PACKAGECONFIG[tracer-hooks] = "-Dtracer_hooks=true,-Dtracer_hooks=false" -PACKAGECONFIG[coretracers] = "-Dcoretracers=enabled,-Dcoretracers=disabled" -PACKAGECONFIG[check] = "-Dcheck=enabled,-Dcheck=disabled" -PACKAGECONFIG[tests] = "-Dtests=enabled -Dinstalled-tests=true,-Dtests=disabled -Dinstalled-tests=false" -PACKAGECONFIG[unwind] = "-Dlibunwind=enabled,-Dlibunwind=disabled,libunwind" -PACKAGECONFIG[dw] = "-Dlibdw=enabled,-Dlibdw=disabled,elfutils" -PACKAGECONFIG[bash-completion] = "-Dbash-completion=enabled,-Dbash-completion=disabled,bash-completion" -PACKAGECONFIG[tools] = "-Dtools=enabled,-Dtools=disabled" -PACKAGECONFIG[setcap] = "-Dptp-helper-permissions=capabilities,,libcap libcap-native" - -# TODO: put this in a gettext.bbclass patch -def gettext_oemeson(d): - if d.getVar('USE_NLS') == 'no': - return '-Dnls=disabled' - # Remove the NLS bits if USE_NLS is no or INHIBIT_DEFAULT_DEPS is set - if d.getVar('INHIBIT_DEFAULT_DEPS') and not oe.utils.inherits(d, 'cross-canadian'): - return '-Dnls=disabled' - return '-Dnls=enabled' - -EXTRA_OEMESON += " \ - -Ddoc=disabled \ - -Dexamples=disabled \ - -Ddbghelp=disabled \ - ${@gettext_oemeson(d)} \ -" - -GIR_MESON_ENABLE_FLAG = "enabled" -GIR_MESON_DISABLE_FLAG = "disabled" - -PACKAGES += "${PN}-bash-completion" - -# Add the core element plugins to the main package -FILES:${PN} += "${libdir}/gstreamer-1.0/*.so" -FILES:${PN}-dev += "${libdir}/gstreamer-1.0/*.a ${libdir}/gstreamer-1.0/include" -FILES:${PN}-bash-completion += "${datadir}/bash-completion/completions/ ${datadir}/bash-completion/helpers/gst*" -FILES:${PN}-dbg += "${datadir}/gdb ${datadir}/gstreamer-1.0/gdb" - -CVE_PRODUCT = "gstreamer" - -require recipes-multimedia/gstreamer/gstreamer1.0-ptest.inc - -########### End of OE-core copy ########### - -########### i.MX overrides ################ - -DEFAULT_PREFERENCE = "-1" - -# Use i.MX fork of GST for customizations -SRC_URI:remove = "https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${PV}.tar.xz" -GST1.0_SRC ?= "gitsm://source.codeaurora.org/external/imx/gstreamer.git;protocol=https" -SRCBRANCH = "MM_04.06.03_2110_L5.10.y" -SRC_URI:prepend = "${GST1.0_SRC};branch=${SRCBRANCH} " -SRCREV = "a55998c70940bd183d25d29e1b82fd3bc9f43df3" - -S = "${WORKDIR}/git" - -COMPATIBLE_MACHINE = "(mx6|mx7|mx8)" - -########### End of i.MX overrides ######### diff --git a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/imx-gst1.0-plugin/0001-gstimxv4l2-map-dev-video1-to-dev-fb0.patch b/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/imx-gst1.0-plugin/0001-gstimxv4l2-map-dev-video1-to-dev-fb0.patch index 4aa2a1b7f..5e0cf5723 100644 --- a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/imx-gst1.0-plugin/0001-gstimxv4l2-map-dev-video1-to-dev-fb0.patch +++ b/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/imx-gst1.0-plugin/0001-gstimxv4l2-map-dev-video1-to-dev-fb0.patch @@ -17,10 +17,10 @@ https://jira.digi.com/browse/DEL-3399 1 file changed, 1 insertion(+) diff --git a/libs/v4l2_core/gstimxv4l2.c b/libs/v4l2_core/gstimxv4l2.c -index 52f43794a71d..633f267df4b8 100755 +index 257a60422e76..58cdcdad3ffd 100755 --- a/libs/v4l2_core/gstimxv4l2.c +++ b/libs/v4l2_core/gstimxv4l2.c -@@ -208,6 +208,7 @@ static guint g_camera_format_PXP[] = { +@@ -212,6 +212,7 @@ static guint g_camera_format_PXP[] = { static IMXV4l2DeviceMap g_device_maps[] = { {"/dev/video0", FALSE, "/dev/fb0"}, diff --git a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/imx-gst1.0-plugin/0002-imx-gst1.0-plugin-fix-build-using-MUSL-C-library.patch b/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/imx-gst1.0-plugin/0002-imx-gst1.0-plugin-fix-build-using-MUSL-C-library.patch index e9f7dc60b..17251850b 100644 --- a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/imx-gst1.0-plugin/0002-imx-gst1.0-plugin-fix-build-using-MUSL-C-library.patch +++ b/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/imx-gst1.0-plugin/0002-imx-gst1.0-plugin-fix-build-using-MUSL-C-library.patch @@ -9,7 +9,7 @@ Signed-off-by: Javier Viguera 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/gplay2/gplay2.c b/tools/gplay2/gplay2.c -index 3fa056a86307..a6e5db5535d2 100755 +index 1e37521a06cc..f001a883d74f 100755 --- a/tools/gplay2/gplay2.c +++ b/tools/gplay2/gplay2.c @@ -26,7 +26,6 @@ @@ -21,7 +21,7 @@ index 3fa056a86307..a6e5db5535d2 100755 #include #include diff --git a/tools/grecorder/grecorder.c b/tools/grecorder/grecorder.c -index 1fec19f900fe..dc912d36e056 100644 +index c8eff2f53efd..841a0aa83fba 100644 --- a/tools/grecorder/grecorder.c +++ b/tools/grecorder/grecorder.c @@ -24,7 +24,9 @@ diff --git a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/imx-gst1.0-plugin_%.bbappend b/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/imx-gst1.0-plugin_%.bbappend index 91009dfd9..26165cb13 100644 --- a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/imx-gst1.0-plugin_%.bbappend +++ b/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/imx-gst1.0-plugin_%.bbappend @@ -1,4 +1,4 @@ -# Copyright (C) 2016-2020 Digi International Inc. +# Copyright (C) 2016-2022 Digi International Inc. FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:" diff --git a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/imx-gst1.0-plugin_4.6.3.bb b/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/imx-gst1.0-plugin_4.6.3.bb deleted file mode 100644 index d93f12e11..000000000 --- a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/gstreamer/imx-gst1.0-plugin_4.6.3.bb +++ /dev/null @@ -1,82 +0,0 @@ -# Copyright (C) 2014,2016 Freescale Semiconductor -# Copyright 2017-2021 NXP -# Copyright (C) 2012-2015 O.S. Systems Software LTDA. -# Released under the MIT license (see COPYING.MIT for the terms) - -DESCRIPTION = "Gstreamer freescale plugins" -LICENSE = "GPLv2 & LGPLv2 & LGPLv2.1" -SECTION = "multimedia" - -DEPENDS = "imx-codec imx-parser libdrm gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad" -DEPENDS:append:mx6 = " imx-lib" -DEPENDS:append:mx7 = " imx-lib" -DEPENDS:append:mx8ulp = " imx-lib" -DEPENDS:append:imxvpu = " imx-vpuwrap" - -# For backwards compatibility -RREPLACES:${PN} = "gst1.0-fsl-plugin" -RPROVIDES:${PN} = "gst1.0-fsl-plugin" -RCONFLICTS:${PN} = "gst1.0-fsl-plugin" - -LIC_FILES_CHKSUM = "file://COPYING-LGPL-2;md5=5f30f0716dfdd0d91eb439ebec522ec2 \ - file://COPYING-LGPL-2.1;md5=fbc093901857fcd118f065f900982c24" - -IMXGST_SRC ?= "git://source.codeaurora.org/external/imx/imx-gst1.0-plugin.git;protocol=https" -SRCBRANCH = "MM_04.06.03_2110_L5.10.y" - -SRC_URI = "${IMXGST_SRC};branch=${SRCBRANCH} \ -" -SRCREV = "9f7bae2a59c06480e4bbf4b8f84718811b9eb812" - -S = "${WORKDIR}/git" - -inherit meson pkgconfig use-imx-headers - -PLATFORM_mx6 = "MX6" -PLATFORM_mx6sl = "MX6SL" -PLATFORM_mx6sx = "MX6SX" -PLATFORM_mx6ul = "MX6UL" -PLATFORM_mx6sll = "MX6SLL" -PLATFORM_mx7= "MX7D" -PLATFORM_mx7ulp= "MX7ULP" -PLATFORM_mx8 = "MX8" - -# Todo add a mechanism to map possible build targets -EXTRA_OEMESON = "-Dplatform=${PLATFORM} \ - -Dc_args="${CFLAGS} -I${STAGING_INCDIR_IMX}" \ -" - -PACKAGES =+ "${PN}-gplay ${PN}-libgplaycore ${PN}-libgstfsl ${PN}-grecorder ${PN}-librecorder-engine ${PN}-libplayengine" - -# Add codec list that the beep plugin run-time depended -BEEP_RDEPENDS = "imx-codec-aac imx-codec-mp3 imx-codec-oggvorbis" -RDEPENDS:${PN} += "imx-parser ${BEEP_RDEPENDS} gstreamer1.0-plugins-good-id3demux " -RDEPENDS:${PN}:append:mx8qm = " imx-dsp" -RDEPENDS:${PN}:append:mx8qxp = " imx-dsp" -RDEPENDS:${PN}:append:mx8mp = " imx-dsp" -RDEPENDS:${PN}:append:mx8ulp = " imx-dsp" - -PACKAGECONFIG ?= "" - -# FIXME: Add all features -# feature from excluded mm packages -PACKAGECONFIG[ac3] += ",,imx-ac3codec,imx-ac3codec" -# feature from special mm packages -PACKAGECONFIG[aacp] += ",,imx-aacpcodec,imx-aacpcodec" -MSDEPENDS = "imx-msparser imx-mscodec" -PACKAGECONFIG[wma10dec] += ",,${MSDEPENDS},${MSDEPENDS}" -PACKAGECONFIG[wma8enc] += ",,${MSDEPENDS},${MSDEPENDS}" - -FILES:${PN} = "${libdir}/gstreamer-1.0/*.so ${datadir}" - -FILES:${PN}-dbg += "${libdir}/gstreamer-1.0/.debug" -FILES:${PN}-dev += "${libdir}/gstreamer-1.0/*.la ${libdir}/pkgconfig/*.pc" -FILES:${PN}-staticdev += "${libdir}/gstreamer-1.0/*.a" -FILES:${PN}-gplay = "${bindir}/gplay-1.0" -FILES:${PN}-libgplaycore = "${libdir}/libgplaycore-1.0${SOLIBS}" -FILES:${PN}-libgstfsl = "${libdir}/libgstfsl-1.0${SOLIBS}" -FILES:${PN}-grecorder = "${bindir}/grecorder-1.0" -FILES:${PN}-librecorder-engine = "${libdir}/librecorder_engine-1.0${SOLIBS}" -FILES:${PN}-libplayengine = "${libdir}/libplayengine-1.0${SOLIBS}" - -COMPATIBLE_MACHINE = "(mx6|mx7|mx8)" diff --git a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/tinycompress/tinycompress/0001-tinycompress-Add-id3-decoding.patch b/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/tinycompress/tinycompress/0001-tinycompress-Add-id3-decoding.patch deleted file mode 100755 index f578148a1..000000000 --- a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/tinycompress/tinycompress/0001-tinycompress-Add-id3-decoding.patch +++ /dev/null @@ -1,1001 +0,0 @@ -From 16f6b7a5baec41f18fde75fd311fb988e3c31810 Mon Sep 17 00:00:00 2001 -From: Shengjiu Wang -Date: Fri, 13 Jul 2018 18:13:24 +0800 -Subject: [PATCH] tinycompress: Add id3 decoding - -Signed-off-by: Shengjiu Wang ---- - include/tinycompress/id3_tag_decode.h | 198 +++++++++++ - src/utils/Makefile.am | 2 +- - src/utils/cplay.c | 88 +++++ - src/utils/id3_tag_decode.c | 642 ++++++++++++++++++++++++++++++++++ - 4 files changed, 929 insertions(+), 1 deletion(-) - create mode 100644 include/tinycompress/id3_tag_decode.h - create mode 100644 src/utils/id3_tag_decode.c - -diff --git a/include/tinycompress/id3_tag_decode.h b/include/tinycompress/id3_tag_decode.h -new file mode 100644 -index 0000000..1a911d7 ---- /dev/null -+++ b/include/tinycompress/id3_tag_decode.h -@@ -0,0 +1,198 @@ -+/* -+ * Copyright (c) 2006-2017 Cadence Design Systems, Inc. -+ * Copyright 2018 NXP -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining -+ * a copy of this software and associated documentation files (the -+ * "Software"), to deal in the Software without restriction, including -+ * without limitation the rights to use, copy, modify, merge, publish, -+ * distribute, sublicense, and/or sell copies of the Software, and to -+ * permit persons to whom the Software is furnished to do so, subject to -+ * the following conditions: -+ * -+ * The above copyright notice and this permission notice shall be included -+ * in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ */ -+ -+/****************************************************************** -+ * file name : id3_tag_decode.h -+ * -+ * description : stores typedefs of structures specific to MP3 tag -+ * -+ * revision history: -+ * 29 04 2004 DK creation -+ *****************************************************************/ -+ -+#ifndef ID3_TAG_DECODE_H -+#define ID3_TAG_DECODE_H -+ -+typedef signed char WORD8; -+typedef signed char * pWORD8; -+typedef unsigned char UWORD8; -+typedef unsigned char * pUWORD8; -+ -+typedef signed short WORD16; -+typedef signed short * pWORD16; -+typedef unsigned short UWORD16; -+typedef unsigned short * pUWORD16; -+ -+typedef signed int WORD24; -+typedef signed int * pWORD24; -+typedef unsigned int UWORD24; -+typedef unsigned int * pUWORD24; -+ -+typedef signed int WORD32; -+typedef signed int * pWORD32; -+typedef unsigned int UWORD32; -+typedef unsigned int * pUWORD32; -+ -+typedef void VOID; -+typedef void * pVOID; -+ -+typedef signed int BOOL; -+typedef unsigned int UBOOL; -+typedef signed int FLAG; -+typedef unsigned int UFLAG; -+typedef signed int LOOPIDX; -+typedef unsigned int ULOOPIDX; -+typedef signed int WORD; -+typedef unsigned int UWORD; -+ -+#define MAX_TAG_FRAME_SIZE 100 -+ -+#define ID3V1 (0x544147) /* 0x544147 is TAG in WORD8 */ -+ -+#define ID3V2 (0x494433) /* 0x494433 is ID3 in WORD8 */ -+ -+/* -+ * structure corresponding to ID3 tag v1 header. -+ * this structure has all the field corresponding to ID3 tag v1 header. -+ */ -+ -+typedef struct { -+ WORD32 tag; // 3 bytes -+ -+ WORD16 version; // 2 bytes -+ -+ WORD8 flag; //1 byte -+ -+ WORD32 size; //4 bytes -+ -+} id3_v2_header_struct; -+ -+/* structure which will store the frame data and -+ * also put a limit max data to be stored -+ */ -+typedef struct { -+ WORD8 frame_data[MAX_TAG_FRAME_SIZE]; -+ -+ WORD32 max_size; //4 bytes -+ -+ WORD16 tag_present; -+ -+ WORD16 exceeds_buffer_size; -+ -+} id3_v2_frame_struct; -+ -+/* -+ * structure corresponding to ID3 tag v2. -+ * this structure has some of the field corresponding to ID3 tag v2. -+ * if user wants to read some more tag information from -+ * the MP3 file, he can add that field in this structure and pass address -+ * of that element to get_inf function in id3_tag_decode.c under the -+ * corresponding field frame header. few fields which are needed are already -+ * populated by reading from the TAG header. -+ */ -+typedef struct { -+ id3_v2_frame_struct album_movie_show_title; -+ -+ id3_v2_frame_struct composer_name; -+ -+ id3_v2_frame_struct content_type; -+ -+ id3_v2_frame_struct encoded_by; -+ -+ id3_v2_frame_struct lyricist_text_writer; -+ -+ id3_v2_frame_struct content_group_description; -+ -+ id3_v2_frame_struct title_songname_content_description; -+ -+ id3_v2_frame_struct medxa_type; -+ -+ id3_v2_frame_struct original_album_movie_show_title; -+ -+ id3_v2_frame_struct original_filename; -+ -+ id3_v2_frame_struct original_lyricist_text_writer; -+ -+ id3_v2_frame_struct original_artist_performer; -+ -+ id3_v2_frame_struct file_owner_licensee; -+ -+ id3_v2_frame_struct lead_performer_soloist; -+ -+ id3_v2_frame_struct publisher; -+ -+ id3_v2_frame_struct private_frame; -+ -+ id3_v2_frame_struct other_info; -+ -+ id3_v2_header_struct id3_v2_header; -+ -+ WORD32 header_end; -+ -+ WORD32 bytes_consumed; -+ -+} id3v2_struct; -+ -+/* -+ * structure corresponding to ID3 tag v1. -+ * this structure has all the field corresponding to ID3 tag v1. -+ */ -+typedef struct { -+ WORD8 song_title[30]; //30 word8acters -+ -+ WORD8 artist[30]; //30 word8acters -+ -+ WORD8 album[30]; //30 word8acters -+ -+ WORD8 year[4]; //4 word8acters -+ -+ WORD8 comment[30]; //30 word8acters -+ -+ WORD8 genre[1]; //1 byte -+ -+} id3v1_struct; -+ -+WORD32 get_info(const char *inp_buffer, -+ unsigned int avail_inp, -+ WORD32 tag_size, -+ id3_v2_frame_struct *dest); -+ -+WORD32 search_id3_v2(UWORD8 *buffer); -+ -+WORD32 decode_id3_v2(const char *const buffer, -+ id3v2_struct *id3v2, -+ WORD32 continue_flag, -+ WORD32 insize); -+ -+WORD32 get_id3_v2_bytes(UWORD8 *buffer); -+ -+WORD32 get_v1_info(UWORD8 *buffer, id3v1_struct *id3v1); -+ -+WORD32 search_id3_v1(UWORD8 *buffer); -+ -+WORD32 decode_id3_v1(UWORD8 *buffer, id3v1_struct *id3v1); -+ -+void init_id3v2_field(id3v2_struct *id3v2); -+ -+#endif -diff --git a/src/utils/Makefile.am b/src/utils/Makefile.am -index 1b996d4..e813689 100644 ---- a/src/utils/Makefile.am -+++ b/src/utils/Makefile.am -@@ -1,6 +1,6 @@ - bin_PROGRAMS = cplay crecord - --cplay_SOURCES = cplay.c -+cplay_SOURCES = cplay.c id3_tag_decode.c - crecord_SOURCES = crecord.c - - cplay_CFLAGS = -I$(top_srcdir)/include -diff --git a/src/utils/cplay.c b/src/utils/cplay.c -index 87863a3..2a52b52 100644 ---- a/src/utils/cplay.c -+++ b/src/utils/cplay.c -@@ -72,6 +72,7 @@ - #include "sound/compress_params.h" - #include "tinycompress/tinycompress.h" - #include "tinycompress/tinymp3.h" -+#include "tinycompress/id3_tag_decode.h" - - static int verbose; - static const unsigned int DEFAULT_CODEC_ID = SND_AUDIOCODEC_PCM; -@@ -245,12 +246,97 @@ int main(int argc, char **argv) - exit(EXIT_SUCCESS); - } - -+void shift_buffer(char *buf, int buf_size, int bytes_consumed) -+{ -+ int i; -+ -+ if (bytes_consumed <= 0) -+ return; -+ -+ for (i = 0; i < buf_size - bytes_consumed; i++) -+ buf[i] = buf[i + bytes_consumed]; -+} -+ -+void parse_id3(FILE *file, int *offset) { -+ /* ID3 tag specific declarations */ -+ unsigned char id3_buf[128]; -+ unsigned char id3v2_buf[4096]; -+ signed int id3_v1_found = 0, id3_v1_decoded = 0; -+ signed int id3_v2_found = 0, id3_v2_complete = 0; -+ signed int i_bytes_consumed = 0; -+ signed int i_fread_bytes; -+ id3v1_struct id3v1; -+ id3v2_struct id3v2; -+ -+ { -+ fseek(file, -128, SEEK_END); -+ fread(id3_buf, 1, 128, file); -+ -+ /* search for ID3V1 */ -+ id3_v1_found = search_id3_v1(id3_buf + 0); -+ if (id3_v1_found) { -+ /* if ID3V1 is found, decode ID3V1 */ -+ decode_id3_v1(id3_buf + 3, &id3v1); -+ id3_v1_decoded = 1; -+ } -+ fseek(file, 0, SEEK_SET); -+ } -+ -+ { -+ signed int flag = 0; -+ signed int continue_flag = 0; -+ -+ i_fread_bytes = fread(id3v2_buf, -+ sizeof(char), 0x1000, file); -+ -+ /* search for ID3V2 */ -+ id3_v2_found = -+ search_id3_v2(id3v2_buf); -+ -+ if (id3_v2_found) { -+ /* initialise the max fields */ -+ init_id3v2_field(&id3v2); -+ -+ while (!id3_v2_complete && id3_v2_found) { -+ /* if ID3V2 is found, decode ID3V2 */ -+ id3_v2_complete = decode_id3_v2((const char *const)id3v2_buf, -+ &id3v2, continue_flag, i_fread_bytes); -+ -+ if (!id3_v2_complete) { -+ continue_flag = 1; -+ i_bytes_consumed = id3v2.bytes_consumed; -+ -+ fseek(file, i_bytes_consumed, SEEK_SET); -+ -+ i_fread_bytes = fread(id3v2_buf, -+ sizeof(unsigned char), 0x1000, file); -+ if (i_fread_bytes <= 0) { -+ return; -+ } -+ } -+ } -+ -+ if (id3_v2_complete) { -+ i_bytes_consumed = id3v2.bytes_consumed; -+ fseek(file, i_bytes_consumed, SEEK_SET); -+ } -+ } -+ } -+ -+ *offset = i_bytes_consumed; -+} -+ - void get_codec_mp3(FILE *file, struct compr_config *config, - struct snd_codec *codec) - { - size_t read; - struct mp3_header header; - unsigned int channels, rate, bits; -+ int offset = 0; -+ -+ parse_id3(file, &offset); -+ -+ fseek(file, offset, SEEK_SET); - - read = fread(&header, 1, sizeof(header), file); - if (read != sizeof(header)) { -@@ -279,6 +365,8 @@ void get_codec_mp3(FILE *file, struct compr_config *config, - codec->level = 0; - codec->ch_mode = 0; - codec->format = 0; -+ -+ fseek(file, offset, SEEK_SET); - } - - void get_codec_iec(FILE *file, struct compr_config *config, -diff --git a/src/utils/id3_tag_decode.c b/src/utils/id3_tag_decode.c -new file mode 100644 -index 0000000..393967a ---- /dev/null -+++ b/src/utils/id3_tag_decode.c -@@ -0,0 +1,642 @@ -+/* -+ * Copyright (c) 2006-2017 Cadence Design Systems, Inc. -+ * Copyright 2018 NXP -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining -+ * a copy of this software and associated documentation files (the -+ * "Software"), to deal in the Software without restriction, including -+ * without limitation the rights to use, copy, modify, merge, publish, -+ * distribute, sublicense, and/or sell copies of the Software, and to -+ * permit persons to whom the Software is furnished to do so, subject to -+ * the following conditions: -+ * -+ * The above copyright notice and this permission notice shall be included -+ * in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ */ -+#include -+#include "tinycompress/id3_tag_decode.h" -+ -+#define CHAR4(c1, c2, c3, c4) \ -+ (int)(((unsigned char)(c1) << 24) | \ -+ ((unsigned char)(c2) << 16) | \ -+ ((unsigned char)(c3) << 8) | \ -+ ((unsigned char)c4)) -+ -+#ifndef MSVC_BUILD -+unsigned int umin(unsigned int a, unsigned int b) -+{ -+ return (a < b ? a : b); -+} -+ -+#else -+unsigned int umin(unsigned int a, unsigned int b) -+{ -+ return (a < b ? a : b); -+} -+#endif -+ -+/*********************************************************** -+ * function name : display -+ * -+ * description : display ID3 tag contents. -+ * -+ * arguments : input parameters -+ * -+ * values returned : 0 -+ ***********************************************************/ -+ -+static void display2(const id3_v2_frame_struct * const src, -+ int size, -+ const char * const disp) -+{ -+ int j; -+ -+ -+ for (j = 0; j < size; j++) { -+ int c = src->frame_data[j]; -+ -+ if (c) { -+ if (!isprint(c)) -+ break; -+ } -+ } -+} -+ -+static VOID display1(WORD8 src[], WORD32 size, WORD8 disp[]) -+{ -+ WORD32 j; -+ -+ for (j = 0; j < size ; j++) { -+ int c = src[j]; -+ -+ if (c) { -+ if (!isprint(c)) -+ break; -+ } -+ } -+} -+ -+/***************************************************************** -+ * function name : init_id3_header -+ * -+ * description : initialise the max filed size of teh farem. -+ * -+ * arguments : input parameters -+ * -+ * values returned : 0 -+ ****************************************************************/ -+ -+VOID init_id3v2_field(id3v2_struct *id3v2) -+{ -+ id3v2->album_movie_show_title.max_size = MAX_TAG_FRAME_SIZE; -+ id3v2->composer_name.max_size = MAX_TAG_FRAME_SIZE; -+ id3v2->content_type.max_size = MAX_TAG_FRAME_SIZE; -+ id3v2->encoded_by.max_size = MAX_TAG_FRAME_SIZE; -+ id3v2->lyricist_text_writer.max_size = MAX_TAG_FRAME_SIZE; -+ id3v2->content_group_description.max_size = MAX_TAG_FRAME_SIZE; -+ id3v2->title_songname_content_description.max_size = MAX_TAG_FRAME_SIZE; -+ id3v2->medxa_type.max_size = MAX_TAG_FRAME_SIZE; -+ id3v2->original_album_movie_show_title.max_size = MAX_TAG_FRAME_SIZE; -+ id3v2->original_filename.max_size = MAX_TAG_FRAME_SIZE; -+ id3v2->original_lyricist_text_writer.max_size = MAX_TAG_FRAME_SIZE; -+ id3v2->original_artist_performer.max_size = MAX_TAG_FRAME_SIZE; -+ id3v2->file_owner_licensee.max_size = MAX_TAG_FRAME_SIZE; -+ id3v2->lead_performer_soloist.max_size = MAX_TAG_FRAME_SIZE; -+ id3v2->publisher.max_size = MAX_TAG_FRAME_SIZE; -+ id3v2->private_frame.max_size = MAX_TAG_FRAME_SIZE; -+ id3v2->other_info.max_size = MAX_TAG_FRAME_SIZE; -+ -+ /* resetting the flag to indicate presese of frame */ -+ id3v2->album_movie_show_title.tag_present = 0; -+ id3v2->composer_name.tag_present = 0; -+ id3v2->content_type.tag_present = 0; -+ id3v2->encoded_by.tag_present = 0; -+ id3v2->lyricist_text_writer.tag_present = 0; -+ id3v2->content_group_description.tag_present = 0; -+ id3v2->title_songname_content_description.tag_present = 0; -+ id3v2->medxa_type.tag_present = 0; -+ id3v2->original_album_movie_show_title.tag_present = 0; -+ id3v2->original_filename.tag_present = 0; -+ id3v2->original_lyricist_text_writer.tag_present = 0; -+ id3v2->original_artist_performer.tag_present = 0; -+ id3v2->file_owner_licensee.tag_present = 0; -+ id3v2->lead_performer_soloist.tag_present = 0; -+ id3v2->publisher.tag_present = 0; -+ id3v2->private_frame.tag_present = 0; -+ id3v2->other_info.tag_present = 0; -+ -+ /* resetting the flag which indicates that size of the frame has -+ * exceeded the max buffer size -+ */ -+ id3v2->album_movie_show_title.exceeds_buffer_size = 0; -+ id3v2->composer_name.exceeds_buffer_size = 0; -+ id3v2->content_type.exceeds_buffer_size = 0; -+ id3v2->encoded_by.exceeds_buffer_size = 0; -+ id3v2->lyricist_text_writer.exceeds_buffer_size = 0; -+ id3v2->content_group_description.exceeds_buffer_size = 0; -+ id3v2->title_songname_content_description.exceeds_buffer_size = 0; -+ id3v2->medxa_type.exceeds_buffer_size = 0; -+ id3v2->original_album_movie_show_title.exceeds_buffer_size = 0; -+ id3v2->original_filename.exceeds_buffer_size = 0; -+ id3v2->original_lyricist_text_writer.exceeds_buffer_size = 0; -+ id3v2->original_artist_performer.exceeds_buffer_size = 0; -+ id3v2->file_owner_licensee.exceeds_buffer_size = 0; -+ id3v2->lead_performer_soloist.exceeds_buffer_size = 0; -+ id3v2->publisher.exceeds_buffer_size = 0; -+ id3v2->private_frame.exceeds_buffer_size = 0; -+ id3v2->other_info.exceeds_buffer_size = 0; -+ -+ id3v2->bytes_consumed = 0; -+ id3v2->header_end = 0; -+} -+ -+/*************************************************************** -+ * function name : search_id3_v2 -+ * -+ * description : finds if ID3V2 starts at the start of given buffer. -+ * -+ * arguments : input parameters -+ * buffer input buffer -+ * -+ * values returned : FLAG 1: ID3 found 0: ID3 not found -+ ***************************************************************/ -+WORD32 search_id3_v2(UWORD8 *buffer) -+{ -+ UWORD32 temp; -+ -+ temp = buffer[0] << 16; -+ temp |= buffer[1] << 8; -+ temp |= buffer[2]; -+ -+ if (temp == ID3V2) -+ return 1; /* ID3 found */ -+ -+ return 0; /* ID3 not found */ -+} -+ -+/************************************************************** -+ * function name : search_id3_v1 -+ * -+ * description : finds if ID3V1 starts at the start of given buffer. -+ * -+ * arguments : input parameters -+ * buffer input buffer -+ * -+ * values returned : FLAG 1: ID3 found 0: ID3 not found -+ **************************************************************/ -+WORD32 search_id3_v1(UWORD8 *buffer) -+{ -+ UWORD32 temp; -+ -+ temp = buffer[0] << 16; -+ temp |= buffer[1] << 8; -+ temp |= buffer[2]; -+ -+ if (temp == ID3V1) -+ return 1; /* ID3 found */ -+ -+ return 0; /* ID3 not found */ -+} -+ -+/*************************************************************** -+ * function name : decode_id3_v1 -+ * -+ * description : decodes ID3V1 tag. -+ * -+ * arguments : input parameters -+ * buffer input buffer -+ * id3v1 structure -+ * -+ * values returned : bytes consumed -+ **************************************************************/ -+WORD32 decode_id3_v1(UWORD8 *buffer, id3v1_struct *id3v1) -+{ -+ WORD32 bytes_consumed = 0; -+ short tag_type; -+ -+ /* setting the tag type */ -+ tag_type = 1; -+ -+ bytes_consumed = get_v1_info(buffer, id3v1); -+ -+ return bytes_consumed; -+} -+ -+/*********************************************************** -+ * function name : get_v1_info -+ * -+ * description : gets ID3V1 information fields. -+ * -+ * arguments : input parameters -+ * buffer input buffer -+ * id3v1 structure -+ * -+ * values returned : bytes consumed -+ ***********************************************************/ -+WORD32 get_v1_info(UWORD8 *buffer, id3v1_struct *id3v1) -+{ -+ WORD32 i; -+ WORD32 bytes_consumed = 0; -+ -+ /* get song_title */ -+ for (i = 0; i < 30; i++) -+ id3v1->song_title[i] = buffer[i]; -+ -+ buffer += 30; -+ bytes_consumed += 30; -+ display1(id3v1->song_title, 30, (WORD8 *)"song_title : "); -+ -+ /* get artist */ -+ for (i = 0; i < 30; i++) -+ id3v1->artist[i] = buffer[i]; -+ -+ buffer += 30; -+ bytes_consumed += 30; -+ display1(id3v1->artist, 30, (WORD8 *)"artist : "); -+ -+ /* get album */ -+ for (i = 0; i < 30; i++) -+ id3v1->album[i] = buffer[i]; -+ -+ buffer += 30; -+ bytes_consumed += 30; -+ display1(id3v1->album, 30, (WORD8 *)"album : "); -+ -+ /* get year */ -+ for (i = 0; i < 4; i++) -+ id3v1->year[i] = buffer[i]; -+ -+ buffer += 4; -+ bytes_consumed += 4; -+ display1(id3v1->year, 4, (WORD8 *)"year : "); -+ -+ /* get comment */ -+ for (i = 0; i < 30; i++) -+ id3v1->comment[i] = buffer[i]; -+ -+ buffer += 30; -+ bytes_consumed += 30; -+ display1(id3v1->comment, 30, (WORD8 *)"comment : "); -+ -+ /* get genre */ -+ for (i = 0; i < 1; i++) -+ id3v1->genre[i] = buffer[i]; -+ -+ buffer += 1; -+ bytes_consumed += 1; -+ -+ return bytes_consumed; -+} -+ -+/***************************************************** -+ * function name : decode_id3_v2 -+ * -+ * description : decodes ID3V2 tag. -+ * -+ * arguments : input parameters -+ * buffer input buffer -+ * id3v2 structure -+ * continue_flag FLAG to indicate whether -+ * it is first call or not -+ * insize input buffer size -+ * -+ * values returned : bytes consumed -+ ******************************************************/ -+WORD32 decode_id3_v2(const char *const buffer, -+ id3v2_struct *const id3v2, -+ WORD32 continue_flag, -+ WORD32 insize) -+{ -+ UWORD32 size = 0, flag; -+ WORD32 i, buf_update_val; -+ UWORD8 buf[4], frame_header[10], id3_buffer[10]; -+ WORD8 *bitstream_ptr; -+ short tag_type; -+ -+ WORD32 bytes_consumed = 0; -+ -+ if (id3v2->header_end == 1) { -+ id3v2->bytes_consumed += insize; -+ if (id3v2->bytes_consumed < id3v2->id3_v2_header.size) -+ return 0; -+ -+ id3v2->bytes_consumed = (id3v2->id3_v2_header.size + 10); -+ return 1; -+ } -+ -+ bitstream_ptr = (WORD8 *)id3_buffer; -+ -+ if (!continue_flag) { -+ bytes_consumed += 3; -+ /* setting the tag type */ -+ tag_type = 2; -+ id3v2->id3_v2_header.version = buffer[bytes_consumed + 0] << 8; -+ id3v2->id3_v2_header.version |= buffer[bytes_consumed + 1]; -+ id3v2->id3_v2_header.flag = buffer[bytes_consumed + 2]; -+ -+ /* making the msb of each byte zero */ -+ buf[0] = buffer[bytes_consumed + 6] & 0x7f; -+ buf[1] = buffer[bytes_consumed + 5] & 0x7f; -+ buf[2] = buffer[bytes_consumed + 4] & 0x7f; -+ buf[3] = buffer[bytes_consumed + 3] & 0x7f; -+ -+ bytes_consumed += 7; -+ -+ /* concatenation the bytes after making -+ * 7th bit zero to get 28 bits size -+ */ -+ size = buf[0]; -+ size |= (buf[1] << 7); -+ size |= (buf[2] << 14); -+ size |= (buf[3] << 21); -+ /* storing the size */ -+ id3v2->id3_v2_header.size = size; -+ -+ /* check for extended header */ -+ if (id3v2->id3_v2_header.flag & 0x20) { -+ for (i = 0; i < 10; i++) -+ bitstream_ptr[i] = buffer[bytes_consumed + i]; -+ -+ i = 0; -+ bytes_consumed += 10; -+ -+ size = bitstream_ptr[i++] << 24; -+ size |= bitstream_ptr[i++] << 16; -+ size |= bitstream_ptr[i++] << 8; -+ size |= bitstream_ptr[i++]; -+ -+ /* two bytes for flag */ -+ i += 2; -+ { -+ UWORD32 padding_size; -+ -+ padding_size = bitstream_ptr[i++] << 24; -+ padding_size |= bitstream_ptr[i++] << 16; -+ padding_size |= bitstream_ptr[i++] << 8; -+ padding_size |= bitstream_ptr[i++]; -+ -+ /* skipping the padding and frame size -+ * number of bytes -+ */ -+ bytes_consumed += (padding_size + size); -+ } -+ } -+ } -+ -+ while (id3v2->header_end != 1) { -+ char *key; -+ id3_v2_frame_struct *value; -+ unsigned int avail_inp; -+ -+ /* reading the 10 bytes to get the frame header */ -+ -+ for (i = 0; i < 10; i++) -+ frame_header[i] = buffer[bytes_consumed + i]; -+ bytes_consumed += 10; -+ -+ /* getting the size from the header */ -+ size = frame_header[4] << 24; -+ size |= frame_header[5] << 16; -+ size |= frame_header[6] << 8; -+ size |= frame_header[7]; -+ -+ /* decoding the flag, currently not used */ -+ flag = frame_header[8] << 8; -+ flag |= frame_header[9]; -+ -+ avail_inp = insize - bytes_consumed; -+ -+ /* switching to the frame type */ -+ switch (CHAR4(frame_header[0], -+ frame_header[1], -+ frame_header[2], -+ frame_header[3])) { -+ case CHAR4('A', 'E', 'N', 'C'): -+ case CHAR4('A', 'P', 'I', 'C'): -+ case CHAR4('C', 'O', 'M', 'M'): -+ case CHAR4('C', 'O', 'M', 'R'): -+ case CHAR4('E', 'N', 'C', 'R'): -+ case CHAR4('E', 'Q', 'U', 'A'): -+ case CHAR4('E', 'T', 'C', 'O'): -+ case CHAR4('G', 'E', 'O', 'B'): -+ case CHAR4('G', 'R', 'I', 'D'): -+ case CHAR4('I', 'P', 'L', 'S'): -+ case CHAR4('L', 'I', 'N', 'K'): -+ case CHAR4('M', 'C', 'D', 'I'): -+ case CHAR4('M', 'L', 'L', 'T'): -+ case CHAR4('O', 'W', 'N', 'E'): -+ case CHAR4('P', 'C', 'N', 'T'): -+ case CHAR4('P', 'O', 'P', 'M'): -+ case CHAR4('P', 'O', 'S', 'S'): -+ case CHAR4('R', 'B', 'U', 'F'): -+ case CHAR4('R', 'V', 'A', 'D'): -+ case CHAR4('R', 'V', 'R', 'B'): -+ case CHAR4('S', 'Y', 'L', 'T'): -+ case CHAR4('S', 'Y', 'T', 'C'): -+ case CHAR4('T', 'B', 'P', 'M'): -+ case CHAR4('T', 'C', 'O', 'P'): -+ case CHAR4('T', 'D', 'A', 'T'): -+ case CHAR4('T', 'D', 'L', 'Y'): -+ case CHAR4('T', 'F', 'L', 'T'): -+ case CHAR4('T', 'I', 'M', 'E'): -+ case CHAR4('T', 'K', 'E', 'Y'): -+ case CHAR4('T', 'L', 'A', 'N'): -+ case CHAR4('T', 'L', 'E', 'N'): -+ case CHAR4('T', 'M', 'E', 'D'): -+ case CHAR4('T', 'O', 'F', 'N'): -+ case CHAR4('T', 'O', 'L', 'Y'): -+ case CHAR4('T', 'O', 'R', 'Y'): -+ case CHAR4('T', 'P', 'E', '2'): -+ case CHAR4('T', 'P', 'E', '3'): -+ case CHAR4('T', 'P', 'E', '4'): -+ case CHAR4('T', 'P', 'O', 'S'): -+ case CHAR4('T', 'R', 'C', 'K'): -+ case CHAR4('T', 'R', 'D', 'A'): -+ case CHAR4('T', 'R', 'S', 'N'): -+ case CHAR4('T', 'R', 'S', 'O'): -+ case CHAR4('T', 'S', 'I', 'Z'): -+ case CHAR4('T', 'S', 'R', 'C'): -+ case CHAR4('T', 'S', 'S', 'E'): -+ case CHAR4('T', 'Y', 'E', 'R'): -+ case CHAR4('T', 'X', 'X', 'X'): -+ case CHAR4('U', 'F', 'I', 'D'): -+ case CHAR4('U', 'S', 'E', 'R'): -+ case CHAR4('U', 'S', 'L', 'T'): -+ case CHAR4('W', 'C', 'O', 'M'): -+ case CHAR4('W', 'C', 'O', 'P'): -+ case CHAR4('W', 'O', 'A', 'F'): -+ case CHAR4('W', 'O', 'A', 'R'): -+ case CHAR4('W', 'O', 'A', 'S'): -+ case CHAR4('W', 'O', 'R', 'S'): -+ case CHAR4('W', 'P', 'A', 'Y'): -+ case CHAR4('W', 'P', 'U', 'B'): -+ case CHAR4('W', 'X', 'X', 'X'): -+ case CHAR4('T', 'I', 'T', '3'): -+ key = "other_info : "; -+ value = &id3v2->other_info; -+ break; -+ case CHAR4('P', 'R', 'I', 'V'): -+ key = "private_frame : "; -+ value = &id3v2->private_frame; -+ break; -+ case CHAR4('T', 'A', 'L', 'B'): -+ key = "album_movie_show_title : "; -+ value = &id3v2->album_movie_show_title; -+ break; -+ case CHAR4('T', 'C', 'O', 'M'): -+ key = "composer_name : "; -+ value = &id3v2->composer_name; -+ break; -+ case CHAR4('T', 'C', 'O', 'N'): -+ key = "content_type : "; -+ value = &id3v2->content_type; -+ break; -+ case CHAR4('T', 'E', 'N', 'C'): -+ key = "encoded_by : "; -+ value = &id3v2->encoded_by; -+ break; -+ case CHAR4('T', 'E', 'X', 'T'): -+ key = "lyricist_text_writer : "; -+ value = &id3v2->lyricist_text_writer; -+ break; -+ case CHAR4('T', 'I', 'T', '1'): -+ key = "content_group_description : "; -+ value = &id3v2->content_group_description; -+ break; -+ case CHAR4('T', 'I', 'T', '2'): -+ key = "title_songname_content_description : "; -+ value = &id3v2->title_songname_content_description; -+ break; -+ case CHAR4('T', 'O', 'A', 'L'): -+ key = "original_album_movie_show_title : "; -+ value = &id3v2->original_album_movie_show_title; -+ break; -+ case CHAR4('T', 'O', 'P', 'E'): -+ key = "original_artist_performer : "; -+ value = &id3v2->original_artist_performer; -+ break; -+ case CHAR4('T', 'O', 'W', 'N'): -+ key = "file_owner_licensee : "; -+ value = &id3v2->file_owner_licensee; -+ break; -+ case CHAR4('T', 'P', 'E', '1'): -+ key = "lead_performer_soloist : "; -+ value = &id3v2->lead_performer_soloist; -+ break; -+ case CHAR4('T', 'P', 'U', 'B'): -+ key = "publisher : "; -+ value = &id3v2->publisher; -+ break; -+ default: -+ /* skipping the read 10 bytes */ -+ buf_update_val = -10; -+ id3v2->header_end = 1; -+ value = 0; -+ key = 0; -+ break; -+ } -+ -+ if (value != 0) -+ buf_update_val = get_info(&buffer[bytes_consumed], -+ avail_inp, size, value); -+ -+ /* Negative value for buf_update_val means one of two things: -+ * 1. The default case happened and we're done with ID3V2 tag -+ * frames, or -+ * 2. get_info() returned -1 to indicate that more input is -+ * required to decode this frame of the tag. -+ */ -+ if (buf_update_val >= 0) -+ display2(value, -+ umin(value->max_size, buf_update_val), key); -+ -+ if (buf_update_val == -1) { -+ id3v2->bytes_consumed += bytes_consumed; -+ return 1; -+ } -+ -+ bytes_consumed += buf_update_val; -+ -+ /* Is there enough input left (10 bytes) to begin -+ * decoding another frame? If not, bag out temporarily -+ * now. The caller will refill our input buffer and -+ * call us again with continue_flag == 1. -+ */ -+ if (insize - bytes_consumed < 10) { -+ id3v2->bytes_consumed += bytes_consumed; -+ return 0; /* not completely decoded */ -+ } -+ } -+ -+ id3v2->bytes_consumed += bytes_consumed; -+ if ((id3v2->bytes_consumed + 10) < id3v2->id3_v2_header.size) -+ return 0; /* not completely decoded */ -+ -+ return 1; /* completely decoded */ -+} -+ -+/******************************************************* -+ * function name : get_id3_v2_bytes -+ * -+ * description : tells the size of ID3V2 tag. -+ * -+ * arguments : input parameters -+ * buffer input buffer -+ * -+ * values returned : bytes consumed -+ ********************************************************/ -+WORD32 get_id3_v2_bytes(UWORD8 *buffer) -+{ -+ WORD32 size; -+ -+ /* making the msb of each byte zero */ -+ size = (buffer[9] & 0x7f); -+ size |= ((buffer[8] & 0x7f) << 7); -+ size |= ((buffer[7] & 0x7f) << 14); -+ size |= ((buffer[6] & 0x7f) << 21); -+ -+ return (size + 10); -+} -+ -+/**************************************************** -+ * function name : get_info -+ * -+ * description : read the frame information from the input buffer. -+ * -+ * arguments : input parameters -+ * -+ * values returned : update value for buffer -+ ****************************************************/ -+WORD32 get_info(const char *inp_buffer, -+ unsigned int avail_inp, -+ WORD32 tag_size, -+ id3_v2_frame_struct *dest) -+{ -+ WORD32 j; -+ -+ /* setting the tag to indicate the presence of frame */ -+ dest->tag_present = 1; -+ /* If there isn't enough input available, we punt back to the top -+ * level and ask for more. -+ */ -+ if (avail_inp < umin(tag_size, dest->max_size)) -+ return -1; -+ -+ if (dest->max_size >= tag_size) { -+ for (j = 0; j < tag_size ; j++) -+ dest->frame_data[j] = inp_buffer[j]; -+ } else { -+ dest->exceeds_buffer_size = 1; -+ for (j = 0; j < dest->max_size ; j++) -+ dest->frame_data[j] = inp_buffer[j]; -+ } -+ return tag_size; -+} --- -2.7.4 - diff --git a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/tinycompress/tinycompress/0002-cplay-Support-wave-file.patch b/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/tinycompress/tinycompress/0002-cplay-Support-wave-file.patch deleted file mode 100755 index 9189bc0ed..000000000 --- a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/tinycompress/tinycompress/0002-cplay-Support-wave-file.patch +++ /dev/null @@ -1,221 +0,0 @@ -From 4d4bc0a958fe254531920095fbabc241aad88113 Mon Sep 17 00:00:00 2001 -From: Shengjiu Wang -Date: Tue, 28 Jul 2020 13:00:36 +0800 -Subject: [PATCH] cplay: Support wave file - -The supported format is mono/stereo, S16_LE/S32_LE, 8kHz-192kHz. -Command is: -cplay -c x -I PCM test.wav - -Upstream-Status: Inappropriate [i.MX specific] -Signed-off-by: Shengjiu Wang ---- - include/tinycompress/wave_formats.h | 51 +++++++++++++ - src/utils/cplay.c | 107 ++++++++++++++++++++++++++++ - 2 files changed, 158 insertions(+) - create mode 100644 include/tinycompress/wave_formats.h - -diff --git a/include/tinycompress/wave_formats.h b/include/tinycompress/wave_formats.h -new file mode 100644 -index 000000000000..4e2e009206cf ---- /dev/null -+++ b/include/tinycompress/wave_formats.h -@@ -0,0 +1,51 @@ -+#ifndef WAVE_FORMATS_H -+#define WAVE_FORMATS_H 1 -+ -+#define COMPOSE_ID(a,b,c,d) ((a) | ((b)<<8) | ((c)<<16) | ((d)<<24)) -+ -+#define WAV_RIFF COMPOSE_ID('R','I','F','F') -+#define WAV_RIFX COMPOSE_ID('R','I','F','X') -+#define WAV_WAVE COMPOSE_ID('W','A','V','E') -+#define WAV_FMT COMPOSE_ID('f','m','t',' ') -+#define WAV_DATA COMPOSE_ID('d','a','t','a') -+ -+/* WAVE fmt block constants from Microsoft mmreg.h header */ -+#define WAV_FMT_PCM 0x0001 -+#define WAV_FMT_IEEE_FLOAT 0x0003 -+#define WAV_FMT_DOLBY_AC3_SPDIF 0x0092 -+#define WAV_FMT_EXTENSIBLE 0xfffe -+ -+/* Used with WAV_FMT_EXTENSIBLE format */ -+#define WAV_GUID_TAG "\x00\x00\x00\x00\x10\x00\x80\x00\x00\xAA\x00\x38\x9B\x71" -+ -+typedef struct { -+ u_int magic; /* 'RIFF' */ -+ u_int length; /* filelen */ -+ u_int type; /* 'WAVE' */ -+} WaveHeader; -+ -+typedef struct { -+ u_short format; /* see WAV_FMT_* */ -+ u_short channels; -+ u_int sample_fq; /* frequence of sample */ -+ u_int byte_p_sec; -+ u_short byte_p_spl; /* samplesize; 1 or 2 bytes */ -+ u_short bit_p_spl; /* 8, 12 or 16 bit */ -+} WaveFmtBody; -+ -+typedef struct { -+ WaveFmtBody format; -+ u_short ext_size; -+ u_short bit_p_spl; -+ u_int channel_mask; -+ u_short guid_format; /* WAV_FMT_* */ -+ u_char guid_tag[14]; /* WAV_GUID_TAG */ -+} WaveFmtExtensibleBody; -+ -+typedef struct { -+ u_int type; /* 'data' */ -+ u_int length; /* samplecount */ -+} WaveChunkHeader; -+ -+ -+#endif /* FORMATS */ -diff --git a/src/utils/cplay.c b/src/utils/cplay.c -index 5b749419e731..8882f4d9746d 100644 ---- a/src/utils/cplay.c -+++ b/src/utils/cplay.c -@@ -1,4 +1,6 @@ - /* -+ * Copyright 2020 NXP -+ * - * This file is provided under a dual BSD/LGPLv2.1 license. When using or - * redistributing this file, you may do so under either license. - * -@@ -73,6 +75,8 @@ - #include "tinycompress/tinycompress.h" - #include "tinycompress/tinymp3.h" - #include "tinycompress/id3_tag_decode.h" -+#include "tinycompress/wave_formats.h" -+#include - - static int verbose; - static const unsigned int DEFAULT_CODEC_ID = SND_AUDIOCODEC_PCM; -@@ -166,6 +170,77 @@ static int parse_mp3_header(struct mp3_header *header, unsigned int *num_channel - return 0; - } - -+static int parse_wav_header(FILE *file, unsigned int *num_channels, unsigned int *sample_rate, -+ unsigned int *format) { -+ WaveHeader wave_header; -+ WaveChunkHeader chunk_header; -+ WaveFmtBody fmt_body; -+ int more_chunks = 1; -+ -+ fread(&wave_header, sizeof(WaveHeader), 1, file); -+ if ((wave_header.magic != WAV_RIFF) || -+ (wave_header.type != WAV_WAVE)) { -+ fprintf(stderr, "Error: it is not a riff/wave file\n"); -+ return -1; -+ } -+ -+ do { -+ fread(&chunk_header, sizeof(WaveChunkHeader), 1, file); -+ switch (chunk_header.type) { -+ case WAV_FMT: -+ fread(&fmt_body, sizeof(WaveFmtBody), 1, file); -+ /* If the format header is larger, skip the rest */ -+ if (chunk_header.length > sizeof(WaveFmtBody)) -+ fseek(file, chunk_header.length - sizeof(WaveFmtBody), SEEK_CUR); -+ -+ *num_channels = fmt_body.channels; -+ *sample_rate = fmt_body.sample_fq; -+ -+ switch (fmt_body.bit_p_spl) { -+ case 8: -+ *format = SND_PCM_FORMAT_U8; -+ break; -+ case 16: -+ *format = SND_PCM_FORMAT_S16_LE; -+ break; -+ case 24: -+ switch (fmt_body.byte_p_spl / fmt_body.channels) { -+ case 3: -+ *format = SND_PCM_FORMAT_S24_3LE; -+ break; -+ case 4: -+ *format = SND_PCM_FORMAT_S24_LE; -+ break; -+ default: -+ fprintf(stderr, "format error\n"); -+ return -1; -+ } -+ break; -+ case 32: -+ if (fmt_body.format == WAV_FMT_PCM) { -+ *format = SND_PCM_FORMAT_S32_LE; -+ } else if (fmt_body.format == WAV_FMT_IEEE_FLOAT) { -+ *format = SND_PCM_FORMAT_FLOAT_LE; -+ } -+ break; -+ default: -+ fprintf(stderr, "format error\n"); -+ return -1; -+ } -+ break; -+ case WAV_DATA: -+ /* Stop looking for chunks */ -+ more_chunks = 0; -+ break; -+ default: -+ /* Unknown chunk, skip bytes */ -+ fseek(file, chunk_header.length, SEEK_CUR); -+ } -+ } while (more_chunks); -+ -+ return 0; -+} -+ - static int print_time(struct compress *compress) - { - unsigned int avail; -@@ -385,6 +460,35 @@ void get_codec_iec(FILE *file, struct compr_config *config, - codec->format = 0; - } - -+void get_codec_pcm(FILE *file, struct compr_config *config, -+ struct snd_codec *codec) -+{ -+ unsigned int channels, rate, format; -+ -+ if (parse_wav_header(file, &channels, &rate, &format) == -1) { -+ fclose(file); -+ exit(EXIT_FAILURE); -+ } -+ -+ if (channels > 2 || (format != SND_PCM_FORMAT_S16_LE && format != SND_PCM_FORMAT_S32_LE) || -+ rate > 192000) { -+ fprintf(stderr, "unsupported wave file\n"); -+ fclose(file); -+ exit(EXIT_FAILURE); -+ } -+ -+ codec->id = SND_AUDIOCODEC_PCM; -+ codec->ch_in = channels; -+ codec->ch_out = channels; -+ codec->sample_rate = rate; -+ codec->bit_rate = 0; -+ codec->rate_control = 0; -+ codec->profile = SND_AUDIOPROFILE_PCM; -+ codec->level = 0; -+ codec->ch_mode = 0; -+ codec->format = format; -+} -+ - void play_samples(char *name, unsigned int card, unsigned int device, - unsigned long buffer_size, unsigned int frag, - unsigned long codec_id) -@@ -411,6 +515,9 @@ void play_samples(char *name, unsigned int card, unsigned int device, - case SND_AUDIOCODEC_IEC61937: - get_codec_iec(file, &config, &codec); - break; -+ case SND_AUDIOCODEC_PCM: -+ get_codec_pcm(file, &config, &codec); -+ break; - default: - fprintf(stderr, "codec ID %ld is not supported\n", codec_id); - exit(EXIT_FAILURE); --- -2.27.0 - diff --git a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/tinycompress/tinycompress/0003-cplay-Add-pause-feature.patch b/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/tinycompress/tinycompress/0003-cplay-Add-pause-feature.patch deleted file mode 100755 index 045714aa9..000000000 --- a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/tinycompress/tinycompress/0003-cplay-Add-pause-feature.patch +++ /dev/null @@ -1,147 +0,0 @@ -From 6f778c21ee357a662cdd758cff578a3e4b85eedf Mon Sep 17 00:00:00 2001 -From: Zhang Peng -Date: Tue, 4 Aug 2020 15:29:29 +0800 -Subject: [PATCH] cplay: Add pause feature - -Add option: -p pause - -Upstream-Status: Inappropriate [i.MX specific] - -Signed-off-by: Zhang Peng ---- - src/utils/cplay.c | 56 +++++++++++++++++++++++++++++++++++++++++++---- - 1 file changed, 52 insertions(+), 4 deletions(-) - -diff --git a/src/utils/cplay.c b/src/utils/cplay.c -index 8882f4d..8e3dcbb 100644 ---- a/src/utils/cplay.c -+++ b/src/utils/cplay.c -@@ -117,6 +117,9 @@ static void usage(void) - "-f\tfragments\n\n" - "-v\tverbose mode\n" - "-h\tPrints this help list\n\n" -+ "-p\tpause\n" -+ "-m\tpause blocks\n" -+ "-n\tpause time duration\n" - "Example:\n" - "\tcplay -c 1 -d 2 test.mp3\n" - "\tcplay -f 5 test.mp3\n\n" -@@ -133,7 +136,8 @@ static void usage(void) - - void play_samples(char *name, unsigned int card, unsigned int device, - unsigned long buffer_size, unsigned int frag, -- unsigned long codec_id); -+ unsigned long codec_id, int pause_count, int pause_block, -+ int pause_duration); - - struct mp3_header { - uint16_t sync; -@@ -262,12 +266,15 @@ int main(int argc, char **argv) - int c, i; - unsigned int card = 0, device = 0, frag = 0; - unsigned int codec_id = SND_AUDIOCODEC_MP3; -+ int pause_count = 0; -+ int pause_block = 6; -+ int pause_duration = 10; - - if (argc < 2) - usage(); - - verbose = 0; -- while ((c = getopt(argc, argv, "hvb:f:c:d:I:")) != -1) { -+ while ((c = getopt(argc, argv, "hvb:f:c:d:I:p:m:n:")) != -1) { - switch (c) { - case 'h': - usage(); -@@ -306,6 +313,23 @@ int main(int argc, char **argv) - case 'v': - verbose = 1; - break; -+ case 'p': -+ pause_count = strtol(optarg, NULL, 10); -+ break; -+ case 'm': -+ pause_block = strtol(optarg, NULL, 10); -+ if (pause_duration < 0) { -+ printf("Set wrong paramter! Set duration default 6.\n"); -+ pause_duration = 6; -+ } -+ break; -+ case 'n': -+ pause_duration = strtol(optarg, NULL, 10); -+ if (pause_duration < 0) { -+ printf("Set wrong paramter! Set duration default 10.\n"); -+ pause_duration = 10; -+ } -+ break; - default: - exit(EXIT_FAILURE); - } -@@ -315,7 +339,7 @@ int main(int argc, char **argv) - - file = argv[optind]; - -- play_samples(file, card, device, buffer_size, frag, codec_id); -+ play_samples(file, card, device, buffer_size, frag, codec_id, pause_count, pause_block, pause_duration); - - fprintf(stderr, "Finish Playing.... Close Normally\n"); - exit(EXIT_SUCCESS); -@@ -491,7 +515,8 @@ void get_codec_pcm(FILE *file, struct compr_config *config, - - void play_samples(char *name, unsigned int card, unsigned int device, - unsigned long buffer_size, unsigned int frag, -- unsigned long codec_id) -+ unsigned long codec_id, int pause_count, int pause_block, -+ int pause_duration) - { - struct compr_config config; - struct snd_codec codec; -@@ -499,6 +524,7 @@ void play_samples(char *name, unsigned int card, unsigned int device, - FILE *file; - char *buffer; - int size, num_read, wrote; -+ int write_count = 0; - - if (verbose) - printf("%s: entry\n", __func__); -@@ -574,6 +600,13 @@ void play_samples(char *name, unsigned int card, unsigned int device, - if (verbose) - printf("%s: You should hear audio NOW!!!\n", __func__); - -+ if (pause_count > 0) { -+ printf("sleep...\n"); -+ compress_pause(compress); -+ sleep(pause_duration); -+ compress_resume(compress); -+ } -+ - do { - num_read = fread(buffer, 1, size, file); - if (num_read > 0) { -@@ -592,8 +625,23 @@ void play_samples(char *name, unsigned int card, unsigned int device, - printf("%s: wrote %d\n", __func__, wrote); - } - } -+ write_count++; -+ if ((pause_count > 0) && (write_count % pause_block == 0)) { -+ printf("pause...\n"); -+ compress_pause(compress); -+ sleep(pause_duration); -+ printf("pause release...\n"); -+ compress_resume(compress); -+ pause_count--; -+ } - } while (num_read > 0); - -+ if (pause_count > 0) { -+ compress_pause(compress); -+ sleep(5); -+ compress_resume(compress); -+ } -+ - if (verbose) - printf("%s: exit success\n", __func__); - /* issue drain if it supports */ --- -2.17.1 - diff --git a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/tinycompress/tinycompress/0004-tinycompress-pass-NULL-buffer-with-0-size-to-driver.patch b/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/tinycompress/tinycompress/0004-tinycompress-pass-NULL-buffer-with-0-size-to-driver.patch deleted file mode 100755 index 994fc14e2..000000000 --- a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/tinycompress/tinycompress/0004-tinycompress-pass-NULL-buffer-with-0-size-to-driver.patch +++ /dev/null @@ -1,41 +0,0 @@ -From a2892bf5db7520689fa9cb1d1589fa804bd9dc1a Mon Sep 17 00:00:00 2001 -From: Bing Song -Date: Tue, 18 Aug 2020 15:26:51 +0800 -Subject: [PATCH] tinycompress: pass NULL buffer with 0 size to driver. - -The NULL buffer with 0 size to indecate driver drain input data with -non-block mode. The defaul drain is block mode. - -upstream status: imx specific - -Signed-off-by: Bing Song ---- - src/lib/compress.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/src/lib/compress.c b/src/lib/compress.c -index bba4fcf..d66df0b 100644 ---- a/src/lib/compress.c -+++ b/src/lib/compress.c -@@ -315,7 +315,8 @@ int compress_write(struct compress *compress, const void *buf, unsigned int size - fds.events = POLLOUT; - - /*TODO: treat auto start here first */ -- while (size) { -+ /* NULL buffer with 0 size for non-block drain */ -+ do { - if (ioctl(compress->fd, SNDRV_COMPRESS_AVAIL, &avail)) - return oops(compress, errno, "cannot get avail"); - -@@ -357,7 +358,7 @@ int compress_write(struct compress *compress, const void *buf, unsigned int size - size -= written; - cbuf += written; - total += written; -- } -+ } while (size); - return total; - } - --- -2.17.1 - diff --git a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/tinycompress/tinycompress/0005-cplay-Support-aac-streams.patch b/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/tinycompress/tinycompress/0005-cplay-Support-aac-streams.patch deleted file mode 100755 index 216426885..000000000 --- a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/tinycompress/tinycompress/0005-cplay-Support-aac-streams.patch +++ /dev/null @@ -1,252 +0,0 @@ -From 2912f8573cea25fbd38ac7a8b68af2ea6a05e599 Mon Sep 17 00:00:00 2001 -From: Zhang Peng -Date: Wed, 28 Oct 2020 19:08:53 +0800 -Subject: [PATCH] cplay: Support aac streams - -Support run aac format streams for cplay. - -upstream status: imx specific - -Signed-off-by: Zhang Peng ---- - src/utils/cplay.c | 210 ++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 210 insertions(+) - -diff --git a/src/utils/cplay.c b/src/utils/cplay.c -index 8e3dcbb..2a1464a 100644 ---- a/src/utils/cplay.c -+++ b/src/utils/cplay.c -@@ -245,6 +245,190 @@ static int parse_wav_header(FILE *file, unsigned int *num_channels, unsigned int - return 0; - } - -+int find_adts_header(FILE *file, unsigned int *num_channels, unsigned int *sample_rate, unsigned int *format) -+{ -+ int ret; -+ unsigned char buf[5]; -+ -+ ret = fread(buf, sizeof(buf), 1, file); -+ if (ret < 0) { -+ fprintf(stderr, "open file error: %d\n", ret); -+ return 0; -+ } -+ fseek(file, 0, SEEK_SET); -+ -+ if ((buf[0] != 0xff) || (buf[1] & 0xf0 != 0xf0)) -+ return 0; -+ /* mpeg id */ -+ switch (buf[1]>>3 & 0x1) { -+ case 0x0: -+ *format = SND_AUDIOSTREAMFORMAT_MP4ADTS; -+ break; -+ case 0x1: -+ *format = SND_AUDIOSTREAMFORMAT_MP2ADTS; -+ break; -+ default: -+ fprintf(stderr, "can't find stream format\n"); -+ break; -+ } -+ /* sample_rate */ -+ switch (buf[2]>>2 & 0xf) { -+ case 0x0: -+ *sample_rate = 96000; -+ break; -+ case 0x1: -+ *sample_rate = 88200; -+ break; -+ case 0x2: -+ *sample_rate = 64000; -+ break; -+ case 0x3: -+ *sample_rate = 48000; -+ break; -+ case 0x4: -+ *sample_rate = 44100; -+ break; -+ case 0x5: -+ *sample_rate = 32000; -+ break; -+ case 0x6: -+ *sample_rate = 24000; -+ break; -+ case 0x7: -+ *sample_rate = 22050; -+ break; -+ case 0x8: -+ *sample_rate = 16000; -+ break; -+ case 0x9: -+ *sample_rate = 12000; -+ break; -+ case 0xa: -+ *sample_rate = 11025; -+ break; -+ case 0xb: -+ *sample_rate = 8000; -+ break; -+ case 0xc: -+ *sample_rate = 7350; -+ break; -+ default: -+ break; -+ } -+ /* channel */ -+ switch (((buf[2]&0x1) << 2) | (buf[3]>>6)) { -+ case 1: -+ *num_channels = 1; -+ break; -+ case 2: -+ *num_channels = 2; -+ break; -+ case 3: -+ *num_channels = 3; -+ break; -+ case 4: -+ *num_channels = 4; -+ break; -+ case 5: -+ *num_channels = 5; -+ break; -+ case 6: -+ *num_channels = 6; -+ break; -+ case 7: -+ *num_channels = 7; -+ break; -+ default: -+ break; -+ } -+ return 1; -+} -+ -+static const int aac_sample_rates[] = { 96000, 88200, 64000, 48000, 44100, -+ 32000, 24000, 22050, 16000, 12000, 11025, 8000, 7350 -+}; -+ -+#define MAX_SR_NUM sizeof(aac_sample_rates)/sizeof(aac_sample_rates[0]) -+ -+static int get_sample_rate_from_index(int sr_index) -+{ -+ if (sr_index >= 0 && sr_index < MAX_SR_NUM) -+ return aac_sample_rates[sr_index]; -+ -+ return 0; -+} -+ -+int find_adif_header(FILE *file, unsigned int *num_channels, unsigned int *sample_rate, unsigned int *format) -+{ -+ int ret; -+ unsigned char adif_id[4]; -+ unsigned char adif_header[20]; -+ int bitstream_type; -+ int bitrate; -+ int object_type; -+ int sr_index; -+ int skip_size = 0; -+ -+ ret = fread(adif_id, sizeof(unsigned char), 4, file); -+ if (ret < 0) { -+ fprintf(stderr, "read data from file err: %d\n", ret); -+ return 0; -+ } -+ /* adif id */ -+ if ((adif_id[0] != 0x41) || (adif_id[1] != 0x44) || -+ (adif_id[2] != 0x49) || (adif_id[3] != 0x46)) -+ return 0; -+ -+ fread(adif_header, sizeof(unsigned char), 20, file); -+ -+ /* copyright string */ -+ if (adif_header[0] & 0x80) -+ skip_size = 9; -+ -+ bitstream_type = adif_header[0 + skip_size] & 0x10; -+ bitrate = -+ ((unsigned int) (adif_header[0 + skip_size] & 0x0f) << 19) | -+ ((unsigned int) adif_header[1 + skip_size] << 11) | -+ ((unsigned int) adif_header[2 + skip_size] << 3) | -+ ((unsigned int) adif_header[3 + skip_size] & 0xe0); -+ -+ if (bitstream_type == 0) { -+ object_type = ((adif_header[6 + skip_size] & 0x01) << 1) | -+ ((adif_header[7 + skip_size] & 0x80) >> 7); -+ sr_index = (adif_header[7 + skip_size] & 0x78) >> 3; -+ } -+ /* VBR */ -+ else { -+ object_type = (adif_header[4 + skip_size] & 0x18) >> 3; -+ sr_index = ((adif_header[4 + skip_size] & 0x07) << 1) | -+ ((adif_header[5 + skip_size] & 0x80) >> 7); -+ } -+ -+ /* sample rate */ -+ *sample_rate = get_sample_rate_from_index(sr_index); -+ -+ /* FIXME: assume channels is 2 */ -+ *num_channels = 2; -+ -+ *format = SND_AUDIOSTREAMFORMAT_ADIF; -+ fseek(file, 0, SEEK_SET); -+ return 1; -+} -+ -+static int parse_aac_header(FILE *file, unsigned int *num_channels, unsigned int *sample_rate, unsigned int *format) -+{ -+ if (find_adts_header(file, num_channels, sample_rate, format)) -+ return 1; -+ else if (find_adif_header(file, num_channels, sample_rate, format)) -+ return 1; -+ else { -+ fprintf(stderr, "can't find streams format\n"); -+ return 0; -+ } -+ -+ return 1; -+} -+ - static int print_time(struct compress *compress) - { - unsigned int avail; -@@ -513,6 +697,29 @@ void get_codec_pcm(FILE *file, struct compr_config *config, - codec->format = format; - } - -+void get_codec_aac(FILE *file, struct compr_config *config, -+ struct snd_codec *codec) -+{ -+ unsigned int channels, rate, format; -+ -+ if (parse_aac_header(file, &channels, &rate, &format) == 0) { -+ fclose(file); -+ exit(EXIT_FAILURE); -+ }; -+ fseek(file, 0, SEEK_SET); -+ -+ codec->id = SND_AUDIOCODEC_AAC; -+ codec->ch_in = channels; -+ codec->ch_out = channels; -+ codec->sample_rate = rate; -+ codec->bit_rate = 0; -+ codec->rate_control = 0; -+ codec->profile = SND_AUDIOPROFILE_AAC; -+ codec->level = 0; -+ codec->ch_mode = 0; -+ codec->format = format; -+ -+} - void play_samples(char *name, unsigned int card, unsigned int device, - unsigned long buffer_size, unsigned int frag, - unsigned long codec_id, int pause_count, int pause_block, -@@ -544,6 +751,9 @@ void play_samples(char *name, unsigned int card, unsigned int device, - case SND_AUDIOCODEC_PCM: - get_codec_pcm(file, &config, &codec); - break; -+ case SND_AUDIOCODEC_AAC: -+ get_codec_aac(file, &config, &codec); -+ break; - default: - fprintf(stderr, "codec ID %ld is not supported\n", codec_id); - exit(EXIT_FAILURE); --- -2.17.1 - diff --git a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/tinycompress/tinycompress_1.1.6.bb b/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/tinycompress/tinycompress_1.1.6.bb deleted file mode 100644 index ccfa94cd6..000000000 --- a/meta-digi-dey/dynamic-layers/freescale-layer/recipes-multimedia/tinycompress/tinycompress_1.1.6.bb +++ /dev/null @@ -1,19 +0,0 @@ -SUMMARY = "tinycompress library for compress audio offload in alsa" -DESCRIPTION = "A library to handle compressed formats like MP3 etc" -LICENSE = "BSD-3-Clause" - -inherit autotools pkgconfig -LIC_FILES_CHKSUM = "file://COPYING;md5=cf9105c1a2d4405cbe04bbe3367373a0" - -DEPENDS:append = " alsa-lib" - -SRC_URI = "git://git.alsa-project.org/tinycompress.git;protocol=git;branch=master \ - file://0001-tinycompress-Add-id3-decoding.patch \ - file://0002-cplay-Support-wave-file.patch \ - file://0003-cplay-Add-pause-feature.patch \ - file://0004-tinycompress-pass-NULL-buffer-with-0-size-to-driver.patch \ - file://0005-cplay-Support-aac-streams.patch \ -" -SRCREV = "995f2ed91045dad8c20485ab1a64727d22cd92e5" - -S = "${WORKDIR}/git" diff --git a/meta-digi-dey/recipes-connectivity/openssl/files/environment.d-openssl.sh b/meta-digi-dey/recipes-connectivity/openssl/files/environment.d-openssl.sh deleted file mode 100644 index b9cc24a7a..000000000 --- a/meta-digi-dey/recipes-connectivity/openssl/files/environment.d-openssl.sh +++ /dev/null @@ -1 +0,0 @@ -export OPENSSL_CONF="$OECORE_NATIVE_SYSROOT/usr/lib/ssl/openssl.cnf" diff --git a/meta-digi-dey/recipes-connectivity/openssl/openssl/0001-Modify-openssl.cnf-to-automatically-load-the-pkcs11-.patch b/meta-digi-dey/recipes-connectivity/openssl/openssl/0001-Modify-openssl.cnf-to-automatically-load-the-pkcs11-.patch deleted file mode 100644 index 51b599551..000000000 --- a/meta-digi-dey/recipes-connectivity/openssl/openssl/0001-Modify-openssl.cnf-to-automatically-load-the-pkcs11-.patch +++ /dev/null @@ -1,40 +0,0 @@ -From: Gabriel Valcazar -Date: Tue, 12 Nov 2019 12:00:07 +0100 -Subject: [PATCH] Modify openssl.cnf to automatically load the pkcs11 engine - -https://jira.digi.com/browse/DEL-6835 - -Signed-off-by: Gabriel Valcazar ---- - apps/openssl.cnf | 14 ++++++++++++++ - 1 file changed, 14 insertions(+) - -diff --git a/apps/openssl.cnf b/apps/openssl.cnf -index 4acca4b..2261048 100644 ---- a/apps/openssl.cnf -+++ b/apps/openssl.cnf -@@ -7,6 +7,8 @@ - # file using the .include directive. - #.include filename - -+openssl_conf = openssl_init -+ - # This definition stops the following lines choking if HOME isn't - # defined. - HOME = . -@@ -348,3 +350,15 @@ ess_cert_id_chain = no # Must the ESS cert id chain be included? - # (optional, default: no) - ess_cert_id_alg = sha1 # algorithm to compute certificate - # identifier (optional, default: sha1) -+ -+[ openssl_init ] -+engines = engine_section -+ -+[ engine_section ] -+pkcs11 = pkcs11_config -+ -+[ pkcs11_config ] -+engine_id = pkcs11 -+dynamic_path = /usr/lib/engines-1.1/pkcs11.so -+MODULE_PATH = /usr/lib/libcryptoauth.so.2018.10.26 -+init = 0 diff --git a/meta-digi-dey/recipes-connectivity/openssl/openssl/0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch b/meta-digi-dey/recipes-connectivity/openssl/openssl/0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch deleted file mode 100644 index 949c78834..000000000 --- a/meta-digi-dey/recipes-connectivity/openssl/openssl/0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch +++ /dev/null @@ -1,76 +0,0 @@ -From 3e1d00481093e10775eaf69d619c45b32a4aa7dc Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Martin=20Hundeb=C3=B8ll?= -Date: Tue, 6 Nov 2018 14:50:47 +0100 -Subject: [PATCH] buildinfo: strip sysroot and debug-prefix-map from compiler - info -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The openssl build system generates buildinf.h containing the full -compiler command line used to compile objects. This breaks -reproducibility, as the compile command is baked into libcrypto, where -it is used when running `openssl version -f`. - -Add stripped build variables for the compiler and cflags lines, and use -those when generating buildinfo.h. - -This is based on a similar patch for older openssl versions: -https://patchwork.openembedded.org/patch/147229/ - -Upstream-Status: Inappropriate [OE specific] -Signed-off-by: Martin Hundebøll - - -Update to fix buildpaths qa issue for '-fmacro-prefix-map'. - -Signed-off-by: Kai Kang ---- - Configurations/unix-Makefile.tmpl | 10 +++++++++- - crypto/build.info | 2 +- - 2 files changed, 10 insertions(+), 2 deletions(-) - -diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl -index 16af4d2087..54c162784c 100644 ---- a/Configurations/unix-Makefile.tmpl -+++ b/Configurations/unix-Makefile.tmpl -@@ -317,13 +317,22 @@ BIN_LDFLAGS={- join(' ', $target{bin_lflags} || (), - '$(CNF_LDFLAGS)', '$(LDFLAGS)') -} - BIN_EX_LIBS=$(CNF_EX_LIBS) $(EX_LIBS) - --# CPPFLAGS_Q is used for one thing only: to build up buildinf.h -+# *_Q variables are used for one thing only: to build up buildinf.h - CPPFLAGS_Q={- $cppflags1 =~ s|([\\"])|\\$1|g; - $cppflags2 =~ s|([\\"])|\\$1|g; - $lib_cppflags =~ s|([\\"])|\\$1|g; - join(' ', $lib_cppflags || (), $cppflags2 || (), - $cppflags1 || ()) -} - -+CFLAGS_Q={- for (@{$config{CFLAGS}}) { -+ s|-fdebug-prefix-map=[^ ]+|-fdebug-prefix-map=|g; -+ s|-fmacro-prefix-map=[^ ]+|-fmacro-prefix-map=|g; -+ } -+ join(' ', @{$config{CFLAGS}}) -} -+ -+CC_Q={- $config{CC} =~ s|--sysroot=[^ ]+|--sysroot=recipe-sysroot|g; -+ join(' ', $config{CC}) -} -+ - PERLASM_SCHEME= {- $target{perlasm_scheme} -} - - # For x86 assembler: Set PROCESSOR to 386 if you want to support -diff --git a/crypto/build.info b/crypto/build.info -index b515b7318e..8c9cee2a09 100644 ---- a/crypto/build.info -+++ b/crypto/build.info -@@ -10,7 +10,7 @@ EXTRA= ../ms/uplink-x86.pl ../ms/uplink.c ../ms/applink.c \ - ppccpuid.pl pariscid.pl alphacpuid.pl arm64cpuid.pl armv4cpuid.pl - - DEPEND[cversion.o]=buildinf.h --GENERATE[buildinf.h]=../util/mkbuildinf.pl "$(CC) $(LIB_CFLAGS) $(CPPFLAGS_Q)" "$(PLATFORM)" -+GENERATE[buildinf.h]=../util/mkbuildinf.pl "$(CC_Q) $(CFLAGS_Q) $(CPPFLAGS_Q)" "$(PLATFORM)" - DEPEND[buildinf.h]=../configdata.pm - - GENERATE[uplink-x86.s]=../ms/uplink-x86.pl $(PERLASM_SCHEME) --- -2.19.1 - diff --git a/meta-digi-dey/recipes-connectivity/openssl/openssl/0001-skip-test_symbol_presence.patch b/meta-digi-dey/recipes-connectivity/openssl/openssl/0001-skip-test_symbol_presence.patch deleted file mode 100644 index d8d9651b6..000000000 --- a/meta-digi-dey/recipes-connectivity/openssl/openssl/0001-skip-test_symbol_presence.patch +++ /dev/null @@ -1,46 +0,0 @@ -From a9401b2289656c5a36dd1b0ecebf0d23e291ce70 Mon Sep 17 00:00:00 2001 -From: Hongxu Jia -Date: Tue, 2 Oct 2018 23:58:24 +0800 -Subject: [PATCH] skip test_symbol_presence - -We cannot skip `01-test_symbol_presence.t' by configuring option `no-shared' -as INSTALL told us the shared libraries will not be built. - -[INSTALL snip] - Notes on shared libraries - ------------------------- - - For most systems the OpenSSL Configure script knows what is needed to - build shared libraries for libcrypto and libssl. On these systems - the shared libraries will be created by default. This can be suppressed and - only static libraries created by using the "no-shared" option. On systems - where OpenSSL does not know how to build shared libraries the "no-shared" - option will be forced and only static libraries will be created. -[INSTALL snip] - -Hence directly modification the case to skip it. - -Upstream-Status: Inappropriate [OE Specific] - -Signed-off-by: Hongxu Jia ---- - test/recipes/01-test_symbol_presence.t | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/test/recipes/01-test_symbol_presence.t b/test/recipes/01-test_symbol_presence.t -index 7f2a2d7..0b93745 100644 ---- a/test/recipes/01-test_symbol_presence.t -+++ b/test/recipes/01-test_symbol_presence.t -@@ -14,8 +14,7 @@ use OpenSSL::Test::Utils; - - setup("test_symbol_presence"); - --plan skip_all => "Only useful when building shared libraries" -- if disabled("shared"); -+plan skip_all => "The case needs debug symbols then we just disable it"; - - my @libnames = ("crypto", "ssl"); - my $testcount = scalar @libnames; --- -2.7.4 - diff --git a/meta-digi-dey/recipes-connectivity/openssl/openssl/afalg.patch b/meta-digi-dey/recipes-connectivity/openssl/openssl/afalg.patch deleted file mode 100644 index b7c0e9697..000000000 --- a/meta-digi-dey/recipes-connectivity/openssl/openssl/afalg.patch +++ /dev/null @@ -1,31 +0,0 @@ -Don't refuse to build afalgeng if cross-compiling or the host kernel is too old. - -Upstream-Status: Submitted [hhttps://github.com/openssl/openssl/pull/7688] -Signed-off-by: Ross Burton - -diff --git a/Configure b/Configure -index 3baa8ce..9ef52ed 100755 ---- a/Configure -+++ b/Configure -@@ -1550,20 +1550,7 @@ unless ($disabled{"crypto-mdebug-backtrace"}) - unless ($disabled{afalgeng}) { - $config{afalgeng}=""; - if (grep { $_ eq 'afalgeng' } @{$target{enable}}) { -- my $minver = 4*10000 + 1*100 + 0; -- if ($config{CROSS_COMPILE} eq "") { -- my $verstr = `uname -r`; -- my ($ma, $mi1, $mi2) = split("\\.", $verstr); -- ($mi2) = $mi2 =~ /(\d+)/; -- my $ver = $ma*10000 + $mi1*100 + $mi2; -- if ($ver < $minver) { -- disable('too-old-kernel', 'afalgeng'); -- } else { -- push @{$config{engdirs}}, "afalg"; -- } -- } else { -- disable('cross-compiling', 'afalgeng'); -- } -+ push @{$config{engdirs}}, "afalg"; - } else { - disable('not-linux', 'afalgeng'); - } diff --git a/meta-digi-dey/recipes-connectivity/openssl/openssl/reproducibility.patch b/meta-digi-dey/recipes-connectivity/openssl/openssl/reproducibility.patch deleted file mode 100644 index 8accbc9df..000000000 --- a/meta-digi-dey/recipes-connectivity/openssl/openssl/reproducibility.patch +++ /dev/null @@ -1,22 +0,0 @@ -Using localtime() means the output can depend on the timezone of the build machine. -Using gmtime() is safer. For complete reproducibility use SOURCE_DATE_EPOCH if set. - -Signed-off-by: Richard Purdie -Upstream-Status: Pending [should be suitable] - -Index: openssl-3.0.1/apps/progs.pl -=================================================================== ---- openssl-3.0.1.orig/apps/progs.pl -+++ openssl-3.0.1/apps/progs.pl -@@ -21,7 +21,10 @@ die "Unrecognised option, must be -C or - my %commands = (); - my $cmdre = qr/^\s*int\s+([a-z_][a-z0-9_]*)_main\(\s*int\s+argc\s*,/; - my $apps_openssl = shift @ARGV; --my $YEAR = [localtime()]->[5] + 1900; -+my $YEAR = [gmtime()]->[5] + 1900; -+if (defined($ENV{SOURCE_DATE_EPOCH}) && $ENV{SOURCE_DATE_EPOCH} !~ /\D/) { -+ $YEAR = [gmtime($ENV{SOURCE_DATE_EPOCH})]->[5] + 1900; -+} - - # because the program apps/openssl has object files as sources, and - # they then have the corresponding C files as source, we need to chain diff --git a/meta-digi-dey/recipes-connectivity/openssl/openssl/reproducible.patch b/meta-digi-dey/recipes-connectivity/openssl/openssl/reproducible.patch deleted file mode 100644 index a24260c95..000000000 --- a/meta-digi-dey/recipes-connectivity/openssl/openssl/reproducible.patch +++ /dev/null @@ -1,32 +0,0 @@ -The value for perl_archname can vary depending on the host, e.g. -x86_64-linux-gnu-thread-multi or x86_64-linux-thread-multi which -makes the ptest package non-reproducible. Its unused other than -these references so drop it. - -RP 2020/2/6 - -Upstream-Status: Pending -Signed-off-by: Richard Purdie - -Index: openssl-1.1.1d/Configure -=================================================================== ---- openssl-1.1.1d.orig/Configure -+++ openssl-1.1.1d/Configure -@@ -286,7 +286,7 @@ if (defined env($local_config_envname)) - # Save away perl command information - $config{perl_cmd} = $^X; - $config{perl_version} = $Config{version}; --$config{perl_archname} = $Config{archname}; -+#$config{perl_archname} = $Config{archname}; - - $config{prefix}=""; - $config{openssldir}=""; -@@ -2517,7 +2517,7 @@ _____ - @{$config{perlargv}}), "\n"; - print "\nPerl information:\n\n"; - print ' ',$config{perl_cmd},"\n"; -- print ' ',$config{perl_version},' for ',$config{perl_archname},"\n"; -+ print ' ',$config{perl_version},"\n"; - } - if ($dump || $options) { - my $longest = 0; diff --git a/meta-digi-dey/recipes-connectivity/openssl/openssl/run-ptest b/meta-digi-dey/recipes-connectivity/openssl/openssl/run-ptest deleted file mode 100644 index 3fb22471f..000000000 --- a/meta-digi-dey/recipes-connectivity/openssl/openssl/run-ptest +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -set -e - -# Optional arguments are 'list' to lists all tests, or the test name (base name -# ie test_evp, not 03_test_evp.t). - -export TOP=. -# OPENSSL_ENGINES is relative from the test binaries -export OPENSSL_ENGINES=../engines - -perl ./test/run_tests.pl $* | perl -0pe 's#(.*) \.*.ok#PASS: \1#g; s#(.*) \.*.skipped: (.*)#SKIP: \1 (\2)#g; s#(.*) \.*.\nDubious#FAIL: \1#;' diff --git a/meta-digi-dey/recipes-connectivity/openssl/openssl_%.bbappend b/meta-digi-dey/recipes-connectivity/openssl/openssl_%.bbappend deleted file mode 100644 index f2fc9ac0c..000000000 --- a/meta-digi-dey/recipes-connectivity/openssl/openssl_%.bbappend +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright (C) 2016-2019 Digi International. - -FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:" - -CRYPTOCHIP_COMMON_PATCHES = " \ - file://0001-Modify-openssl.cnf-to-automatically-load-the-pkcs11-.patch \ -" - -SRC_URI:remove = " \ - file://debian1.0.2/version-script.patch \ - file://debian1.0.2/soname.patch \ -" - -SRC_URI += " \ - ${@bb.utils.contains("MACHINE_FEATURES", "cryptochip", "${CRYPTOCHIP_COMMON_PATCHES}", "", d)} \ -" - -# Add the openssl binary whenever the base package is pulled in via a dependency -RRECOMMENDS:libcrypto += "openssl-bin" - -PACKAGECONFIG += "cryptodev-linux" diff --git a/meta-digi-dey/recipes-connectivity/openssl/openssl_1.1.1n.bb b/meta-digi-dey/recipes-connectivity/openssl/openssl_1.1.1n.bb deleted file mode 100644 index 7c042295b..000000000 --- a/meta-digi-dey/recipes-connectivity/openssl/openssl_1.1.1n.bb +++ /dev/null @@ -1,219 +0,0 @@ -SUMMARY = "Secure Socket Layer" -DESCRIPTION = "Secure Socket Layer (SSL) binary and related cryptographic tools." -HOMEPAGE = "http://www.openssl.org/" -BUGTRACKER = "http://www.openssl.org/news/vulnerabilities.html" -SECTION = "libs/network" - -# "openssl" here actually means both OpenSSL and SSLeay licenses apply -# (see meta/files/common-licenses/OpenSSL to which "openssl" is SPDXLICENSEMAPped) -LICENSE = "openssl" -LIC_FILES_CHKSUM = "file://LICENSE;md5=d343e62fc9c833710bbbed25f27364c8" - -DEPENDS = "hostperl-runtime-native" - -SRC_URI = "http://www.openssl.org/source/openssl-${PV}.tar.gz \ - file://run-ptest \ - file://0001-skip-test_symbol_presence.patch \ - file://0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch \ - file://afalg.patch \ - file://reproducible.patch \ - file://reproducibility.patch \ - " - -SRC_URI:append:class-nativesdk = " \ - file://environment.d-openssl.sh \ - " - -SRC_URI[sha256sum] = "40dceb51a4f6a5275bde0e6bf20ef4b91bfc32ed57c0552e2e8e15463372b17a" - -inherit lib_package multilib_header multilib_script ptest -MULTILIB_SCRIPTS = "${PN}-bin:${bindir}/c_rehash" - -PACKAGECONFIG ?= "" -PACKAGECONFIG:class-native = "" -PACKAGECONFIG:class-nativesdk = "" - -PACKAGECONFIG[cryptodev-linux] = "enable-devcryptoeng,disable-devcryptoeng,cryptodev-linux,,cryptodev-module" - -B = "${WORKDIR}/build" -do_configure[cleandirs] = "${B}" - -#| ./libcrypto.so: undefined reference to `getcontext' -#| ./libcrypto.so: undefined reference to `setcontext' -#| ./libcrypto.so: undefined reference to `makecontext' -EXTRA_OECONF:append:libc-musl = " no-async" -EXTRA_OECONF:append:libc-musl:powerpc64 = " no-asm" - -# adding devrandom prevents openssl from using getrandom() which is not available on older glibc versions -# (native versions can be built with newer glibc, but then relocated onto a system with older glibc) -EXTRA_OECONF:class-native = "--with-rand-seed=os,devrandom" -EXTRA_OECONF:class-nativesdk = "--with-rand-seed=os,devrandom" - -# Relying on hardcoded built-in paths causes openssl-native to not be relocateable from sstate. -CFLAGS:append:class-native = " -DOPENSSLDIR=/not/builtin -DENGINESDIR=/not/builtin" -CFLAGS:append:class-nativesdk = " -DOPENSSLDIR=/not/builtin -DENGINESDIR=/not/builtin" - -do_configure () { - os=${HOST_OS} - case $os in - linux-gnueabi |\ - linux-gnuspe |\ - linux-musleabi |\ - linux-muslspe |\ - linux-musl ) - os=linux - ;; - *) - ;; - esac - target="$os-${HOST_ARCH}" - case $target in - linux-arm*) - target=linux-armv4 - ;; - linux-aarch64*) - target=linux-aarch64 - ;; - linux-i?86 | linux-viac3) - target=linux-x86 - ;; - linux-gnux32-x86_64 | linux-muslx32-x86_64 ) - target=linux-x32 - ;; - linux-gnu64-x86_64) - target=linux-x86_64 - ;; - linux-mips | linux-mipsel) - # specifying TARGET_CC_ARCH prevents openssl from (incorrectly) adding target architecture flags - target="linux-mips32 ${TARGET_CC_ARCH}" - ;; - linux-gnun32-mips*) - target=linux-mips64 - ;; - linux-*-mips64 | linux-mips64 | linux-*-mips64el | linux-mips64el) - target=linux64-mips64 - ;; - linux-microblaze* | linux-nios2* | linux-sh3 | linux-sh4 | linux-arc*) - target=linux-generic32 - ;; - linux-powerpc) - target=linux-ppc - ;; - linux-powerpc64) - target=linux-ppc64 - ;; - linux-powerpc64le) - target=linux-ppc64le - ;; - linux-riscv32) - target=linux-generic32 - ;; - linux-riscv64) - target=linux-generic64 - ;; - linux-sparc | linux-supersparc) - target=linux-sparcv9 - ;; - esac - - useprefix=${prefix} - if [ "x$useprefix" = "x" ]; then - useprefix=/ - fi - # WARNING: do not set compiler/linker flags (-I/-D etc.) in EXTRA_OECONF, as they will fully replace the - # environment variables set by bitbake. Adjust the environment variables instead. - HASHBANGPERL="/usr/bin/env perl" PERL=perl PERL5LIB="${S}/external/perl/Text-Template-1.46/lib/" \ - perl ${S}/Configure ${EXTRA_OECONF} ${PACKAGECONFIG_CONFARGS} --prefix=$useprefix --openssldir=${libdir}/ssl-1.1 --libdir=${libdir} $target - perl ${B}/configdata.pm --dump -} - -do_install () { - oe_runmake DESTDIR="${D}" MANDIR="${mandir}" MANSUFFIX=ssl install - - oe_multilib_header openssl/opensslconf.h - - # Create SSL structure for packages such as ca-certificates which - # contain hard-coded paths to /etc/ssl. Debian does the same. - install -d ${D}${sysconfdir}/ssl - mv ${D}${libdir}/ssl-1.1/certs \ - ${D}${libdir}/ssl-1.1/private \ - ${D}${libdir}/ssl-1.1/openssl.cnf \ - ${D}${sysconfdir}/ssl/ - - # Although absolute symlinks would be OK for the target, they become - # invalid if native or nativesdk are relocated from sstate. - ln -sf ${@oe.path.relative('${libdir}/ssl-1.1', '${sysconfdir}/ssl/certs')} ${D}${libdir}/ssl-1.1/certs - ln -sf ${@oe.path.relative('${libdir}/ssl-1.1', '${sysconfdir}/ssl/private')} ${D}${libdir}/ssl-1.1/private - ln -sf ${@oe.path.relative('${libdir}/ssl-1.1', '${sysconfdir}/ssl/openssl.cnf')} ${D}${libdir}/ssl-1.1/openssl.cnf -} - -do_install:append:class-native () { - create_wrapper ${D}${bindir}/openssl \ - OPENSSL_CONF=${libdir}/ssl-1.1/openssl.cnf \ - SSL_CERT_DIR=${libdir}/ssl-1.1/certs \ - SSL_CERT_FILE=${libdir}/ssl-1.1/cert.pem \ - OPENSSL_ENGINES=${libdir}/engines-1.1 -} - -do_install:append:class-nativesdk () { - mkdir -p ${D}${SDKPATHNATIVE}/environment-setup.d - install -m 644 ${WORKDIR}/environment.d-openssl.sh ${D}${SDKPATHNATIVE}/environment-setup.d/openssl.sh - sed 's|/usr/lib/ssl/|/usr/lib/ssl-1.1/|g' -i ${D}${SDKPATHNATIVE}/environment-setup.d/openssl.sh -} - -PTEST_BUILD_HOST_FILES += "configdata.pm" -PTEST_BUILD_HOST_PATTERN = "perl_version =" -do_install_ptest () { - # Prune the build tree - rm -f ${B}/fuzz/*.* ${B}/test/*.* - - cp ${S}/Configure ${B}/configdata.pm ${D}${PTEST_PATH} - cp -r ${S}/external ${B}/test ${S}/test ${B}/fuzz ${S}/util ${B}/util ${D}${PTEST_PATH} - - # For test_shlibload - ln -s ${libdir}/libcrypto.so.1.1 ${D}${PTEST_PATH}/ - ln -s ${libdir}/libssl.so.1.1 ${D}${PTEST_PATH}/ - - install -d ${D}${PTEST_PATH}/apps - ln -s ${bindir}/openssl ${D}${PTEST_PATH}/apps - install -m644 ${S}/apps/*.pem ${S}/apps/*.srl ${S}/apps/openssl.cnf ${D}${PTEST_PATH}/apps - install -m755 ${B}/apps/CA.pl ${D}${PTEST_PATH}/apps - - install -d ${D}${PTEST_PATH}/engines - install -m755 ${B}/engines/dasync.so ${D}${PTEST_PATH}/engines - install -m755 ${B}/engines/ossltest.so ${D}${PTEST_PATH}/engines -} - -# Add the openssl.cnf file to the openssl-conf package. Make the libcrypto -# package RRECOMMENDS on this package. This will enable the configuration -# file to be installed for both the openssl-bin package and the libcrypto -# package since the openssl-bin package depends on the libcrypto package. - -PACKAGES =+ "libcrypto libssl openssl-conf ${PN}-engines ${PN}-misc" - -FILES:libcrypto = "${libdir}/libcrypto${SOLIBS}" -FILES:libssl = "${libdir}/libssl${SOLIBS}" -FILES:openssl-conf = "${sysconfdir}/ssl/openssl.cnf \ - ${libdir}/ssl-1.1/openssl.cnf* \ - " -FILES:${PN}-engines = "${libdir}/engines-1.1" -FILES:${PN}-misc = "${libdir}/ssl-1.1/misc" -FILES:${PN} =+ "${libdir}/ssl-1.1/*" -FILES:${PN}:append:class-nativesdk = " ${SDKPATHNATIVE}/environment-setup.d/openssl.sh" - -CONFFILES:openssl-conf = "${sysconfdir}/ssl/openssl.cnf" - -RRECOMMENDS:libcrypto += "openssl-conf" -RDEPENDS:${PN}-ptest += "openssl-bin perl perl-modules bash" - -RDEPENDS:${PN}-bin += "openssl-conf" - -BBCLASSEXTEND = "native nativesdk" - -CVE_PRODUCT = "openssl:openssl" - -CVE_VERSION_SUFFIX = "alphabetical" - -# Only affects OpenSSL >= 1.1.1 in combination with Apache < 2.4.37 -# Apache in meta-webserver is already recent enough -CVE_CHECK_WHITELIST += "CVE-2019-0190" diff --git a/meta-digi-dey/recipes-devtools/stb/stb_git.bb b/meta-digi-dey/recipes-devtools/stb/stb_git.bb deleted file mode 100644 index afc764467..000000000 --- a/meta-digi-dey/recipes-devtools/stb/stb_git.bb +++ /dev/null @@ -1,20 +0,0 @@ -SUMMARY = "single-file public domain (or MIT licensed) libraries for C/C++" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://stb.h;beginline=14418;endline=14433;md5=b10975d4c8155af1811ab611586f01d2" - -PV = "0.0+git${SRCPV}" - -SRCREV = "f67165c2bb2af3060ecae7d20d6f731173485ad0" -SRC_URI = "git://github.com/nothings/stb.git;branch=master;protocol=https" - -S = "${WORKDIR}/git" - -do_install() { - install -d ${D}${includedir} - for hdr in ${S}/*.h; do - install -m 0644 $hdr ${D}${includedir} - done -} - -# This is a header-only library, so the main package will be empty. -ALLOW_EMPTY:${PN} = "1" diff --git a/meta-digi-dey/recipes-graphics/mesa/mesa_%.bbappend b/meta-digi-dey/recipes-graphics/mesa/mesa_%.bbappend deleted file mode 100644 index 6c688cc11..000000000 --- a/meta-digi-dey/recipes-graphics/mesa/mesa_%.bbappend +++ /dev/null @@ -1,11 +0,0 @@ -# Undo customization in meta-freescale that doesn't apply to 8DXL -PACKAGECONFIG:remove:mx8dxl = "osmesa" -DRIDRIVERS:remove:mx8dxl = "swrast" -PACKAGECONFIG:remove:mx8phantomdxl = "osmesa" -DRIDRIVERS:remove:mx8phantomdxl = "swrast" -PACKAGECONFIG:remove:mx8mnlite = "osmesa" -DRIDRIVERS:remove:mx8mnlite = "swrast" - -do_install:append:imxgpu3d () { - rm -f ${D}${includedir}/GL/glcorearb.h -} diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan-loader/0001-STDIO-844-No-need-to-change-the-App-s-apiVersion-to-.patch b/meta-digi-dey/recipes-graphics/vulkan/vulkan-loader/0001-STDIO-844-No-need-to-change-the-App-s-apiVersion-to-.patch deleted file mode 100644 index c6c1a192a..000000000 --- a/meta-digi-dey/recipes-graphics/vulkan/vulkan-loader/0001-STDIO-844-No-need-to-change-the-App-s-apiVersion-to-.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 4f7fd011b47cb65c58b0a1ffaa3830f0b63b5b1d Mon Sep 17 00:00:00 2001 -From: Ella -Date: Thu, 7 Mar 2019 17:18:26 +0800 -Subject: [PATCH] STDIO-844 No need to change the App's apiVersion to ICD - version - -There is no need to do so, otherwise we won't catch the App's error and -Vulkan CTS will fail to reject the invalid api version. - -Date: 7th Mar, 2019 -Signed-off-by: Ella Feng ---- - loader/loader.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/loader/loader.c b/loader/loader.c -index 281851584..f2033b6ad 100644 ---- a/loader/loader.c -+++ b/loader/loader.c -@@ -5741,6 +5741,7 @@ VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateInstance(const VkInstanceCreateI - } - - // Create an instance, substituting the version to 1.0 if necessary -+#if 0 - VkApplicationInfo icd_app_info; - uint32_t icd_version_nopatch = VK_MAKE_VERSION(VK_VERSION_MAJOR(icd_version), VK_VERSION_MINOR(icd_version), 0); - uint32_t requested_version = pCreateInfo == NULL || pCreateInfo->pApplicationInfo == NULL ? VK_API_VERSION_1_0 : pCreateInfo->pApplicationInfo->apiVersion; -@@ -5753,6 +5754,7 @@ VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateInstance(const VkInstanceCreateI - icd_app_info.apiVersion = icd_version; - icd_create_info.pApplicationInfo = &icd_app_info; - } -+#endif - icd_result = ptr_instance->icd_tramp_list.scanned_list[i].CreateInstance(&icd_create_info, pAllocator, &(icd_term->instance)); - if (VK_ERROR_OUT_OF_HOST_MEMORY == icd_result) { - // If out of memory, bail immediately. --- -2.21.0 - diff --git a/meta-digi-dey/recipes-graphics/vulkan/vulkan-loader_1.2.170.0.bbappend b/meta-digi-dey/recipes-graphics/vulkan/vulkan-loader_1.2.170.0.bbappend deleted file mode 100644 index 0a5b7a045..000000000 --- a/meta-digi-dey/recipes-graphics/vulkan/vulkan-loader_1.2.170.0.bbappend +++ /dev/null @@ -1,8 +0,0 @@ -FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" - -SRC_URI += "file://0001-STDIO-844-No-need-to-change-the-App-s-apiVersion-to-.patch" - -# libvulkan.so is loaded dynamically, so put it in the main package -FILES_SOLIBSDEV = "" -FILES:${PN} += "${libdir}/lib*${SOLIBSDEV}" -INSANE_SKIP:${PN} += "dev-so" diff --git a/meta-digi-dey/recipes-multimedia/alsa/alsa-lib/0001-add-conf-for-multichannel-support-in-imx.patch b/meta-digi-dey/recipes-multimedia/alsa/alsa-lib/0001-add-conf-for-multichannel-support-in-imx.patch deleted file mode 100755 index 87c0311ed..000000000 --- a/meta-digi-dey/recipes-multimedia/alsa/alsa-lib/0001-add-conf-for-multichannel-support-in-imx.patch +++ /dev/null @@ -1,221 +0,0 @@ -From cc06048dcd722049f92ab17958760bd798fb4781 Mon Sep 17 00:00:00 2001 -From: Shengjiu Wang -Date: Thu, 5 Jun 2014 17:37:47 +0800 -Subject: [PATCH] add conf for multichannel support in imx - -Upstream Status: Inappropriate [platform specific] - -Signed-off-by: Shengjiu Wang ---- - src/conf/cards/CS42888.conf | 94 ++++++++++++++++++++++++++++++++++++++++++++ - src/conf/cards/IMX-HDMI.conf | 67 +++++++++++++++++++++++++++++++ - src/conf/cards/Makefile.am | 4 +- - src/conf/cards/aliases.conf | 2 + - 4 files changed, 166 insertions(+), 1 deletion(-) - create mode 100644 src/conf/cards/CS42888.conf - create mode 100644 src/conf/cards/IMX-HDMI.conf - -diff --git a/src/conf/cards/CS42888.conf b/src/conf/cards/CS42888.conf -new file mode 100644 -index 0000000..671a284 ---- /dev/null -+++ b/src/conf/cards/CS42888.conf -@@ -0,0 +1,94 @@ -+# -+# Configuration for the CS42888 chip -+# -+ -+# default with dmix & dsnoop -+CS42888.pcm.default { -+ @args [ CARD ] -+ @args.CARD { -+ type string -+ } -+ type asym -+ playback.pcm { -+ type plug -+ slave.pcm { -+ @func concat -+ strings [ "dmix:" $CARD ",FORMAT=S32_LE" ] -+ } -+ } -+ capture.pcm { -+ type plug -+ slave.pcm { -+ @func concat -+ strings [ "dsnoop:" $CARD ",FORMAT=S32_LE" ] -+ } -+ } -+} -+ -+ -+ -+CS42888.pcm.surround40.0 { -+ @args [ CARD ] -+ @args.CARD { -+ type string -+ } -+ type plug -+ slave.pcm { -+ type hw -+ card $CARD -+ } -+ slave.channels 4 -+ ttable.0.0 1 -+ ttable.1.2 1 -+ ttable.2.1 1 -+ ttable.3.3 1 -+} -+ -+ -+ -+ -+ -+ -+CS42888.pcm.surround51.0 { -+ @args [ CARD ] -+ @args.CARD { -+ type string -+ } -+ type plug -+ slave.pcm { -+ type hw -+ card $CARD -+ } -+ slave.channels 6 -+ ttable.0.0 1 -+ ttable.1.3 1 -+ ttable.2.1 1 -+ ttable.3.4 1 -+ ttable.4.2 1 -+ ttable.5.5 1 -+} -+ -+ -+ -+CS42888.pcm.surround71.0 { -+ @args [ CARD ] -+ @args.CARD { -+ type string -+ } -+ type plug -+ slave.pcm { -+ type hw -+ card $CARD -+ } -+ slave.channels 8 -+ ttable.0.0 1 -+ ttable.1.4 1 -+ ttable.2.1 1 -+ ttable.3.5 1 -+ ttable.4.2 1 -+ ttable.5.6 1 -+ ttable.6.3 1 -+ ttable.7.7 1 -+} -+ -+# vim: ft=alsaconf -diff --git a/src/conf/cards/IMX-HDMI.conf b/src/conf/cards/IMX-HDMI.conf -new file mode 100644 -index 0000000..a51509e ---- /dev/null -+++ b/src/conf/cards/IMX-HDMI.conf -@@ -0,0 +1,67 @@ -+# -+# Configuration for the CS42888 chip -+# -+ -+# default with dmix & dsnoop -+IMX-HDMI.pcm.default { -+ @args [ CARD ] -+ @args.CARD { -+ type string -+ } -+ type asym -+ playback.pcm { -+ type plug -+ slave.pcm { -+ @func concat -+ strings [ "dmix:" $CARD ",FORMAT=S32_LE" ] -+ } -+ } -+ capture.pcm { -+ type plug -+ slave.pcm { -+ @func concat -+ strings [ "dsnoop:" $CARD ",FORMAT=S32_LE" ] -+ } -+ } -+} -+ -+ -+ -+IMX-HDMI.pcm.surround40.0 { -+ @args [ CARD ] -+ @args.CARD { -+ type string -+ } -+ type hw -+ card $CARD -+ channels 4 -+} -+ -+ -+ -+ -+ -+ -+IMX-HDMI.pcm.surround51.0 { -+ @args [ CARD ] -+ @args.CARD { -+ type string -+ } -+ type hw -+ card $CARD -+ channels 6 -+} -+ -+ -+ -+IMX-HDMI.pcm.surround71.0 { -+ @args [ CARD ] -+ @args.CARD { -+ type string -+ } -+ type hw -+ card $CARD -+ channels 8 -+} -+ -+# vim: ft=alsaconf -diff --git a/src/conf/cards/Makefile.am b/src/conf/cards/Makefile.am -index 00999f0..fbf0697 100644 ---- a/src/conf/cards/Makefile.am -+++ b/src/conf/cards/Makefile.am -@@ -58,7 +58,9 @@ cfg_files = aliases.conf \ - VIA8237.conf \ - VX222.conf \ - VXPocket.conf \ -- VXPocket440.conf -+ VXPocket440.conf \ -+ CS42888.conf \ -+ IMX-HDMI.conf - - if BUILD_ALISP - cfg_files += aliases.alisp -diff --git a/src/conf/cards/aliases.conf b/src/conf/cards/aliases.conf -index 18a920f..2c422ee 100644 ---- a/src/conf/cards/aliases.conf -+++ b/src/conf/cards/aliases.conf -@@ -57,6 +57,8 @@ CMI8786 cards.CMI8788 - CMI8787 cards.CMI8788 - pistachio cards.pistachio-card - VC4-HDMI cards.vc4-hdmi -+imx-cs42888 cards.CS42888 -+imx-hdmi-soc cards.IMX-HDMI - - - --- -2.7.4 - diff --git a/meta-digi-dey/recipes-multimedia/alsa/alsa-lib/0001-pcm-plugin-status-fix-the-return-value-regression.patch b/meta-digi-dey/recipes-multimedia/alsa/alsa-lib/0001-pcm-plugin-status-fix-the-return-value-regression.patch deleted file mode 100644 index 3a7aa772d..000000000 --- a/meta-digi-dey/recipes-multimedia/alsa/alsa-lib/0001-pcm-plugin-status-fix-the-return-value-regression.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 67be50a9d95c8659d4821d0cd8c228e4f57b2c32 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 30 Dec 2020 09:31:10 +0100 -Subject: [PATCH 1/2] pcm: plugin status - fix the return value (regression) - -The snd_pcm_plugin_avail_update() error code in snd_pcm_plugin_status() -should not be reported to the caller. The state errors can be determined -using the state member in the status structure. - -Fixes: 4f90392f07e ("pcm: fix the snd_pcm_plugin_status() avail and delay fields") -BugLink: https://github.com/alsa-project/alsa-lib/issues/107 -Signed-off-by: Jaroslav Kysela ---- - src/pcm/pcm_plugin.c | 8 +++----- - 1 file changed, 3 insertions(+), 5 deletions(-) - -diff --git a/src/pcm/pcm_plugin.c b/src/pcm/pcm_plugin.c -index 5739cfc2eb07..76a524fa801d 100644 ---- a/src/pcm/pcm_plugin.c -+++ b/src/pcm/pcm_plugin.c -@@ -541,19 +541,17 @@ static snd_pcm_sframes_t snd_pcm_plugin_avail_update(snd_pcm_t *pcm) - static int snd_pcm_plugin_status(snd_pcm_t *pcm, snd_pcm_status_t * status) - { - snd_pcm_plugin_t *plugin = pcm->private_data; -- snd_pcm_sframes_t err, avail; -+ snd_pcm_sframes_t err; - - /* sync with the latest hw and appl ptrs */ -- avail = snd_pcm_plugin_avail_update(pcm); -- if (avail < 0) -- return avail; -+ snd_pcm_plugin_avail_update(pcm); - - err = snd_pcm_status(plugin->gen.slave, status); - if (err < 0) - return err; - status->appl_ptr = *pcm->appl.ptr; - status->hw_ptr = *pcm->hw.ptr; -- status->avail = avail; -+ status->avail = snd_pcm_mmap_avail(pcm); - status->delay = snd_pcm_mmap_delay(pcm); - return 0; - } --- -2.27.0 - diff --git a/meta-digi-dey/recipes-multimedia/alsa/alsa-lib/0002-pcm-plugin-status-revert-the-recent-changes.patch b/meta-digi-dey/recipes-multimedia/alsa/alsa-lib/0002-pcm-plugin-status-revert-the-recent-changes.patch deleted file mode 100644 index 4d91b20ec..000000000 --- a/meta-digi-dey/recipes-multimedia/alsa/alsa-lib/0002-pcm-plugin-status-revert-the-recent-changes.patch +++ /dev/null @@ -1,34 +0,0 @@ -From eeea1c8c352e54908f464e8dfd7a06b0f7ce0e6e Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Sun, 3 Jan 2021 16:16:10 +0100 -Subject: [PATCH 2/2] pcm: plugin status - revert the recent changes - -It's no reason to sync the avail/delay fields using the mirrored -buffer pointers. The slave information must be valid. - -The original report probably tries to fix something for -the specific plugin. Revert all changes. - -Fixes: afe6ff3b33e ("pcm: plugin status - fix the return value (regression)") -Fixes: 4f90392f07e ("pcm: fix the snd_pcm_plugin_status() avail and delay fields") -Signed-off-by: Jaroslav Kysela ---- - src/pcm/pcm_plugin.c | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/src/pcm/pcm_plugin.c b/src/pcm/pcm_plugin.c -index 76a524fa801d..ea60eb98986e 100644 ---- a/src/pcm/pcm_plugin.c -+++ b/src/pcm/pcm_plugin.c -@@ -551,8 +551,6 @@ static int snd_pcm_plugin_status(snd_pcm_t *pcm, snd_pcm_status_t * status) - return err; - status->appl_ptr = *pcm->appl.ptr; - status->hw_ptr = *pcm->hw.ptr; -- status->avail = snd_pcm_mmap_avail(pcm); -- status->delay = snd_pcm_mmap_delay(pcm); - return 0; - } - --- -2.27.0 - diff --git a/meta-digi-dey/recipes-multimedia/alsa/alsa-lib/0005-add-ak4458-conf-for-multichannel-support.patch b/meta-digi-dey/recipes-multimedia/alsa/alsa-lib/0005-add-ak4458-conf-for-multichannel-support.patch deleted file mode 100644 index 98fca311d..000000000 --- a/meta-digi-dey/recipes-multimedia/alsa/alsa-lib/0005-add-ak4458-conf-for-multichannel-support.patch +++ /dev/null @@ -1,123 +0,0 @@ -From 1641ce8c724018365d7fa598f9a70c6492e7c271 Mon Sep 17 00:00:00 2001 -From: Shengjiu Wang -Date: Wed, 31 Jan 2018 15:06:53 +0800 -Subject: [PATCH] add ak4458 conf for multichannel support - -one limitation is that ALSA and pulseaudio only support -maximum 8 channels, but ak4458 may support 16 channels - -Upstream-Status: Inappropriate [i.MX specific] - -Signed-off-by: Shengjiu Wang ---- - src/conf/cards/AK4458.conf | 74 +++++++++++++++++++++++++++++++++++++++++++++ - src/conf/cards/Makefile.am | 3 +- - src/conf/cards/aliases.conf | 1 + - 3 files changed, 77 insertions(+), 1 deletion(-) - create mode 100644 src/conf/cards/AK4458.conf - -Index: alsa-lib-1.1.6/src/conf/cards/AK4458.conf -=================================================================== ---- /dev/null -+++ alsa-lib-1.1.6/src/conf/cards/AK4458.conf -@@ -0,0 +1,74 @@ -+# -+# Configuration for the AK4458 chip -+# -+ -+# default with dmix & dsnoop -+AK4458.pcm.default { -+ @args [ CARD ] -+ @args.CARD { -+ type string -+ } -+ type asym -+ playback.pcm { -+ type plug -+ slave.pcm { -+ @func concat -+ strings [ "dmix:" $CARD ",FORMAT=S32_LE" ] -+ } -+ } -+ capture.pcm { -+ type plug -+ slave.pcm { -+ @func concat -+ strings [ "dsnoop:" $CARD ",FORMAT=S32_LE" ] -+ } -+ } -+} -+ -+ -+ -+AK4458.pcm.surround40.0 { -+ @args [ CARD ] -+ @args.CARD { -+ type string -+ } -+ type plug -+ slave.pcm { -+ type hw -+ card $CARD -+ } -+ slave.channels 4 -+} -+ -+ -+ -+ -+ -+ -+AK4458.pcm.surround51.0 { -+ @args [ CARD ] -+ @args.CARD { -+ type string -+ } -+ type plug -+ slave.pcm { -+ type hw -+ card $CARD -+ } -+ slave.channels 6 -+} -+ -+ -+ -+AK4458.pcm.surround71.0 { -+ @args [ CARD ] -+ @args.CARD { -+ type string -+ } -+ type plug -+ slave.pcm { -+ type hw -+ card $CARD -+ } -+ slave.channels 8 -+} -Index: alsa-lib-1.1.6/src/conf/cards/Makefile.am -=================================================================== ---- alsa-lib-1.1.6.orig/src/conf/cards/Makefile.am -+++ alsa-lib-1.1.6/src/conf/cards/Makefile.am -@@ -60,7 +60,8 @@ cfg_files = aliases.conf \ - VXPocket.conf \ - VXPocket440.conf \ - CS42888.conf \ -- IMX-HDMI.conf -+ IMX-HDMI.conf \ -+ AK4458.conf - - if BUILD_ALISP - cfg_files += aliases.alisp -Index: alsa-lib-1.1.6/src/conf/cards/aliases.conf -=================================================================== ---- alsa-lib-1.1.6.orig/src/conf/cards/aliases.conf -+++ alsa-lib-1.1.6/src/conf/cards/aliases.conf -@@ -59,6 +59,7 @@ pistachio cards.pistachio-card - VC4-HDMI cards.vc4-hdmi - imx-cs42888 cards.CS42888 - imx-hdmi-soc cards.IMX-HDMI -+ak4458-audio cards.AK4458 - - - diff --git a/meta-digi-dey/recipes-multimedia/alsa/alsa-lib/0006-add-conf-for-iMX-XCVR-sound-card.patch b/meta-digi-dey/recipes-multimedia/alsa/alsa-lib/0006-add-conf-for-iMX-XCVR-sound-card.patch deleted file mode 100755 index a702f946c..000000000 --- a/meta-digi-dey/recipes-multimedia/alsa/alsa-lib/0006-add-conf-for-iMX-XCVR-sound-card.patch +++ /dev/null @@ -1,89 +0,0 @@ -From d2be0f650f9fec265f0f0b4ba646a157f2a4cb7c Mon Sep 17 00:00:00 2001 -From: Viorel Suman -Date: Mon, 9 Mar 2020 14:25:46 +0200 -Subject: [PATCH] add conf for iMX XCVR sound card - -Upstream Status: Pending - -Signed-off-by: Viorel Suman ---- - src/conf/cards/IMX-XCVR.conf | 39 +++++++++++++++++++++++++++++++++++++++ - src/conf/cards/Makefile.am | 3 ++- - src/conf/cards/aliases.conf | 1 + - 3 files changed, 42 insertions(+), 1 deletion(-) - create mode 100755 src/conf/cards/IMX-XCVR.conf - -diff --git a/src/conf/cards/IMX-XCVR.conf b/src/conf/cards/IMX-XCVR.conf -new file mode 100755 -index 0000000..009000c ---- /dev/null -+++ b/src/conf/cards/IMX-XCVR.conf -@@ -0,0 +1,39 @@ -+# -+# Configuration for the IMX-XCVR sound card using software IEC958 -+# subframe conversion -+# -+IMX-XCVR.pcm.default { -+ @args [ CARD ] -+ @args.CARD { type string } -+ type plug -+ slave.pcm { -+ @func concat -+ strings [ "iec958:" $CARD ] -+ } -+} -+ -+ -+ -+IMX-XCVR.pcm.iec958.0 { -+ @args [ CARD AES0 AES1 AES2 AES3 ] -+ @args.CARD { type string } -+ @args.AES0 { type integer } -+ @args.AES1 { type integer } -+ @args.AES2 { type integer } -+ @args.AES3 { type integer } -+ type iec958 -+ slave { -+ format IEC958_SUBFRAME_LE -+ pcm { -+ type plug -+ slave.pcm { -+ type hw -+ card $CARD -+ } -+ } -+ } -+ status [ $AES0 $AES1 $AES2 $AES3 ] -+ preamble.z 0x0 -+ preamble.x 0x1 -+ preamble.y 0x3 -+} -diff --git a/src/conf/cards/Makefile.am b/src/conf/cards/Makefile.am -index 34fa5a3..70b9bab 100644 ---- a/src/conf/cards/Makefile.am -+++ b/src/conf/cards/Makefile.am -@@ -61,7 +61,8 @@ cfg_files = aliases.conf \ - VXPocket440.conf \ - CS42888.conf \ - IMX-HDMI.conf \ -- AK4458.conf -+ AK4458.conf \ -+ IMX-XCVR.conf - - if BUILD_ALISP - cfg_files += aliases.alisp -diff --git a/src/conf/cards/aliases.conf b/src/conf/cards/aliases.conf -index 5d92ac7..c195848 100644 ---- a/src/conf/cards/aliases.conf -+++ b/src/conf/cards/aliases.conf -@@ -60,6 +60,7 @@ VC4-HDMI cards.vc4-hdmi - imx-cs42888 cards.CS42888 - imx-hdmi-soc cards.IMX-HDMI - ak4458-audio cards.AK4458 -+imx-audio-xcvr cards.IMX-XCVR - - - --- -2.7.4 - diff --git a/meta-digi-dey/recipes-multimedia/alsa/alsa-lib_%.bbappend b/meta-digi-dey/recipes-multimedia/alsa/alsa-lib_%.bbappend deleted file mode 100644 index a696b6d7c..000000000 --- a/meta-digi-dey/recipes-multimedia/alsa/alsa-lib_%.bbappend +++ /dev/null @@ -1,8 +0,0 @@ -FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" - -IMX_PATCH += " \ - file://0001-pcm-plugin-status-fix-the-return-value-regression.patch \ - file://0002-pcm-plugin-status-revert-the-recent-changes.patch \ -" - -PACKAGE_ARCH_imx = "${TUNE_PKGARCH}" diff --git a/meta-digi-dey/recipes-multimedia/pulseaudio/tinycompress/tinycompress/0001-tinycompress-Add-id3-decoding.patch b/meta-digi-dey/recipes-multimedia/pulseaudio/tinycompress/tinycompress/0001-tinycompress-Add-id3-decoding.patch deleted file mode 100755 index f578148a1..000000000 --- a/meta-digi-dey/recipes-multimedia/pulseaudio/tinycompress/tinycompress/0001-tinycompress-Add-id3-decoding.patch +++ /dev/null @@ -1,1001 +0,0 @@ -From 16f6b7a5baec41f18fde75fd311fb988e3c31810 Mon Sep 17 00:00:00 2001 -From: Shengjiu Wang -Date: Fri, 13 Jul 2018 18:13:24 +0800 -Subject: [PATCH] tinycompress: Add id3 decoding - -Signed-off-by: Shengjiu Wang ---- - include/tinycompress/id3_tag_decode.h | 198 +++++++++++ - src/utils/Makefile.am | 2 +- - src/utils/cplay.c | 88 +++++ - src/utils/id3_tag_decode.c | 642 ++++++++++++++++++++++++++++++++++ - 4 files changed, 929 insertions(+), 1 deletion(-) - create mode 100644 include/tinycompress/id3_tag_decode.h - create mode 100644 src/utils/id3_tag_decode.c - -diff --git a/include/tinycompress/id3_tag_decode.h b/include/tinycompress/id3_tag_decode.h -new file mode 100644 -index 0000000..1a911d7 ---- /dev/null -+++ b/include/tinycompress/id3_tag_decode.h -@@ -0,0 +1,198 @@ -+/* -+ * Copyright (c) 2006-2017 Cadence Design Systems, Inc. -+ * Copyright 2018 NXP -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining -+ * a copy of this software and associated documentation files (the -+ * "Software"), to deal in the Software without restriction, including -+ * without limitation the rights to use, copy, modify, merge, publish, -+ * distribute, sublicense, and/or sell copies of the Software, and to -+ * permit persons to whom the Software is furnished to do so, subject to -+ * the following conditions: -+ * -+ * The above copyright notice and this permission notice shall be included -+ * in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ */ -+ -+/****************************************************************** -+ * file name : id3_tag_decode.h -+ * -+ * description : stores typedefs of structures specific to MP3 tag -+ * -+ * revision history: -+ * 29 04 2004 DK creation -+ *****************************************************************/ -+ -+#ifndef ID3_TAG_DECODE_H -+#define ID3_TAG_DECODE_H -+ -+typedef signed char WORD8; -+typedef signed char * pWORD8; -+typedef unsigned char UWORD8; -+typedef unsigned char * pUWORD8; -+ -+typedef signed short WORD16; -+typedef signed short * pWORD16; -+typedef unsigned short UWORD16; -+typedef unsigned short * pUWORD16; -+ -+typedef signed int WORD24; -+typedef signed int * pWORD24; -+typedef unsigned int UWORD24; -+typedef unsigned int * pUWORD24; -+ -+typedef signed int WORD32; -+typedef signed int * pWORD32; -+typedef unsigned int UWORD32; -+typedef unsigned int * pUWORD32; -+ -+typedef void VOID; -+typedef void * pVOID; -+ -+typedef signed int BOOL; -+typedef unsigned int UBOOL; -+typedef signed int FLAG; -+typedef unsigned int UFLAG; -+typedef signed int LOOPIDX; -+typedef unsigned int ULOOPIDX; -+typedef signed int WORD; -+typedef unsigned int UWORD; -+ -+#define MAX_TAG_FRAME_SIZE 100 -+ -+#define ID3V1 (0x544147) /* 0x544147 is TAG in WORD8 */ -+ -+#define ID3V2 (0x494433) /* 0x494433 is ID3 in WORD8 */ -+ -+/* -+ * structure corresponding to ID3 tag v1 header. -+ * this structure has all the field corresponding to ID3 tag v1 header. -+ */ -+ -+typedef struct { -+ WORD32 tag; // 3 bytes -+ -+ WORD16 version; // 2 bytes -+ -+ WORD8 flag; //1 byte -+ -+ WORD32 size; //4 bytes -+ -+} id3_v2_header_struct; -+ -+/* structure which will store the frame data and -+ * also put a limit max data to be stored -+ */ -+typedef struct { -+ WORD8 frame_data[MAX_TAG_FRAME_SIZE]; -+ -+ WORD32 max_size; //4 bytes -+ -+ WORD16 tag_present; -+ -+ WORD16 exceeds_buffer_size; -+ -+} id3_v2_frame_struct; -+ -+/* -+ * structure corresponding to ID3 tag v2. -+ * this structure has some of the field corresponding to ID3 tag v2. -+ * if user wants to read some more tag information from -+ * the MP3 file, he can add that field in this structure and pass address -+ * of that element to get_inf function in id3_tag_decode.c under the -+ * corresponding field frame header. few fields which are needed are already -+ * populated by reading from the TAG header. -+ */ -+typedef struct { -+ id3_v2_frame_struct album_movie_show_title; -+ -+ id3_v2_frame_struct composer_name; -+ -+ id3_v2_frame_struct content_type; -+ -+ id3_v2_frame_struct encoded_by; -+ -+ id3_v2_frame_struct lyricist_text_writer; -+ -+ id3_v2_frame_struct content_group_description; -+ -+ id3_v2_frame_struct title_songname_content_description; -+ -+ id3_v2_frame_struct medxa_type; -+ -+ id3_v2_frame_struct original_album_movie_show_title; -+ -+ id3_v2_frame_struct original_filename; -+ -+ id3_v2_frame_struct original_lyricist_text_writer; -+ -+ id3_v2_frame_struct original_artist_performer; -+ -+ id3_v2_frame_struct file_owner_licensee; -+ -+ id3_v2_frame_struct lead_performer_soloist; -+ -+ id3_v2_frame_struct publisher; -+ -+ id3_v2_frame_struct private_frame; -+ -+ id3_v2_frame_struct other_info; -+ -+ id3_v2_header_struct id3_v2_header; -+ -+ WORD32 header_end; -+ -+ WORD32 bytes_consumed; -+ -+} id3v2_struct; -+ -+/* -+ * structure corresponding to ID3 tag v1. -+ * this structure has all the field corresponding to ID3 tag v1. -+ */ -+typedef struct { -+ WORD8 song_title[30]; //30 word8acters -+ -+ WORD8 artist[30]; //30 word8acters -+ -+ WORD8 album[30]; //30 word8acters -+ -+ WORD8 year[4]; //4 word8acters -+ -+ WORD8 comment[30]; //30 word8acters -+ -+ WORD8 genre[1]; //1 byte -+ -+} id3v1_struct; -+ -+WORD32 get_info(const char *inp_buffer, -+ unsigned int avail_inp, -+ WORD32 tag_size, -+ id3_v2_frame_struct *dest); -+ -+WORD32 search_id3_v2(UWORD8 *buffer); -+ -+WORD32 decode_id3_v2(const char *const buffer, -+ id3v2_struct *id3v2, -+ WORD32 continue_flag, -+ WORD32 insize); -+ -+WORD32 get_id3_v2_bytes(UWORD8 *buffer); -+ -+WORD32 get_v1_info(UWORD8 *buffer, id3v1_struct *id3v1); -+ -+WORD32 search_id3_v1(UWORD8 *buffer); -+ -+WORD32 decode_id3_v1(UWORD8 *buffer, id3v1_struct *id3v1); -+ -+void init_id3v2_field(id3v2_struct *id3v2); -+ -+#endif -diff --git a/src/utils/Makefile.am b/src/utils/Makefile.am -index 1b996d4..e813689 100644 ---- a/src/utils/Makefile.am -+++ b/src/utils/Makefile.am -@@ -1,6 +1,6 @@ - bin_PROGRAMS = cplay crecord - --cplay_SOURCES = cplay.c -+cplay_SOURCES = cplay.c id3_tag_decode.c - crecord_SOURCES = crecord.c - - cplay_CFLAGS = -I$(top_srcdir)/include -diff --git a/src/utils/cplay.c b/src/utils/cplay.c -index 87863a3..2a52b52 100644 ---- a/src/utils/cplay.c -+++ b/src/utils/cplay.c -@@ -72,6 +72,7 @@ - #include "sound/compress_params.h" - #include "tinycompress/tinycompress.h" - #include "tinycompress/tinymp3.h" -+#include "tinycompress/id3_tag_decode.h" - - static int verbose; - static const unsigned int DEFAULT_CODEC_ID = SND_AUDIOCODEC_PCM; -@@ -245,12 +246,97 @@ int main(int argc, char **argv) - exit(EXIT_SUCCESS); - } - -+void shift_buffer(char *buf, int buf_size, int bytes_consumed) -+{ -+ int i; -+ -+ if (bytes_consumed <= 0) -+ return; -+ -+ for (i = 0; i < buf_size - bytes_consumed; i++) -+ buf[i] = buf[i + bytes_consumed]; -+} -+ -+void parse_id3(FILE *file, int *offset) { -+ /* ID3 tag specific declarations */ -+ unsigned char id3_buf[128]; -+ unsigned char id3v2_buf[4096]; -+ signed int id3_v1_found = 0, id3_v1_decoded = 0; -+ signed int id3_v2_found = 0, id3_v2_complete = 0; -+ signed int i_bytes_consumed = 0; -+ signed int i_fread_bytes; -+ id3v1_struct id3v1; -+ id3v2_struct id3v2; -+ -+ { -+ fseek(file, -128, SEEK_END); -+ fread(id3_buf, 1, 128, file); -+ -+ /* search for ID3V1 */ -+ id3_v1_found = search_id3_v1(id3_buf + 0); -+ if (id3_v1_found) { -+ /* if ID3V1 is found, decode ID3V1 */ -+ decode_id3_v1(id3_buf + 3, &id3v1); -+ id3_v1_decoded = 1; -+ } -+ fseek(file, 0, SEEK_SET); -+ } -+ -+ { -+ signed int flag = 0; -+ signed int continue_flag = 0; -+ -+ i_fread_bytes = fread(id3v2_buf, -+ sizeof(char), 0x1000, file); -+ -+ /* search for ID3V2 */ -+ id3_v2_found = -+ search_id3_v2(id3v2_buf); -+ -+ if (id3_v2_found) { -+ /* initialise the max fields */ -+ init_id3v2_field(&id3v2); -+ -+ while (!id3_v2_complete && id3_v2_found) { -+ /* if ID3V2 is found, decode ID3V2 */ -+ id3_v2_complete = decode_id3_v2((const char *const)id3v2_buf, -+ &id3v2, continue_flag, i_fread_bytes); -+ -+ if (!id3_v2_complete) { -+ continue_flag = 1; -+ i_bytes_consumed = id3v2.bytes_consumed; -+ -+ fseek(file, i_bytes_consumed, SEEK_SET); -+ -+ i_fread_bytes = fread(id3v2_buf, -+ sizeof(unsigned char), 0x1000, file); -+ if (i_fread_bytes <= 0) { -+ return; -+ } -+ } -+ } -+ -+ if (id3_v2_complete) { -+ i_bytes_consumed = id3v2.bytes_consumed; -+ fseek(file, i_bytes_consumed, SEEK_SET); -+ } -+ } -+ } -+ -+ *offset = i_bytes_consumed; -+} -+ - void get_codec_mp3(FILE *file, struct compr_config *config, - struct snd_codec *codec) - { - size_t read; - struct mp3_header header; - unsigned int channels, rate, bits; -+ int offset = 0; -+ -+ parse_id3(file, &offset); -+ -+ fseek(file, offset, SEEK_SET); - - read = fread(&header, 1, sizeof(header), file); - if (read != sizeof(header)) { -@@ -279,6 +365,8 @@ void get_codec_mp3(FILE *file, struct compr_config *config, - codec->level = 0; - codec->ch_mode = 0; - codec->format = 0; -+ -+ fseek(file, offset, SEEK_SET); - } - - void get_codec_iec(FILE *file, struct compr_config *config, -diff --git a/src/utils/id3_tag_decode.c b/src/utils/id3_tag_decode.c -new file mode 100644 -index 0000000..393967a ---- /dev/null -+++ b/src/utils/id3_tag_decode.c -@@ -0,0 +1,642 @@ -+/* -+ * Copyright (c) 2006-2017 Cadence Design Systems, Inc. -+ * Copyright 2018 NXP -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining -+ * a copy of this software and associated documentation files (the -+ * "Software"), to deal in the Software without restriction, including -+ * without limitation the rights to use, copy, modify, merge, publish, -+ * distribute, sublicense, and/or sell copies of the Software, and to -+ * permit persons to whom the Software is furnished to do so, subject to -+ * the following conditions: -+ * -+ * The above copyright notice and this permission notice shall be included -+ * in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+ */ -+#include -+#include "tinycompress/id3_tag_decode.h" -+ -+#define CHAR4(c1, c2, c3, c4) \ -+ (int)(((unsigned char)(c1) << 24) | \ -+ ((unsigned char)(c2) << 16) | \ -+ ((unsigned char)(c3) << 8) | \ -+ ((unsigned char)c4)) -+ -+#ifndef MSVC_BUILD -+unsigned int umin(unsigned int a, unsigned int b) -+{ -+ return (a < b ? a : b); -+} -+ -+#else -+unsigned int umin(unsigned int a, unsigned int b) -+{ -+ return (a < b ? a : b); -+} -+#endif -+ -+/*********************************************************** -+ * function name : display -+ * -+ * description : display ID3 tag contents. -+ * -+ * arguments : input parameters -+ * -+ * values returned : 0 -+ ***********************************************************/ -+ -+static void display2(const id3_v2_frame_struct * const src, -+ int size, -+ const char * const disp) -+{ -+ int j; -+ -+ -+ for (j = 0; j < size; j++) { -+ int c = src->frame_data[j]; -+ -+ if (c) { -+ if (!isprint(c)) -+ break; -+ } -+ } -+} -+ -+static VOID display1(WORD8 src[], WORD32 size, WORD8 disp[]) -+{ -+ WORD32 j; -+ -+ for (j = 0; j < size ; j++) { -+ int c = src[j]; -+ -+ if (c) { -+ if (!isprint(c)) -+ break; -+ } -+ } -+} -+ -+/***************************************************************** -+ * function name : init_id3_header -+ * -+ * description : initialise the max filed size of teh farem. -+ * -+ * arguments : input parameters -+ * -+ * values returned : 0 -+ ****************************************************************/ -+ -+VOID init_id3v2_field(id3v2_struct *id3v2) -+{ -+ id3v2->album_movie_show_title.max_size = MAX_TAG_FRAME_SIZE; -+ id3v2->composer_name.max_size = MAX_TAG_FRAME_SIZE; -+ id3v2->content_type.max_size = MAX_TAG_FRAME_SIZE; -+ id3v2->encoded_by.max_size = MAX_TAG_FRAME_SIZE; -+ id3v2->lyricist_text_writer.max_size = MAX_TAG_FRAME_SIZE; -+ id3v2->content_group_description.max_size = MAX_TAG_FRAME_SIZE; -+ id3v2->title_songname_content_description.max_size = MAX_TAG_FRAME_SIZE; -+ id3v2->medxa_type.max_size = MAX_TAG_FRAME_SIZE; -+ id3v2->original_album_movie_show_title.max_size = MAX_TAG_FRAME_SIZE; -+ id3v2->original_filename.max_size = MAX_TAG_FRAME_SIZE; -+ id3v2->original_lyricist_text_writer.max_size = MAX_TAG_FRAME_SIZE; -+ id3v2->original_artist_performer.max_size = MAX_TAG_FRAME_SIZE; -+ id3v2->file_owner_licensee.max_size = MAX_TAG_FRAME_SIZE; -+ id3v2->lead_performer_soloist.max_size = MAX_TAG_FRAME_SIZE; -+ id3v2->publisher.max_size = MAX_TAG_FRAME_SIZE; -+ id3v2->private_frame.max_size = MAX_TAG_FRAME_SIZE; -+ id3v2->other_info.max_size = MAX_TAG_FRAME_SIZE; -+ -+ /* resetting the flag to indicate presese of frame */ -+ id3v2->album_movie_show_title.tag_present = 0; -+ id3v2->composer_name.tag_present = 0; -+ id3v2->content_type.tag_present = 0; -+ id3v2->encoded_by.tag_present = 0; -+ id3v2->lyricist_text_writer.tag_present = 0; -+ id3v2->content_group_description.tag_present = 0; -+ id3v2->title_songname_content_description.tag_present = 0; -+ id3v2->medxa_type.tag_present = 0; -+ id3v2->original_album_movie_show_title.tag_present = 0; -+ id3v2->original_filename.tag_present = 0; -+ id3v2->original_lyricist_text_writer.tag_present = 0; -+ id3v2->original_artist_performer.tag_present = 0; -+ id3v2->file_owner_licensee.tag_present = 0; -+ id3v2->lead_performer_soloist.tag_present = 0; -+ id3v2->publisher.tag_present = 0; -+ id3v2->private_frame.tag_present = 0; -+ id3v2->other_info.tag_present = 0; -+ -+ /* resetting the flag which indicates that size of the frame has -+ * exceeded the max buffer size -+ */ -+ id3v2->album_movie_show_title.exceeds_buffer_size = 0; -+ id3v2->composer_name.exceeds_buffer_size = 0; -+ id3v2->content_type.exceeds_buffer_size = 0; -+ id3v2->encoded_by.exceeds_buffer_size = 0; -+ id3v2->lyricist_text_writer.exceeds_buffer_size = 0; -+ id3v2->content_group_description.exceeds_buffer_size = 0; -+ id3v2->title_songname_content_description.exceeds_buffer_size = 0; -+ id3v2->medxa_type.exceeds_buffer_size = 0; -+ id3v2->original_album_movie_show_title.exceeds_buffer_size = 0; -+ id3v2->original_filename.exceeds_buffer_size = 0; -+ id3v2->original_lyricist_text_writer.exceeds_buffer_size = 0; -+ id3v2->original_artist_performer.exceeds_buffer_size = 0; -+ id3v2->file_owner_licensee.exceeds_buffer_size = 0; -+ id3v2->lead_performer_soloist.exceeds_buffer_size = 0; -+ id3v2->publisher.exceeds_buffer_size = 0; -+ id3v2->private_frame.exceeds_buffer_size = 0; -+ id3v2->other_info.exceeds_buffer_size = 0; -+ -+ id3v2->bytes_consumed = 0; -+ id3v2->header_end = 0; -+} -+ -+/*************************************************************** -+ * function name : search_id3_v2 -+ * -+ * description : finds if ID3V2 starts at the start of given buffer. -+ * -+ * arguments : input parameters -+ * buffer input buffer -+ * -+ * values returned : FLAG 1: ID3 found 0: ID3 not found -+ ***************************************************************/ -+WORD32 search_id3_v2(UWORD8 *buffer) -+{ -+ UWORD32 temp; -+ -+ temp = buffer[0] << 16; -+ temp |= buffer[1] << 8; -+ temp |= buffer[2]; -+ -+ if (temp == ID3V2) -+ return 1; /* ID3 found */ -+ -+ return 0; /* ID3 not found */ -+} -+ -+/************************************************************** -+ * function name : search_id3_v1 -+ * -+ * description : finds if ID3V1 starts at the start of given buffer. -+ * -+ * arguments : input parameters -+ * buffer input buffer -+ * -+ * values returned : FLAG 1: ID3 found 0: ID3 not found -+ **************************************************************/ -+WORD32 search_id3_v1(UWORD8 *buffer) -+{ -+ UWORD32 temp; -+ -+ temp = buffer[0] << 16; -+ temp |= buffer[1] << 8; -+ temp |= buffer[2]; -+ -+ if (temp == ID3V1) -+ return 1; /* ID3 found */ -+ -+ return 0; /* ID3 not found */ -+} -+ -+/*************************************************************** -+ * function name : decode_id3_v1 -+ * -+ * description : decodes ID3V1 tag. -+ * -+ * arguments : input parameters -+ * buffer input buffer -+ * id3v1 structure -+ * -+ * values returned : bytes consumed -+ **************************************************************/ -+WORD32 decode_id3_v1(UWORD8 *buffer, id3v1_struct *id3v1) -+{ -+ WORD32 bytes_consumed = 0; -+ short tag_type; -+ -+ /* setting the tag type */ -+ tag_type = 1; -+ -+ bytes_consumed = get_v1_info(buffer, id3v1); -+ -+ return bytes_consumed; -+} -+ -+/*********************************************************** -+ * function name : get_v1_info -+ * -+ * description : gets ID3V1 information fields. -+ * -+ * arguments : input parameters -+ * buffer input buffer -+ * id3v1 structure -+ * -+ * values returned : bytes consumed -+ ***********************************************************/ -+WORD32 get_v1_info(UWORD8 *buffer, id3v1_struct *id3v1) -+{ -+ WORD32 i; -+ WORD32 bytes_consumed = 0; -+ -+ /* get song_title */ -+ for (i = 0; i < 30; i++) -+ id3v1->song_title[i] = buffer[i]; -+ -+ buffer += 30; -+ bytes_consumed += 30; -+ display1(id3v1->song_title, 30, (WORD8 *)"song_title : "); -+ -+ /* get artist */ -+ for (i = 0; i < 30; i++) -+ id3v1->artist[i] = buffer[i]; -+ -+ buffer += 30; -+ bytes_consumed += 30; -+ display1(id3v1->artist, 30, (WORD8 *)"artist : "); -+ -+ /* get album */ -+ for (i = 0; i < 30; i++) -+ id3v1->album[i] = buffer[i]; -+ -+ buffer += 30; -+ bytes_consumed += 30; -+ display1(id3v1->album, 30, (WORD8 *)"album : "); -+ -+ /* get year */ -+ for (i = 0; i < 4; i++) -+ id3v1->year[i] = buffer[i]; -+ -+ buffer += 4; -+ bytes_consumed += 4; -+ display1(id3v1->year, 4, (WORD8 *)"year : "); -+ -+ /* get comment */ -+ for (i = 0; i < 30; i++) -+ id3v1->comment[i] = buffer[i]; -+ -+ buffer += 30; -+ bytes_consumed += 30; -+ display1(id3v1->comment, 30, (WORD8 *)"comment : "); -+ -+ /* get genre */ -+ for (i = 0; i < 1; i++) -+ id3v1->genre[i] = buffer[i]; -+ -+ buffer += 1; -+ bytes_consumed += 1; -+ -+ return bytes_consumed; -+} -+ -+/***************************************************** -+ * function name : decode_id3_v2 -+ * -+ * description : decodes ID3V2 tag. -+ * -+ * arguments : input parameters -+ * buffer input buffer -+ * id3v2 structure -+ * continue_flag FLAG to indicate whether -+ * it is first call or not -+ * insize input buffer size -+ * -+ * values returned : bytes consumed -+ ******************************************************/ -+WORD32 decode_id3_v2(const char *const buffer, -+ id3v2_struct *const id3v2, -+ WORD32 continue_flag, -+ WORD32 insize) -+{ -+ UWORD32 size = 0, flag; -+ WORD32 i, buf_update_val; -+ UWORD8 buf[4], frame_header[10], id3_buffer[10]; -+ WORD8 *bitstream_ptr; -+ short tag_type; -+ -+ WORD32 bytes_consumed = 0; -+ -+ if (id3v2->header_end == 1) { -+ id3v2->bytes_consumed += insize; -+ if (id3v2->bytes_consumed < id3v2->id3_v2_header.size) -+ return 0; -+ -+ id3v2->bytes_consumed = (id3v2->id3_v2_header.size + 10); -+ return 1; -+ } -+ -+ bitstream_ptr = (WORD8 *)id3_buffer; -+ -+ if (!continue_flag) { -+ bytes_consumed += 3; -+ /* setting the tag type */ -+ tag_type = 2; -+ id3v2->id3_v2_header.version = buffer[bytes_consumed + 0] << 8; -+ id3v2->id3_v2_header.version |= buffer[bytes_consumed + 1]; -+ id3v2->id3_v2_header.flag = buffer[bytes_consumed + 2]; -+ -+ /* making the msb of each byte zero */ -+ buf[0] = buffer[bytes_consumed + 6] & 0x7f; -+ buf[1] = buffer[bytes_consumed + 5] & 0x7f; -+ buf[2] = buffer[bytes_consumed + 4] & 0x7f; -+ buf[3] = buffer[bytes_consumed + 3] & 0x7f; -+ -+ bytes_consumed += 7; -+ -+ /* concatenation the bytes after making -+ * 7th bit zero to get 28 bits size -+ */ -+ size = buf[0]; -+ size |= (buf[1] << 7); -+ size |= (buf[2] << 14); -+ size |= (buf[3] << 21); -+ /* storing the size */ -+ id3v2->id3_v2_header.size = size; -+ -+ /* check for extended header */ -+ if (id3v2->id3_v2_header.flag & 0x20) { -+ for (i = 0; i < 10; i++) -+ bitstream_ptr[i] = buffer[bytes_consumed + i]; -+ -+ i = 0; -+ bytes_consumed += 10; -+ -+ size = bitstream_ptr[i++] << 24; -+ size |= bitstream_ptr[i++] << 16; -+ size |= bitstream_ptr[i++] << 8; -+ size |= bitstream_ptr[i++]; -+ -+ /* two bytes for flag */ -+ i += 2; -+ { -+ UWORD32 padding_size; -+ -+ padding_size = bitstream_ptr[i++] << 24; -+ padding_size |= bitstream_ptr[i++] << 16; -+ padding_size |= bitstream_ptr[i++] << 8; -+ padding_size |= bitstream_ptr[i++]; -+ -+ /* skipping the padding and frame size -+ * number of bytes -+ */ -+ bytes_consumed += (padding_size + size); -+ } -+ } -+ } -+ -+ while (id3v2->header_end != 1) { -+ char *key; -+ id3_v2_frame_struct *value; -+ unsigned int avail_inp; -+ -+ /* reading the 10 bytes to get the frame header */ -+ -+ for (i = 0; i < 10; i++) -+ frame_header[i] = buffer[bytes_consumed + i]; -+ bytes_consumed += 10; -+ -+ /* getting the size from the header */ -+ size = frame_header[4] << 24; -+ size |= frame_header[5] << 16; -+ size |= frame_header[6] << 8; -+ size |= frame_header[7]; -+ -+ /* decoding the flag, currently not used */ -+ flag = frame_header[8] << 8; -+ flag |= frame_header[9]; -+ -+ avail_inp = insize - bytes_consumed; -+ -+ /* switching to the frame type */ -+ switch (CHAR4(frame_header[0], -+ frame_header[1], -+ frame_header[2], -+ frame_header[3])) { -+ case CHAR4('A', 'E', 'N', 'C'): -+ case CHAR4('A', 'P', 'I', 'C'): -+ case CHAR4('C', 'O', 'M', 'M'): -+ case CHAR4('C', 'O', 'M', 'R'): -+ case CHAR4('E', 'N', 'C', 'R'): -+ case CHAR4('E', 'Q', 'U', 'A'): -+ case CHAR4('E', 'T', 'C', 'O'): -+ case CHAR4('G', 'E', 'O', 'B'): -+ case CHAR4('G', 'R', 'I', 'D'): -+ case CHAR4('I', 'P', 'L', 'S'): -+ case CHAR4('L', 'I', 'N', 'K'): -+ case CHAR4('M', 'C', 'D', 'I'): -+ case CHAR4('M', 'L', 'L', 'T'): -+ case CHAR4('O', 'W', 'N', 'E'): -+ case CHAR4('P', 'C', 'N', 'T'): -+ case CHAR4('P', 'O', 'P', 'M'): -+ case CHAR4('P', 'O', 'S', 'S'): -+ case CHAR4('R', 'B', 'U', 'F'): -+ case CHAR4('R', 'V', 'A', 'D'): -+ case CHAR4('R', 'V', 'R', 'B'): -+ case CHAR4('S', 'Y', 'L', 'T'): -+ case CHAR4('S', 'Y', 'T', 'C'): -+ case CHAR4('T', 'B', 'P', 'M'): -+ case CHAR4('T', 'C', 'O', 'P'): -+ case CHAR4('T', 'D', 'A', 'T'): -+ case CHAR4('T', 'D', 'L', 'Y'): -+ case CHAR4('T', 'F', 'L', 'T'): -+ case CHAR4('T', 'I', 'M', 'E'): -+ case CHAR4('T', 'K', 'E', 'Y'): -+ case CHAR4('T', 'L', 'A', 'N'): -+ case CHAR4('T', 'L', 'E', 'N'): -+ case CHAR4('T', 'M', 'E', 'D'): -+ case CHAR4('T', 'O', 'F', 'N'): -+ case CHAR4('T', 'O', 'L', 'Y'): -+ case CHAR4('T', 'O', 'R', 'Y'): -+ case CHAR4('T', 'P', 'E', '2'): -+ case CHAR4('T', 'P', 'E', '3'): -+ case CHAR4('T', 'P', 'E', '4'): -+ case CHAR4('T', 'P', 'O', 'S'): -+ case CHAR4('T', 'R', 'C', 'K'): -+ case CHAR4('T', 'R', 'D', 'A'): -+ case CHAR4('T', 'R', 'S', 'N'): -+ case CHAR4('T', 'R', 'S', 'O'): -+ case CHAR4('T', 'S', 'I', 'Z'): -+ case CHAR4('T', 'S', 'R', 'C'): -+ case CHAR4('T', 'S', 'S', 'E'): -+ case CHAR4('T', 'Y', 'E', 'R'): -+ case CHAR4('T', 'X', 'X', 'X'): -+ case CHAR4('U', 'F', 'I', 'D'): -+ case CHAR4('U', 'S', 'E', 'R'): -+ case CHAR4('U', 'S', 'L', 'T'): -+ case CHAR4('W', 'C', 'O', 'M'): -+ case CHAR4('W', 'C', 'O', 'P'): -+ case CHAR4('W', 'O', 'A', 'F'): -+ case CHAR4('W', 'O', 'A', 'R'): -+ case CHAR4('W', 'O', 'A', 'S'): -+ case CHAR4('W', 'O', 'R', 'S'): -+ case CHAR4('W', 'P', 'A', 'Y'): -+ case CHAR4('W', 'P', 'U', 'B'): -+ case CHAR4('W', 'X', 'X', 'X'): -+ case CHAR4('T', 'I', 'T', '3'): -+ key = "other_info : "; -+ value = &id3v2->other_info; -+ break; -+ case CHAR4('P', 'R', 'I', 'V'): -+ key = "private_frame : "; -+ value = &id3v2->private_frame; -+ break; -+ case CHAR4('T', 'A', 'L', 'B'): -+ key = "album_movie_show_title : "; -+ value = &id3v2->album_movie_show_title; -+ break; -+ case CHAR4('T', 'C', 'O', 'M'): -+ key = "composer_name : "; -+ value = &id3v2->composer_name; -+ break; -+ case CHAR4('T', 'C', 'O', 'N'): -+ key = "content_type : "; -+ value = &id3v2->content_type; -+ break; -+ case CHAR4('T', 'E', 'N', 'C'): -+ key = "encoded_by : "; -+ value = &id3v2->encoded_by; -+ break; -+ case CHAR4('T', 'E', 'X', 'T'): -+ key = "lyricist_text_writer : "; -+ value = &id3v2->lyricist_text_writer; -+ break; -+ case CHAR4('T', 'I', 'T', '1'): -+ key = "content_group_description : "; -+ value = &id3v2->content_group_description; -+ break; -+ case CHAR4('T', 'I', 'T', '2'): -+ key = "title_songname_content_description : "; -+ value = &id3v2->title_songname_content_description; -+ break; -+ case CHAR4('T', 'O', 'A', 'L'): -+ key = "original_album_movie_show_title : "; -+ value = &id3v2->original_album_movie_show_title; -+ break; -+ case CHAR4('T', 'O', 'P', 'E'): -+ key = "original_artist_performer : "; -+ value = &id3v2->original_artist_performer; -+ break; -+ case CHAR4('T', 'O', 'W', 'N'): -+ key = "file_owner_licensee : "; -+ value = &id3v2->file_owner_licensee; -+ break; -+ case CHAR4('T', 'P', 'E', '1'): -+ key = "lead_performer_soloist : "; -+ value = &id3v2->lead_performer_soloist; -+ break; -+ case CHAR4('T', 'P', 'U', 'B'): -+ key = "publisher : "; -+ value = &id3v2->publisher; -+ break; -+ default: -+ /* skipping the read 10 bytes */ -+ buf_update_val = -10; -+ id3v2->header_end = 1; -+ value = 0; -+ key = 0; -+ break; -+ } -+ -+ if (value != 0) -+ buf_update_val = get_info(&buffer[bytes_consumed], -+ avail_inp, size, value); -+ -+ /* Negative value for buf_update_val means one of two things: -+ * 1. The default case happened and we're done with ID3V2 tag -+ * frames, or -+ * 2. get_info() returned -1 to indicate that more input is -+ * required to decode this frame of the tag. -+ */ -+ if (buf_update_val >= 0) -+ display2(value, -+ umin(value->max_size, buf_update_val), key); -+ -+ if (buf_update_val == -1) { -+ id3v2->bytes_consumed += bytes_consumed; -+ return 1; -+ } -+ -+ bytes_consumed += buf_update_val; -+ -+ /* Is there enough input left (10 bytes) to begin -+ * decoding another frame? If not, bag out temporarily -+ * now. The caller will refill our input buffer and -+ * call us again with continue_flag == 1. -+ */ -+ if (insize - bytes_consumed < 10) { -+ id3v2->bytes_consumed += bytes_consumed; -+ return 0; /* not completely decoded */ -+ } -+ } -+ -+ id3v2->bytes_consumed += bytes_consumed; -+ if ((id3v2->bytes_consumed + 10) < id3v2->id3_v2_header.size) -+ return 0; /* not completely decoded */ -+ -+ return 1; /* completely decoded */ -+} -+ -+/******************************************************* -+ * function name : get_id3_v2_bytes -+ * -+ * description : tells the size of ID3V2 tag. -+ * -+ * arguments : input parameters -+ * buffer input buffer -+ * -+ * values returned : bytes consumed -+ ********************************************************/ -+WORD32 get_id3_v2_bytes(UWORD8 *buffer) -+{ -+ WORD32 size; -+ -+ /* making the msb of each byte zero */ -+ size = (buffer[9] & 0x7f); -+ size |= ((buffer[8] & 0x7f) << 7); -+ size |= ((buffer[7] & 0x7f) << 14); -+ size |= ((buffer[6] & 0x7f) << 21); -+ -+ return (size + 10); -+} -+ -+/**************************************************** -+ * function name : get_info -+ * -+ * description : read the frame information from the input buffer. -+ * -+ * arguments : input parameters -+ * -+ * values returned : update value for buffer -+ ****************************************************/ -+WORD32 get_info(const char *inp_buffer, -+ unsigned int avail_inp, -+ WORD32 tag_size, -+ id3_v2_frame_struct *dest) -+{ -+ WORD32 j; -+ -+ /* setting the tag to indicate the presence of frame */ -+ dest->tag_present = 1; -+ /* If there isn't enough input available, we punt back to the top -+ * level and ask for more. -+ */ -+ if (avail_inp < umin(tag_size, dest->max_size)) -+ return -1; -+ -+ if (dest->max_size >= tag_size) { -+ for (j = 0; j < tag_size ; j++) -+ dest->frame_data[j] = inp_buffer[j]; -+ } else { -+ dest->exceeds_buffer_size = 1; -+ for (j = 0; j < dest->max_size ; j++) -+ dest->frame_data[j] = inp_buffer[j]; -+ } -+ return tag_size; -+} --- -2.7.4 - diff --git a/meta-digi-dey/recipes-multimedia/pulseaudio/tinycompress/tinycompress/0002-cplay-Support-wave-file.patch b/meta-digi-dey/recipes-multimedia/pulseaudio/tinycompress/tinycompress/0002-cplay-Support-wave-file.patch deleted file mode 100755 index 9189bc0ed..000000000 --- a/meta-digi-dey/recipes-multimedia/pulseaudio/tinycompress/tinycompress/0002-cplay-Support-wave-file.patch +++ /dev/null @@ -1,221 +0,0 @@ -From 4d4bc0a958fe254531920095fbabc241aad88113 Mon Sep 17 00:00:00 2001 -From: Shengjiu Wang -Date: Tue, 28 Jul 2020 13:00:36 +0800 -Subject: [PATCH] cplay: Support wave file - -The supported format is mono/stereo, S16_LE/S32_LE, 8kHz-192kHz. -Command is: -cplay -c x -I PCM test.wav - -Upstream-Status: Inappropriate [i.MX specific] -Signed-off-by: Shengjiu Wang ---- - include/tinycompress/wave_formats.h | 51 +++++++++++++ - src/utils/cplay.c | 107 ++++++++++++++++++++++++++++ - 2 files changed, 158 insertions(+) - create mode 100644 include/tinycompress/wave_formats.h - -diff --git a/include/tinycompress/wave_formats.h b/include/tinycompress/wave_formats.h -new file mode 100644 -index 000000000000..4e2e009206cf ---- /dev/null -+++ b/include/tinycompress/wave_formats.h -@@ -0,0 +1,51 @@ -+#ifndef WAVE_FORMATS_H -+#define WAVE_FORMATS_H 1 -+ -+#define COMPOSE_ID(a,b,c,d) ((a) | ((b)<<8) | ((c)<<16) | ((d)<<24)) -+ -+#define WAV_RIFF COMPOSE_ID('R','I','F','F') -+#define WAV_RIFX COMPOSE_ID('R','I','F','X') -+#define WAV_WAVE COMPOSE_ID('W','A','V','E') -+#define WAV_FMT COMPOSE_ID('f','m','t',' ') -+#define WAV_DATA COMPOSE_ID('d','a','t','a') -+ -+/* WAVE fmt block constants from Microsoft mmreg.h header */ -+#define WAV_FMT_PCM 0x0001 -+#define WAV_FMT_IEEE_FLOAT 0x0003 -+#define WAV_FMT_DOLBY_AC3_SPDIF 0x0092 -+#define WAV_FMT_EXTENSIBLE 0xfffe -+ -+/* Used with WAV_FMT_EXTENSIBLE format */ -+#define WAV_GUID_TAG "\x00\x00\x00\x00\x10\x00\x80\x00\x00\xAA\x00\x38\x9B\x71" -+ -+typedef struct { -+ u_int magic; /* 'RIFF' */ -+ u_int length; /* filelen */ -+ u_int type; /* 'WAVE' */ -+} WaveHeader; -+ -+typedef struct { -+ u_short format; /* see WAV_FMT_* */ -+ u_short channels; -+ u_int sample_fq; /* frequence of sample */ -+ u_int byte_p_sec; -+ u_short byte_p_spl; /* samplesize; 1 or 2 bytes */ -+ u_short bit_p_spl; /* 8, 12 or 16 bit */ -+} WaveFmtBody; -+ -+typedef struct { -+ WaveFmtBody format; -+ u_short ext_size; -+ u_short bit_p_spl; -+ u_int channel_mask; -+ u_short guid_format; /* WAV_FMT_* */ -+ u_char guid_tag[14]; /* WAV_GUID_TAG */ -+} WaveFmtExtensibleBody; -+ -+typedef struct { -+ u_int type; /* 'data' */ -+ u_int length; /* samplecount */ -+} WaveChunkHeader; -+ -+ -+#endif /* FORMATS */ -diff --git a/src/utils/cplay.c b/src/utils/cplay.c -index 5b749419e731..8882f4d9746d 100644 ---- a/src/utils/cplay.c -+++ b/src/utils/cplay.c -@@ -1,4 +1,6 @@ - /* -+ * Copyright 2020 NXP -+ * - * This file is provided under a dual BSD/LGPLv2.1 license. When using or - * redistributing this file, you may do so under either license. - * -@@ -73,6 +75,8 @@ - #include "tinycompress/tinycompress.h" - #include "tinycompress/tinymp3.h" - #include "tinycompress/id3_tag_decode.h" -+#include "tinycompress/wave_formats.h" -+#include - - static int verbose; - static const unsigned int DEFAULT_CODEC_ID = SND_AUDIOCODEC_PCM; -@@ -166,6 +170,77 @@ static int parse_mp3_header(struct mp3_header *header, unsigned int *num_channel - return 0; - } - -+static int parse_wav_header(FILE *file, unsigned int *num_channels, unsigned int *sample_rate, -+ unsigned int *format) { -+ WaveHeader wave_header; -+ WaveChunkHeader chunk_header; -+ WaveFmtBody fmt_body; -+ int more_chunks = 1; -+ -+ fread(&wave_header, sizeof(WaveHeader), 1, file); -+ if ((wave_header.magic != WAV_RIFF) || -+ (wave_header.type != WAV_WAVE)) { -+ fprintf(stderr, "Error: it is not a riff/wave file\n"); -+ return -1; -+ } -+ -+ do { -+ fread(&chunk_header, sizeof(WaveChunkHeader), 1, file); -+ switch (chunk_header.type) { -+ case WAV_FMT: -+ fread(&fmt_body, sizeof(WaveFmtBody), 1, file); -+ /* If the format header is larger, skip the rest */ -+ if (chunk_header.length > sizeof(WaveFmtBody)) -+ fseek(file, chunk_header.length - sizeof(WaveFmtBody), SEEK_CUR); -+ -+ *num_channels = fmt_body.channels; -+ *sample_rate = fmt_body.sample_fq; -+ -+ switch (fmt_body.bit_p_spl) { -+ case 8: -+ *format = SND_PCM_FORMAT_U8; -+ break; -+ case 16: -+ *format = SND_PCM_FORMAT_S16_LE; -+ break; -+ case 24: -+ switch (fmt_body.byte_p_spl / fmt_body.channels) { -+ case 3: -+ *format = SND_PCM_FORMAT_S24_3LE; -+ break; -+ case 4: -+ *format = SND_PCM_FORMAT_S24_LE; -+ break; -+ default: -+ fprintf(stderr, "format error\n"); -+ return -1; -+ } -+ break; -+ case 32: -+ if (fmt_body.format == WAV_FMT_PCM) { -+ *format = SND_PCM_FORMAT_S32_LE; -+ } else if (fmt_body.format == WAV_FMT_IEEE_FLOAT) { -+ *format = SND_PCM_FORMAT_FLOAT_LE; -+ } -+ break; -+ default: -+ fprintf(stderr, "format error\n"); -+ return -1; -+ } -+ break; -+ case WAV_DATA: -+ /* Stop looking for chunks */ -+ more_chunks = 0; -+ break; -+ default: -+ /* Unknown chunk, skip bytes */ -+ fseek(file, chunk_header.length, SEEK_CUR); -+ } -+ } while (more_chunks); -+ -+ return 0; -+} -+ - static int print_time(struct compress *compress) - { - unsigned int avail; -@@ -385,6 +460,35 @@ void get_codec_iec(FILE *file, struct compr_config *config, - codec->format = 0; - } - -+void get_codec_pcm(FILE *file, struct compr_config *config, -+ struct snd_codec *codec) -+{ -+ unsigned int channels, rate, format; -+ -+ if (parse_wav_header(file, &channels, &rate, &format) == -1) { -+ fclose(file); -+ exit(EXIT_FAILURE); -+ } -+ -+ if (channels > 2 || (format != SND_PCM_FORMAT_S16_LE && format != SND_PCM_FORMAT_S32_LE) || -+ rate > 192000) { -+ fprintf(stderr, "unsupported wave file\n"); -+ fclose(file); -+ exit(EXIT_FAILURE); -+ } -+ -+ codec->id = SND_AUDIOCODEC_PCM; -+ codec->ch_in = channels; -+ codec->ch_out = channels; -+ codec->sample_rate = rate; -+ codec->bit_rate = 0; -+ codec->rate_control = 0; -+ codec->profile = SND_AUDIOPROFILE_PCM; -+ codec->level = 0; -+ codec->ch_mode = 0; -+ codec->format = format; -+} -+ - void play_samples(char *name, unsigned int card, unsigned int device, - unsigned long buffer_size, unsigned int frag, - unsigned long codec_id) -@@ -411,6 +515,9 @@ void play_samples(char *name, unsigned int card, unsigned int device, - case SND_AUDIOCODEC_IEC61937: - get_codec_iec(file, &config, &codec); - break; -+ case SND_AUDIOCODEC_PCM: -+ get_codec_pcm(file, &config, &codec); -+ break; - default: - fprintf(stderr, "codec ID %ld is not supported\n", codec_id); - exit(EXIT_FAILURE); --- -2.27.0 - diff --git a/meta-digi-dey/recipes-multimedia/pulseaudio/tinycompress/tinycompress/0003-cplay-Add-pause-feature.patch b/meta-digi-dey/recipes-multimedia/pulseaudio/tinycompress/tinycompress/0003-cplay-Add-pause-feature.patch deleted file mode 100755 index 045714aa9..000000000 --- a/meta-digi-dey/recipes-multimedia/pulseaudio/tinycompress/tinycompress/0003-cplay-Add-pause-feature.patch +++ /dev/null @@ -1,147 +0,0 @@ -From 6f778c21ee357a662cdd758cff578a3e4b85eedf Mon Sep 17 00:00:00 2001 -From: Zhang Peng -Date: Tue, 4 Aug 2020 15:29:29 +0800 -Subject: [PATCH] cplay: Add pause feature - -Add option: -p pause - -Upstream-Status: Inappropriate [i.MX specific] - -Signed-off-by: Zhang Peng ---- - src/utils/cplay.c | 56 +++++++++++++++++++++++++++++++++++++++++++---- - 1 file changed, 52 insertions(+), 4 deletions(-) - -diff --git a/src/utils/cplay.c b/src/utils/cplay.c -index 8882f4d..8e3dcbb 100644 ---- a/src/utils/cplay.c -+++ b/src/utils/cplay.c -@@ -117,6 +117,9 @@ static void usage(void) - "-f\tfragments\n\n" - "-v\tverbose mode\n" - "-h\tPrints this help list\n\n" -+ "-p\tpause\n" -+ "-m\tpause blocks\n" -+ "-n\tpause time duration\n" - "Example:\n" - "\tcplay -c 1 -d 2 test.mp3\n" - "\tcplay -f 5 test.mp3\n\n" -@@ -133,7 +136,8 @@ static void usage(void) - - void play_samples(char *name, unsigned int card, unsigned int device, - unsigned long buffer_size, unsigned int frag, -- unsigned long codec_id); -+ unsigned long codec_id, int pause_count, int pause_block, -+ int pause_duration); - - struct mp3_header { - uint16_t sync; -@@ -262,12 +266,15 @@ int main(int argc, char **argv) - int c, i; - unsigned int card = 0, device = 0, frag = 0; - unsigned int codec_id = SND_AUDIOCODEC_MP3; -+ int pause_count = 0; -+ int pause_block = 6; -+ int pause_duration = 10; - - if (argc < 2) - usage(); - - verbose = 0; -- while ((c = getopt(argc, argv, "hvb:f:c:d:I:")) != -1) { -+ while ((c = getopt(argc, argv, "hvb:f:c:d:I:p:m:n:")) != -1) { - switch (c) { - case 'h': - usage(); -@@ -306,6 +313,23 @@ int main(int argc, char **argv) - case 'v': - verbose = 1; - break; -+ case 'p': -+ pause_count = strtol(optarg, NULL, 10); -+ break; -+ case 'm': -+ pause_block = strtol(optarg, NULL, 10); -+ if (pause_duration < 0) { -+ printf("Set wrong paramter! Set duration default 6.\n"); -+ pause_duration = 6; -+ } -+ break; -+ case 'n': -+ pause_duration = strtol(optarg, NULL, 10); -+ if (pause_duration < 0) { -+ printf("Set wrong paramter! Set duration default 10.\n"); -+ pause_duration = 10; -+ } -+ break; - default: - exit(EXIT_FAILURE); - } -@@ -315,7 +339,7 @@ int main(int argc, char **argv) - - file = argv[optind]; - -- play_samples(file, card, device, buffer_size, frag, codec_id); -+ play_samples(file, card, device, buffer_size, frag, codec_id, pause_count, pause_block, pause_duration); - - fprintf(stderr, "Finish Playing.... Close Normally\n"); - exit(EXIT_SUCCESS); -@@ -491,7 +515,8 @@ void get_codec_pcm(FILE *file, struct compr_config *config, - - void play_samples(char *name, unsigned int card, unsigned int device, - unsigned long buffer_size, unsigned int frag, -- unsigned long codec_id) -+ unsigned long codec_id, int pause_count, int pause_block, -+ int pause_duration) - { - struct compr_config config; - struct snd_codec codec; -@@ -499,6 +524,7 @@ void play_samples(char *name, unsigned int card, unsigned int device, - FILE *file; - char *buffer; - int size, num_read, wrote; -+ int write_count = 0; - - if (verbose) - printf("%s: entry\n", __func__); -@@ -574,6 +600,13 @@ void play_samples(char *name, unsigned int card, unsigned int device, - if (verbose) - printf("%s: You should hear audio NOW!!!\n", __func__); - -+ if (pause_count > 0) { -+ printf("sleep...\n"); -+ compress_pause(compress); -+ sleep(pause_duration); -+ compress_resume(compress); -+ } -+ - do { - num_read = fread(buffer, 1, size, file); - if (num_read > 0) { -@@ -592,8 +625,23 @@ void play_samples(char *name, unsigned int card, unsigned int device, - printf("%s: wrote %d\n", __func__, wrote); - } - } -+ write_count++; -+ if ((pause_count > 0) && (write_count % pause_block == 0)) { -+ printf("pause...\n"); -+ compress_pause(compress); -+ sleep(pause_duration); -+ printf("pause release...\n"); -+ compress_resume(compress); -+ pause_count--; -+ } - } while (num_read > 0); - -+ if (pause_count > 0) { -+ compress_pause(compress); -+ sleep(5); -+ compress_resume(compress); -+ } -+ - if (verbose) - printf("%s: exit success\n", __func__); - /* issue drain if it supports */ --- -2.17.1 - diff --git a/meta-digi-dey/recipes-multimedia/pulseaudio/tinycompress/tinycompress/0004-tinycompress-pass-NULL-buffer-with-0-size-to-driver.patch b/meta-digi-dey/recipes-multimedia/pulseaudio/tinycompress/tinycompress/0004-tinycompress-pass-NULL-buffer-with-0-size-to-driver.patch deleted file mode 100755 index 994fc14e2..000000000 --- a/meta-digi-dey/recipes-multimedia/pulseaudio/tinycompress/tinycompress/0004-tinycompress-pass-NULL-buffer-with-0-size-to-driver.patch +++ /dev/null @@ -1,41 +0,0 @@ -From a2892bf5db7520689fa9cb1d1589fa804bd9dc1a Mon Sep 17 00:00:00 2001 -From: Bing Song -Date: Tue, 18 Aug 2020 15:26:51 +0800 -Subject: [PATCH] tinycompress: pass NULL buffer with 0 size to driver. - -The NULL buffer with 0 size to indecate driver drain input data with -non-block mode. The defaul drain is block mode. - -upstream status: imx specific - -Signed-off-by: Bing Song ---- - src/lib/compress.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/src/lib/compress.c b/src/lib/compress.c -index bba4fcf..d66df0b 100644 ---- a/src/lib/compress.c -+++ b/src/lib/compress.c -@@ -315,7 +315,8 @@ int compress_write(struct compress *compress, const void *buf, unsigned int size - fds.events = POLLOUT; - - /*TODO: treat auto start here first */ -- while (size) { -+ /* NULL buffer with 0 size for non-block drain */ -+ do { - if (ioctl(compress->fd, SNDRV_COMPRESS_AVAIL, &avail)) - return oops(compress, errno, "cannot get avail"); - -@@ -357,7 +358,7 @@ int compress_write(struct compress *compress, const void *buf, unsigned int size - size -= written; - cbuf += written; - total += written; -- } -+ } while (size); - return total; - } - --- -2.17.1 - diff --git a/meta-digi-dey/recipes-multimedia/pulseaudio/tinycompress/tinycompress/0005-cplay-Support-aac-streams.patch b/meta-digi-dey/recipes-multimedia/pulseaudio/tinycompress/tinycompress/0005-cplay-Support-aac-streams.patch deleted file mode 100755 index 216426885..000000000 --- a/meta-digi-dey/recipes-multimedia/pulseaudio/tinycompress/tinycompress/0005-cplay-Support-aac-streams.patch +++ /dev/null @@ -1,252 +0,0 @@ -From 2912f8573cea25fbd38ac7a8b68af2ea6a05e599 Mon Sep 17 00:00:00 2001 -From: Zhang Peng -Date: Wed, 28 Oct 2020 19:08:53 +0800 -Subject: [PATCH] cplay: Support aac streams - -Support run aac format streams for cplay. - -upstream status: imx specific - -Signed-off-by: Zhang Peng ---- - src/utils/cplay.c | 210 ++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 210 insertions(+) - -diff --git a/src/utils/cplay.c b/src/utils/cplay.c -index 8e3dcbb..2a1464a 100644 ---- a/src/utils/cplay.c -+++ b/src/utils/cplay.c -@@ -245,6 +245,190 @@ static int parse_wav_header(FILE *file, unsigned int *num_channels, unsigned int - return 0; - } - -+int find_adts_header(FILE *file, unsigned int *num_channels, unsigned int *sample_rate, unsigned int *format) -+{ -+ int ret; -+ unsigned char buf[5]; -+ -+ ret = fread(buf, sizeof(buf), 1, file); -+ if (ret < 0) { -+ fprintf(stderr, "open file error: %d\n", ret); -+ return 0; -+ } -+ fseek(file, 0, SEEK_SET); -+ -+ if ((buf[0] != 0xff) || (buf[1] & 0xf0 != 0xf0)) -+ return 0; -+ /* mpeg id */ -+ switch (buf[1]>>3 & 0x1) { -+ case 0x0: -+ *format = SND_AUDIOSTREAMFORMAT_MP4ADTS; -+ break; -+ case 0x1: -+ *format = SND_AUDIOSTREAMFORMAT_MP2ADTS; -+ break; -+ default: -+ fprintf(stderr, "can't find stream format\n"); -+ break; -+ } -+ /* sample_rate */ -+ switch (buf[2]>>2 & 0xf) { -+ case 0x0: -+ *sample_rate = 96000; -+ break; -+ case 0x1: -+ *sample_rate = 88200; -+ break; -+ case 0x2: -+ *sample_rate = 64000; -+ break; -+ case 0x3: -+ *sample_rate = 48000; -+ break; -+ case 0x4: -+ *sample_rate = 44100; -+ break; -+ case 0x5: -+ *sample_rate = 32000; -+ break; -+ case 0x6: -+ *sample_rate = 24000; -+ break; -+ case 0x7: -+ *sample_rate = 22050; -+ break; -+ case 0x8: -+ *sample_rate = 16000; -+ break; -+ case 0x9: -+ *sample_rate = 12000; -+ break; -+ case 0xa: -+ *sample_rate = 11025; -+ break; -+ case 0xb: -+ *sample_rate = 8000; -+ break; -+ case 0xc: -+ *sample_rate = 7350; -+ break; -+ default: -+ break; -+ } -+ /* channel */ -+ switch (((buf[2]&0x1) << 2) | (buf[3]>>6)) { -+ case 1: -+ *num_channels = 1; -+ break; -+ case 2: -+ *num_channels = 2; -+ break; -+ case 3: -+ *num_channels = 3; -+ break; -+ case 4: -+ *num_channels = 4; -+ break; -+ case 5: -+ *num_channels = 5; -+ break; -+ case 6: -+ *num_channels = 6; -+ break; -+ case 7: -+ *num_channels = 7; -+ break; -+ default: -+ break; -+ } -+ return 1; -+} -+ -+static const int aac_sample_rates[] = { 96000, 88200, 64000, 48000, 44100, -+ 32000, 24000, 22050, 16000, 12000, 11025, 8000, 7350 -+}; -+ -+#define MAX_SR_NUM sizeof(aac_sample_rates)/sizeof(aac_sample_rates[0]) -+ -+static int get_sample_rate_from_index(int sr_index) -+{ -+ if (sr_index >= 0 && sr_index < MAX_SR_NUM) -+ return aac_sample_rates[sr_index]; -+ -+ return 0; -+} -+ -+int find_adif_header(FILE *file, unsigned int *num_channels, unsigned int *sample_rate, unsigned int *format) -+{ -+ int ret; -+ unsigned char adif_id[4]; -+ unsigned char adif_header[20]; -+ int bitstream_type; -+ int bitrate; -+ int object_type; -+ int sr_index; -+ int skip_size = 0; -+ -+ ret = fread(adif_id, sizeof(unsigned char), 4, file); -+ if (ret < 0) { -+ fprintf(stderr, "read data from file err: %d\n", ret); -+ return 0; -+ } -+ /* adif id */ -+ if ((adif_id[0] != 0x41) || (adif_id[1] != 0x44) || -+ (adif_id[2] != 0x49) || (adif_id[3] != 0x46)) -+ return 0; -+ -+ fread(adif_header, sizeof(unsigned char), 20, file); -+ -+ /* copyright string */ -+ if (adif_header[0] & 0x80) -+ skip_size = 9; -+ -+ bitstream_type = adif_header[0 + skip_size] & 0x10; -+ bitrate = -+ ((unsigned int) (adif_header[0 + skip_size] & 0x0f) << 19) | -+ ((unsigned int) adif_header[1 + skip_size] << 11) | -+ ((unsigned int) adif_header[2 + skip_size] << 3) | -+ ((unsigned int) adif_header[3 + skip_size] & 0xe0); -+ -+ if (bitstream_type == 0) { -+ object_type = ((adif_header[6 + skip_size] & 0x01) << 1) | -+ ((adif_header[7 + skip_size] & 0x80) >> 7); -+ sr_index = (adif_header[7 + skip_size] & 0x78) >> 3; -+ } -+ /* VBR */ -+ else { -+ object_type = (adif_header[4 + skip_size] & 0x18) >> 3; -+ sr_index = ((adif_header[4 + skip_size] & 0x07) << 1) | -+ ((adif_header[5 + skip_size] & 0x80) >> 7); -+ } -+ -+ /* sample rate */ -+ *sample_rate = get_sample_rate_from_index(sr_index); -+ -+ /* FIXME: assume channels is 2 */ -+ *num_channels = 2; -+ -+ *format = SND_AUDIOSTREAMFORMAT_ADIF; -+ fseek(file, 0, SEEK_SET); -+ return 1; -+} -+ -+static int parse_aac_header(FILE *file, unsigned int *num_channels, unsigned int *sample_rate, unsigned int *format) -+{ -+ if (find_adts_header(file, num_channels, sample_rate, format)) -+ return 1; -+ else if (find_adif_header(file, num_channels, sample_rate, format)) -+ return 1; -+ else { -+ fprintf(stderr, "can't find streams format\n"); -+ return 0; -+ } -+ -+ return 1; -+} -+ - static int print_time(struct compress *compress) - { - unsigned int avail; -@@ -513,6 +697,29 @@ void get_codec_pcm(FILE *file, struct compr_config *config, - codec->format = format; - } - -+void get_codec_aac(FILE *file, struct compr_config *config, -+ struct snd_codec *codec) -+{ -+ unsigned int channels, rate, format; -+ -+ if (parse_aac_header(file, &channels, &rate, &format) == 0) { -+ fclose(file); -+ exit(EXIT_FAILURE); -+ }; -+ fseek(file, 0, SEEK_SET); -+ -+ codec->id = SND_AUDIOCODEC_AAC; -+ codec->ch_in = channels; -+ codec->ch_out = channels; -+ codec->sample_rate = rate; -+ codec->bit_rate = 0; -+ codec->rate_control = 0; -+ codec->profile = SND_AUDIOPROFILE_AAC; -+ codec->level = 0; -+ codec->ch_mode = 0; -+ codec->format = format; -+ -+} - void play_samples(char *name, unsigned int card, unsigned int device, - unsigned long buffer_size, unsigned int frag, - unsigned long codec_id, int pause_count, int pause_block, -@@ -544,6 +751,9 @@ void play_samples(char *name, unsigned int card, unsigned int device, - case SND_AUDIOCODEC_PCM: - get_codec_pcm(file, &config, &codec); - break; -+ case SND_AUDIOCODEC_AAC: -+ get_codec_aac(file, &config, &codec); -+ break; - default: - fprintf(stderr, "codec ID %ld is not supported\n", codec_id); - exit(EXIT_FAILURE); --- -2.17.1 - diff --git a/meta-digi-dey/recipes-multimedia/pulseaudio/tinycompress/tinycompress_1.1.6.bb b/meta-digi-dey/recipes-multimedia/pulseaudio/tinycompress/tinycompress_1.1.6.bb deleted file mode 100644 index ccfa94cd6..000000000 --- a/meta-digi-dey/recipes-multimedia/pulseaudio/tinycompress/tinycompress_1.1.6.bb +++ /dev/null @@ -1,19 +0,0 @@ -SUMMARY = "tinycompress library for compress audio offload in alsa" -DESCRIPTION = "A library to handle compressed formats like MP3 etc" -LICENSE = "BSD-3-Clause" - -inherit autotools pkgconfig -LIC_FILES_CHKSUM = "file://COPYING;md5=cf9105c1a2d4405cbe04bbe3367373a0" - -DEPENDS:append = " alsa-lib" - -SRC_URI = "git://git.alsa-project.org/tinycompress.git;protocol=git;branch=master \ - file://0001-tinycompress-Add-id3-decoding.patch \ - file://0002-cplay-Support-wave-file.patch \ - file://0003-cplay-Add-pause-feature.patch \ - file://0004-tinycompress-pass-NULL-buffer-with-0-size-to-driver.patch \ - file://0005-cplay-Support-aac-streams.patch \ -" -SRCREV = "995f2ed91045dad8c20485ab1a64727d22cd92e5" - -S = "${WORKDIR}/git"