2016-11-03 61 views
5

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

} 

xcode opus crash in celt

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

cevap

1

Bu durum içindedir. Unity 3D kütüphanesi, libopus tarafından da tanımlanan ve kullanılan compute_allocation() dahil olmak üzere bazı simgeleri tanımlar. Unity 3D kütüphanesi, linker komut satırında libopustan önce ise, o sürümde libopus ile çalışmaz. Her iki kümeye de ihtiyacınız varsa, o zaman çakışan sembolleri yeniden adlandırmanız gerekebilir.

+0

Buraya cevap verdiğinize sevindim! Tekrar teşekkürler. – Tema

+0

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