Прогнозирование голосовых пакетов (speex/ilbc C++)

Некоторое время я использовал gsm кодек для сетевого аудио чата. Теперь я хотел бы реализовать что-то вроде speex или iLBC из-за «голосового предсказания». Насколько я понимаю, мне нужны временные метки для пакетов. Также я знаю, что для того, чтобы кодек предсказывал голос, я должен, например, передать ему NULL-пакет.

Но я не могу понять всей концепции! То есть: приложение отправляет пакеты 1,2,3,4,5,6. Я получаю 1,2,3,6. Что мне делать?

Получите 1 - Сыграйте.

Получите 2 - Играйте.

Получите 3 - Играйте.

Получите 6 - Хм... Играйте 4,5 как NULL, а затем играйте 6 ?

А что, если будет потеряно слишком много пакетов?


person Dalamber    schedule 26.10.2010    source источник
comment
Я думаю, что правильным термином для того, что вы пытаетесь сделать, является сокрытие потери пакетов. Возможно, это поможет вам лучше выполнять поиск в Интернете. Это не моя область знаний, но простой подход состоит в том, чтобы запомнить самый новый пакет и отбросить его сразу после того, как он был декодирован. Если аудиобуферы почти пусты, и вам нужны данные для поддержания аудиопотока живым, то просто попробуйте что-нибудь придумать.   -  person sellibitze    schedule 26.10.2010
comment
Спасибо за ответ! Я буду продолжать гуглить с маскировкой потери пакетов. Но что касается пустых аудиобуферов - мне нужно как-то определить, пусты ли они из-за потери пакетов или просто НИКАКИХ ДАННЫХ не нужно воспроизводить. Я не должен предсказывать что-либо, если оппонент вообще не передает никакого голоса...   -  person Dalamber    schedule 27.10.2010


Ответы (1)


Мне помог комментарий sellibitze:

Я думаю, что правильным термином для того, что вы пытаетесь сделать, является «сокрытие потери пакетов». Возможно, это поможет вам лучше выполнять поиск в Интернете. Это не моя область знаний, но простой подход состоит в том, чтобы запомнить самый новый пакет и отбросить его сразу после того, как он был декодирован. Если аудиобуферы почти пусты, и вам нужны данные для поддержания аудиопотока в рабочем состоянии, просто попробуйте «что-нибудь придумать».

person Dalamber    schedule 27.10.2010