package/opus: bump version to 1.6

For release notes, see:
https://opus-codec.org/release/stable/2025/12/15/libopus-1_6.html

opus 1.6 introduced optimization for Arm using Neon intrinsics.
Those are not available in soft-float ABI. This commit disables the
usage of intrinsics in that case.

This commit also adds an upstream patch to the libopusenc package.
It is because libopusenc is using internal functions of opus, which
were renamed in upstream commit [1]. Without this patch, the
opus-tools package fail to compile with error:

    src/opusenc.c: In function ‘main’:
    /.../sysroot/usr/include/opus/opusenc.h:134:63: error: implicit declaration of function ‘__opus_check_int’; did you mean ‘opus_check_int’? [-Wimplicit-function-declaration]

[1] 7817df7908

Signed-off-by: Julien Olivain <ju.o@free.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is contained in:
Julien Olivain
2025-12-18 22:46:36 +01:00
committed by Thomas Petazzoni
parent 7f1c2b9d69
commit 9e779d6e57
3 changed files with 93 additions and 2 deletions

View File

@@ -0,0 +1,85 @@
From a0010e4602b40efc1413b3069122eb73efb688d3 Mon Sep 17 00:00:00 2001
From: Mark Harris <mark.hsj@gmail.com>
Date: Mon, 24 Nov 2025 11:52:29 -0800
Subject: [PATCH] opusenc.h: Avoid __opus_check_* macros
The __opus_check_* macros are undocumented macros internal to opus, and
have changed in opus commit 7817df7908318fb3a0af2a01e4da1e25643967d0
because identifiers beginning with a double underscore are reserved by
ISO C. Define our own macros, not using reserved identifiers.
Reported by Bertaz on GitHub and benedikt-grl on gitlab.xiph.org.
Resolves: https://github.com/xiph/libopusenc/pull/36
Resolves: https://gitlab.xiph.org/xiph/opus-tools/-/issues/2323
Upstream: https://gitlab.xiph.org/xiph/libopusenc/-/commit/04c6172ffbbd5c7f7f2e170cf843872113f33b05
[Julien: rebase on v0.2.1]
Signed-off-by: Julien Olivain <ju.o@free.fr>
---
include/opusenc.h | 35 ++++++++++++++++++++---------------
1 file changed, 20 insertions(+), 15 deletions(-)
diff --git a/include/opusenc.h b/include/opusenc.h
index 50ba8b5..6a893c7 100644
--- a/include/opusenc.h
+++ b/include/opusenc.h
@@ -104,7 +104,6 @@ extern "C" {
/*@}*/
/*@}*/
-
/* These are the "raw" request values -- they should usually not be used. */
#define OPE_SET_DECISION_DELAY_REQUEST 14000
#define OPE_GET_DECISION_DELAY_REQUEST 14001
@@ -121,6 +120,13 @@ extern "C" {
#define OPE_GET_NB_STREAMS_REQUEST 14013
#define OPE_GET_NB_COUPLED_STREAMS_REQUEST 14015
+/* Macros to trigger compilation errors when the wrong types are provided to a CTL. */
+/* These macros are not part of the API and are only for use within the macros below. */
+#define ope_check_int(x) (((void)((x) == (opus_int32)0)), (opus_int32)(x))
+#define ope_check_int_ptr(ptr) ((ptr) + ((ptr) - (opus_int32*)(ptr)))
+#define ope_check_packet_func(x) ((void)((void (*)(void *, const unsigned char *, opus_int32, opus_uint32))0 == (x)), (x))
+#define ope_check_void_ptr(x) ((void)((void *)0 == (x)), (x))
+
/**\defgroup encoder_ctl Encoding Options*/
/*@{*/
@@ -129,21 +135,20 @@ extern "C" {
Macros for setting encoder options.*/
/*@{*/
-#define OPE_SET_DECISION_DELAY(x) OPE_SET_DECISION_DELAY_REQUEST, __opus_check_int(x)
-#define OPE_GET_DECISION_DELAY(x) OPE_GET_DECISION_DELAY_REQUEST, __opus_check_int_ptr(x)
-#define OPE_SET_MUXING_DELAY(x) OPE_SET_MUXING_DELAY_REQUEST, __opus_check_int(x)
-#define OPE_GET_MUXING_DELAY(x) OPE_GET_MUXING_DELAY_REQUEST, __opus_check_int_ptr(x)
-#define OPE_SET_COMMENT_PADDING(x) OPE_SET_COMMENT_PADDING_REQUEST, __opus_check_int(x)
-#define OPE_GET_COMMENT_PADDING(x) OPE_GET_COMMENT_PADDING_REQUEST, __opus_check_int_ptr(x)
-#define OPE_SET_SERIALNO(x) OPE_SET_SERIALNO_REQUEST, __opus_check_int(x)
-#define OPE_GET_SERIALNO(x) OPE_GET_SERIALNO_REQUEST, __opus_check_int_ptr(x)
-/* FIXME: Add type-checking macros to these. */
-#define OPE_SET_PACKET_CALLBACK(x,u) OPE_SET_PACKET_CALLBACK_REQUEST, (x), (u)
+#define OPE_SET_DECISION_DELAY(x) OPE_SET_DECISION_DELAY_REQUEST, ope_check_int(x)
+#define OPE_GET_DECISION_DELAY(x) OPE_GET_DECISION_DELAY_REQUEST, ope_check_int_ptr(x)
+#define OPE_SET_MUXING_DELAY(x) OPE_SET_MUXING_DELAY_REQUEST, ope_check_int(x)
+#define OPE_GET_MUXING_DELAY(x) OPE_GET_MUXING_DELAY_REQUEST, ope_check_int_ptr(x)
+#define OPE_SET_COMMENT_PADDING(x) OPE_SET_COMMENT_PADDING_REQUEST, ope_check_int(x)
+#define OPE_GET_COMMENT_PADDING(x) OPE_GET_COMMENT_PADDING_REQUEST, ope_check_int_ptr(x)
+#define OPE_SET_SERIALNO(x) OPE_SET_SERIALNO_REQUEST, ope_check_int(x)
+#define OPE_GET_SERIALNO(x) OPE_GET_SERIALNO_REQUEST, ope_check_int_ptr(x)
+#define OPE_SET_PACKET_CALLBACK(x,u) OPE_SET_PACKET_CALLBACK_REQUEST, ope_check_packet_func(x), ope_check_void_ptr(u)
/*#define OPE_GET_PACKET_CALLBACK(x,u) OPE_GET_PACKET_CALLBACK_REQUEST, (x), (u)*/
-#define OPE_SET_HEADER_GAIN(x) OPE_SET_HEADER_GAIN_REQUEST, __opus_check_int(x)
-#define OPE_GET_HEADER_GAIN(x) OPE_GET_HEADER_GAIN_REQUEST, __opus_check_int_ptr(x)
-#define OPE_GET_NB_STREAMS(x) OPE_GET_NB_STREAMS_REQUEST, __opus_check_int_ptr(x)
-#define OPE_GET_NB_COUPLED_STREAMS(x) OPE_GET_NB_COUPLED_STREAMS_REQUEST, __opus_check_int_ptr(x)
+#define OPE_SET_HEADER_GAIN(x) OPE_SET_HEADER_GAIN_REQUEST, ope_check_int(x)
+#define OPE_GET_HEADER_GAIN(x) OPE_GET_HEADER_GAIN_REQUEST, ope_check_int_ptr(x)
+#define OPE_GET_NB_STREAMS(x) OPE_GET_NB_STREAMS_REQUEST, ope_check_int_ptr(x)
+#define OPE_GET_NB_COUPLED_STREAMS(x) OPE_GET_NB_COUPLED_STREAMS_REQUEST, ope_check_int_ptr(x)
/*@}*/
/*@}*/
--
2.52.0

View File

@@ -1,5 +1,5 @@
# From http://downloads.xiph.org/releases/opus/SHA256SUMS.txt
sha256 65c1d2f78b9f2fb20082c38cbe47c951ad5839345876e46941612ee87f9a7ce1 opus-1.5.2.tar.gz
sha256 b7637334527201fdfd6dd6a02e67aceffb0e5e60155bbd89175647a80301c92c opus-1.6.tar.gz
# Hash for license file
sha256 01e1167d54a096d123cf6dfbbeb19587278845c6481d2d66d545669846079551 COPYING

View File

@@ -4,7 +4,7 @@
#
################################################################################
OPUS_VERSION = 1.5.2
OPUS_VERSION = 1.6
OPUS_SITE = https://downloads.xiph.org/releases/opus
OPUS_LICENSE = BSD-3-Clause
OPUS_LICENSE_FILES = COPYING
@@ -41,4 +41,10 @@ ifeq ($(BR2_arm)$(BR2_armeb):$(BR2_ARM_CPU_HAS_ARM),y:)
OPUS_CONF_OPTS += --disable-asm
endif
# We also disable assembly in case we have a soft-float ABI (opus has
# NEON instructions which are not available in that case).
ifeq ($(BR2_ARM_SOFT_FLOAT),y)
OPUS_CONF_OPTS += --disable-intrinsics
endif
$(eval $(autotools-package))