Аудиоформат 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 для нескольких потоков приведет к нежелательным результатам. Я подозреваю, что это также означает, что он не обрабатывает потерянные пакеты так же, как другие кодеки (еще не подтвердили эту часть).