Аудиоформат GSM6.10 является блочным или потоковым?

Возможно, я задаю не тот вопрос, но мои знания в этой области очень ограничены.

я использую acmStreamConvert конвертировать PCM в GSM (6.10).

Аудиоформат: 8 кГц, 16 бит, моно

Для размера буфера PCM я использую 640 байтов (320 выборок). Для буфера GSM я использую 65 байтов. Насколько я понимаю, GSM "всегда" преобразует 320 выборок в 65 байтов.

Причина, по которой я спрашиваю "блок или поток", заключается в том, что мне интересно, могу ли я безопасно конвертировать несколько аудиопотоков (в режиме реального времени), используя один и тот же дескриптор acmStreamConvert? Я вижу, что функция имеет некоторые флаги для ACM_STREAMCONVERTF_START а также ACM_STREAMCONVERTF_END а также ACM_STREAMCONVERTF_BLOCKALIGN, но нужно ли использовать эту последовательность начала / конца для GSM? Я понимаю, что это может потребоваться для некоторых форматов, которые используют голову / хвост, но я надеюсь, что это не требуется для формата GSM?

Я работаю над групповым VOIP-клиентом, и каждый клиент отправляет формат GSM, а затем перед игрой должен конвертировать его в PCM. Я надеюсь, что мне не нужен один дескриптор ACM для каждого клиента.

1 ответ

Решение

Основанный на потоке, или, по крайней мере, использование ACM API. Попытка использовать одни и те же объекты / дескрипторы ACM для нескольких потоков приведет к нежелательным результатам. Я подозреваю, что это также означает, что он не обрабатывает потерянные пакеты так же, как другие кодеки (еще не подтвердили эту часть).

Другие вопросы по тегам