Я пытаюсь создать свой собственный аудиоплеер, используя ios CoreAudio
framework в swift
. Требуется как минимум два потока. Один поток декодирует аудиофайл, а другой поток предоставляет аппаратно декодированные данные. На самом деле второй поток, который передается аппаратному обеспечению, был обратным вызовом из ОС, поэтому мне все равно, что мне нужно просто передать необходимые данные при вызове функции обратного вызова.
КАК ЕСТЬ
Я использовал DispatchQueue
для декодирования, на самом деле он работает хорошо. как показано ниже:
DispatchQueue.global(qos: .background).async {
while(endOfFile) {
// do decoding
let res = ExtAudioFileRead(input, &frameCount,&convertedData)
}
}
Проблема
Когда я использовал DispatchQueue, загрузка процессора превысила 100%
. Телефон нагрелся, хотя я проигрывал только один mp3 musi c в моем плеере. Я не знаю, что было не так.
Вопросы
- Есть ли неправильный способ использования
DispatchQueue
? - Есть ли способ использовать другой, кроме
DispatchQueue
?