Tôi có mã đơn giản giải mã khung opus thành các mẫu âm thanh. Nó hoạt động trên Android nhưng nó bị treo trong dự án Unity3D iOS và không bị lỗi trong dự án iOS thông thường.Bộ giải mã Opus trên iOS bị lỗi mà không có lý do rõ ràng nào.
EXC_BAD_ACCESS (code=1, address=0x2f)
Cả hai dự án đều chia sẻ cùng một tệp thư viện tĩnh và tệp tiêu đề.
#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);
}
Stack trace:
#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
tôi so xây dựng các thiết lập và làm cho họ gần như giống nhau.
Lỗi giống như âm thanh - đã xảy ra sự cố với phân bổ.
opus_decoder_create
có khả năng phân bổ OpusDecoder nhưng lỗi là ở opus_decode
Tôi rất vui vì bạn đã trả lời ở đây! Cảm ơn một lần nữa. – Tema
Có bất kỳ giải pháp thay thế nào cho điều này (ví dụ: cấu hình trình biên dịch để xóa tất cả trừ một số tên nhất định)? Giải pháp này có thể phá vỡ bất cứ lúc nào Unity giới thiệu một tên hàm nội bộ mới. – Martin