Opus çerçevesini ses örneklerine çözen basit bir kod var. Android'de çalışıyor ancak Unity3D iOS projesinde kilitleniyor ve normal iOS projesinde kilitlenmiyor.iOS'ta Opus kod çözücüsü açık neden olmadan çöküyor
EXC_BAD_ACCESS (code=1, address=0x2f)
Her iki proje de aynı opus statik kitaplığını ve başlık dosyalarını paylaşır.
#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);
}
Yığın izleme: Ayarları inşa karşılaştırıldı ve onları hemen hemen aynı yapılan
#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
.
Hata duyuluyor - ayırma sırasında bir sorun var.
opus_decoder_create
OpusDecoder tahsis edebilir ancak hata nedeniyle sembolü çatışma opus_decode
Buraya cevap verdiğinize sevindim! Tekrar teşekkürler. – Tema
Bunun için herhangi bir alternatif çözüm var mı (ör. Derleyiciyi belirli isimler hariç olmak üzere çoğaltmak için yapılandırılıyor)? Bu çözüm, herhangi bir zamanda bozulabilir. Unity, yeni bir iç işlev adı sunar. – Martin