[v4] libavtp: add recipe for audio video transport protocol (avtp)

Message ID 20220602094056.303118-1-marcel@ziswiler.com
State Under Review
Headers show
Series [v4] libavtp: add recipe for audio video transport protocol (avtp) | expand

Commit Message

Marcel Ziswiler June 2, 2022, 9:40 a.m. UTC
From: Marcel Ziswiler <marcel.ziswiler@toradex.com>

This is Avnu's implementation of the Audio Video Transport Protocol
(AVTP). It may be used in order to enable the configuration option aaf
(AVTP Audio Format) for the alsa-plugins. While the library libavtp is a
dependency no recipe for this library was present. The aaf support for
the alsa-plugins was introduced in the openembedded-core commit
ddf542133118 ("alsa-plugins: 1.1.6 -> 1.1.8"). It may further be used in
order to enable the configuration option avtp for the
gstreamer1.0-plugins-bad once a separate patch enabling such
PACKAGECONFIG makes it into openembedded-core.

Signed-off-by: Peter Bergin <peter@berginkonsult.se>
Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>

---
Resurrect from mailing list [1] as this is still not upstream.
End-to-end tested on Verdin iMX8M Plus.
Will talk about it at the Embedded World Conference in the TSN & Linux
track next month [2].

[1] https://lore.kernel.org/all/20210604090216.553285-1-peter@berginkonsult.se/
[2] https://events.weka-fachmedien.de/embedded-world-conference/program/
[3] https://lore.kernel.org/all/20220531213206.7119-2-marcel@ziswiler.com/

Changes in v4:
- Moved from openembedded-core as suggested by Alex [3].
- Relying on git hash instead of tag as suggested by Quentin.
- Fixing musl build issue as reported by Luca curtsey Max.

Changes in v3:
- Rename recipe to officially released PV of 0.2.0.
- Drop PROVIDES of avtp which just works around alsa-plugins referring
  to it as such instead of libavtp. Will update PACKAGECONFIG in
  alsa-plugins instead.

Changes in v2:
- Updated SRC_URI specifying mandatory protocol as https.
- Updated SRCREV to latest.

 ...it-host-to-network-conversion-macros.patch | 43 +++++++++++++++++++
 .../libavtp/libavtp_0.2.0.bb                  | 16 +++++++
 2 files changed, 59 insertions(+)
 create mode 100644 meta-multimedia/recipes-multimedia/libavtp/libavtp/0001-provide-64bit-host-to-network-conversion-macros.patch
 create mode 100644 meta-multimedia/recipes-multimedia/libavtp/libavtp_0.2.0.bb

Patch

diff --git a/meta-multimedia/recipes-multimedia/libavtp/libavtp/0001-provide-64bit-host-to-network-conversion-macros.patch b/meta-multimedia/recipes-multimedia/libavtp/libavtp/0001-provide-64bit-host-to-network-conversion-macros.patch
new file mode 100644
index 000000000..e432ccca4
--- /dev/null
+++ b/meta-multimedia/recipes-multimedia/libavtp/libavtp/0001-provide-64bit-host-to-network-conversion-macros.patch
@@ -0,0 +1,43 @@ 
+From cdbbe227594665145e9309a9ecb7d90aad070aab Mon Sep 17 00:00:00 2001
+From: Max Krummenacher <max.krummenacher@toradex.com>
+Date: Wed, 1 Jun 2022 15:53:55 +0000
+Subject: [PATCH] provide 64bit host to network conversion macros
+
+musl dosn't include the macros which convert 64-bit integers
+between host and network endianness from arpa/inet.h as glibc does.
+
+Use this patch to include endian.h in util.h if compiling for musl.
+
+Prevents:
+| [2/8] aarch64-tdx-linux-musl-gcc ... -o libavtp.so.0.2.0.p/src_avtp_stream.c.o -c ../git/src/avtp_stream.c
+| ../git/src/avtp_stream.c: In function 'avtp_stream_pdu_get':
+| ../git/src/avtp_stream.c:116:24: warning: implicit declaration of function 'be64toh' [-Wimplicit-function-declaration]
+|   116 |                 *val = be64toh(pdu->stream_id);
+|       |                        ^~~~~~~
+| ../git/src/avtp_stream.c: In function 'avtp_stream_pdu_set':
+| ../git/src/avtp_stream.c:199:34: warning: implicit declaration of function 'htobe64' [-Wimplicit-function-declaration]
+|   199 |                 pdu->stream_id = htobe64(value);
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
+---
+ src/util.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/util.h b/src/util.h
+index 8b50625..e6fd2ef 100644
+--- a/src/util.h
++++ b/src/util.h
+@@ -27,6 +27,8 @@
+ 
+ #pragma once
+ 
++#include <endian.h>
++
+ #define BIT(n)				(1ULL << n)
+ 
+ #define BITMASK(len)			(BIT(len) - 1)
+-- 
+2.20.1
+
diff --git a/meta-multimedia/recipes-multimedia/libavtp/libavtp_0.2.0.bb b/meta-multimedia/recipes-multimedia/libavtp/libavtp_0.2.0.bb
new file mode 100644
index 000000000..98f8e5b84
--- /dev/null
+++ b/meta-multimedia/recipes-multimedia/libavtp/libavtp_0.2.0.bb
@@ -0,0 +1,16 @@ 
+SUMMARY = "Implements Audio Video Transport Protocol (AVTP)"
+DESCRIPTION = "Open source implementation of Audio Video Transport Protocol (AVTP) \
+               specified in IEEE 1722-2016 spec."
+HOMEPAGE = "https://github.com/Avnu/libavtp"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=7fcb4331e23e45e171cd5693c1ff7d3e"
+
+SRC_URI = "git://github.com/Avnu/libavtp.git;branch=master;protocol=https"
+SRC_URI:append:libc-musl = " file://0001-provide-64bit-host-to-network-conversion-macros.patch"
+SRCREV = "3599a5bf2d18fc3ae89b64f208d8380e6ee3a866"
+
+S = "${WORKDIR}/git"
+
+inherit meson pkgconfig
+
+EXTRA_OEMESON = "-Dtests=disabled"