فهرست منبع

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] https://gitlab.xiph.org/xiph/opus/-/commit/7817df7908318fb3a0af2a01e4da1e25643967d0

Signed-off-by: Julien Olivain <ju.o@free.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Julien Olivain 3 هفته پیش
والد
کامیت
9e779d6e57
3فایلهای تغییر یافته به همراه93 افزوده شده و 2 حذف شده
  1. 85 0
      package/libopusenc/0001-opusenc.h-Avoid-__opus_check_-macros.patch
  2. 1 1
      package/opus/opus.hash
  3. 7 1
      package/opus/opus.mk

+ 85 - 0
package/libopusenc/0001-opusenc.h-Avoid-__opus_check_-macros.patch

@@ -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
+

+ 1 - 1
package/opus/opus.hash

@@ -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

+ 7 - 1
package/opus/opus.mk

@@ -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))