Tôi đang làm việc với AUGraph
và API đơn vị âm thanh để phát lại và ghi âm thanh trong ứng dụng iOS của mình. Bây giờ tôi gặp sự cố hiếm gặp khi AUGraph
không thể bắt đầu với lỗi sau:
result = kAUGraphErr_CannotDoInCurrentContext (-10863)
Lỗi xảy ra không lường trước được khi chúng tôi cố gắng gọi AUGraphStart
được thiết lập để phát lại âm thanh:
(BOOL)startRendering
{
if (playing) {
return YES;
}
playing = YES;
if (NO == [self setupAudioForGraph:&au_play_graph playout:YES]) {
print_error("Failed to create play AUGraph",0);
playing = NO;
return NO;
}
//result = kAUGraphErr_CannotDoInCurrentContext (-10863)
OSStatus result = AUGraphStart(au_play_graph);
if (noErr != result) {
print_error("AUGraphStart", result);
playing = NO;
}
return playing;
}
Đây là những gì chúng tôi nhận được từ tài liệu:
Để tránh quay hoặc chờ trong chuỗi kết xuất (một ý tưởng tồi!), Nhiều lệnh gọi tới AUGraph có thể trả về: kAUGraphErr_CannotDoInCurrentContext. Kết quả này chỉ được tạo khi bạn gọi một API AUGraph từ lệnh gọi lại kết xuất của nó. Nó có nghĩa là khóa mà nó yêu cầu đã được giữ tại thời điểm đó, bằng một sợi khác . Nếu bạn thấy mã kết quả này, bạn thường có thể thử lại hành động - thường là chu kỳ hiển thị NEXT (vì vậy trong thời gian chờ đợi, khóa có thể được xóa) hoặc bạn có thể ủy quyền cuộc gọi đó cho một chuỗi khác trong ứng dụng của mình. Bạn không nên quay hoặc tạm dừng chuỗi kết xuất.
Mã kết quả này chỉ là trạng thái tạm thời, sẽ chuyển ngay sau khi cuộc gọi của luồng khác của bạn tới AUGraph (có khóa) hoàn tất.
Trong trường hợp của tôi, tôi chỉ bắt đầu AUGraph
, nó mới và vừa được tạo. Làm cách nào để gỡ lỗi trường hợp và vấn đề có thể xảy ra ở đây là gì?
setupAudioForGraph
? Bạn có AUGraph Khởi tạo biểu đồ trước không?