Ich habe einfachen Code, der Opus-Frame in Audio-Samples dekodiert. Es funktioniert auf Android, aber es stürzt in Unity3D iOS-Projekt ab und stürzt nicht in regulären iOS-Projekt ab.Opus-Decoder auf iOS stürzt ohne ersichtlichen Grund
EXC_BAD_ACCESS (code=1, address=0x2f)
Beide Projekte teilen sich die gleichen opus statischen Bibliotheken und Header-Dateien.
#include "opus.h"
int test1(){
unsigned char opus_chunk[] = {0x68, 0x97, 0x50, 0x0d,
0xba, 0xa4, 0x80, 0x0d, 0x31, 0x21, 0x9c, 0xcf, 0x74, 0x98, 0xda, 0xc6,
0xd5, 0x27, 0xcb, 0xd9, 0x51, 0xd7, 0xce, 0x90, 0xc5, 0x58, 0x94, 0x53,
0xb0, 0xe9, 0xb4, 0xe4, 0xf4, 0x42, 0x4d, 0xc7, 0xa4, 0x61, 0xfa, 0xfe};
int len = sizeof(opus_chunk);
short samples[5760];
int err1;
OpusDecoder *decoder;
decoder = opus_decoder_create(48000, 1, &err1);
int n = opus_decode(decoder, opus_chunk, len, samples, 5760, 0);
opus_decoder_destroy(decoder);
}
Stapelüberwachung:
#0 0x00b944ec in compute_allocation()
#1 0x00c03698 in celt_decode_with_ec at ./opus_ios/build/src/opus-1.1.2/celt/celt_decoder.c:956
#2 0x00c2400c in opus_decode_frame at ./opus_ios/build/src/opus-1.1.2/src/opus_decoder.c:490
#3 0x00c24ea2 in opus_decode_native [inlined] at ./opus_ios/build/src/opus-1.1.2/src/opus_decoder.c:692
#4 0x00c24e80 in opus_decode at ./opus_ios/build/src/opus-1.1.2/src/opus_decoder.c:782
Ich verglich Einstellungen bauen und machte sie fast gleich.
Fehler klingt wie - etwas stimmt nicht mit der Zuordnung.
opus_decoder_create
ist in der Lage OpusDecoder zuzuteilen aber Fehler ist in opus_decode
Ich bin froh, dass Sie hier geantwortet haben! Nochmals vielen Dank. – Tema
Gibt es alternative Lösungen hierfür (z. B. Konfigurieren des Compilers, um alle außer bestimmten Namen zu entfernen)? Diese Lösung könnte jederzeit unterbrochen werden. Unity führt einen neuen internen Funktionsnamen ein. – Martin