Преобразование аудио в формате GSM в линейный PCM в iOS - PullRequest
2 голосов
/ 08 марта 2012

Последние несколько месяцев я работаю над преобразованием GSM6.10 в линейный PCM в iOS и просто не могу заставить его работать.Буду признателен за любые советы!

Я получаю потоковые данные из программы Windows.Данные принимаются в пакетах с несколькими различными типами пакетов.Некоторые типы пакетов содержат отображаемые данные.Один тип пакета содержит аудиоданные.Аудиоданные в формате Microsoft WAV, 8000 сэмплов в секунду, 8 бит на сэмпл, монофонические, сжатые с использованием GSM6.10.У меня нет контроля над программой Windows, поэтому я не могу изменить способ потоковой передачи данных.

Моя программа iOS разбивает потоковые данные на различные типы пакетов.Данные дисплея используются для обновления дисплея и работают нормально.У меня проблема с аудиоданными.

Когда моя программа iOS подключается к потоку, канонические дескрипторы WAVE отсутствуют.Я в основном подключаю средний поток.

Сначала я пытался использовать Audio File Stream Services, передавая проанализированные аудиопакеты в качестве входных данных.Неудачно.Я работал и работал и не мог разрешить тип?проблема.

Затем я попробовал Audio Queue Services и добился успеха в получении звука для воспроизведения.Тем не менее, задержка, связанная с использованием Audio Queue Services, сделала отображение и звук несинхронными (почти на 4 секунды).

Сейчас я работаю над использованием Audio Graph.Я попытался использовать конвертер и удаленный блок ввода-вывода вместе.Я также пытался использовать только удаленный блок ввода-вывода.В обоих случаях кажется, что я не могу указать GSM6.10 в качестве входа.Я использую ту же AudioStreamBasicDescription, которую я использовал в работающем решении Audio Queue.Однако, когда я пытаюсь запустить график, я получаю сообщение об ошибке.

Преобразует ли преобразователь и / или модуль удаленного ввода-вывода GSM6.10 в линейный PCM?В документации неясно, преобразуют ли эти единицы сжатый формат в линейный PCM или просто конвертируют линейные форматы PCM (например, с различной частотой дискретизации).

Существует ли лучший способ преобразования GSM6.10 в линейный PCM?Может быть, конвертер Core Audio, который я могу вызвать при разборе аудиопакетов?

Предложения приветствуются!

...