Аудио обратная связь с помощью RIL Audio на смартфоне - PullRequest
1 голос
/ 05 мая 2009

Мы работаем над программным телефоном SIP и получаем звуковую обратную связь, когда звоним с одного телефона на другой. Тем не менее, когда мы звоним с обычного SIP-телефона (программного или аппаратного) в наше приложение, тогда все работает нормально - это только при звонке с одного телефона с помощью приложения на другой. Вот код, который мы используем для инициализации RIL Audio:

    public static void InitRILAudio()
    {
        IntPtr res;
        RILRESULTCALLBACK result = new RILRESULTCALLBACK(f_result);
        RILNOTIFYCALLBACK notify = new RILNOTIFYCALLBACK(f_notify);

        res = RIL_Initialize(1, result, notify, (0x00010000 | 0x00020000 | 0x00080000), 0, out hRil);

        if (res != IntPtr.Zero)
            return;

        RILAUDIODEVICEINFO audioDeviceInfo = new RILAUDIODEVICEINFO();
        audioDeviceInfo.cbSize = 16;
        audioDeviceInfo.dwParams = 0x00000003;      //RIL_PARAM_ADI_ALL;
        audioDeviceInfo.dwRxDevice = 0x00000001;    //RIL_AUDIO_HANDSET;
        audioDeviceInfo.dwTxDevice = 0x00000001;    //RIL_AUDIO_HANDSET;

        res = RIL_SetAudioDevices(hRil, audioDeviceInfo);
    }

Мы используем SipEk (http://voipengine.googlepages.com/sipeksdk) для стека SIP. По сути, мы просто используем делегата обратного вызова из SDK для аудио материала. Кто-нибудь еще испытывал проблемы с аудио-петлями обратной связи, как это? Или с RIL Audio или SipEk? Есть предложения?

Заранее спасибо!

1 Ответ

1 голос
/ 13 мая 2009

Обратная связь означает, что вы не используете эхоподавление (линейное и / или акустическое, в зависимости от того, работает он как громкая связь или нет) или, если вы, задержка в вашей системе (буферы дрожания, сеть, кодирование / декодирование и т. д.) больше, чем может обработать эхоподавитель. Чрезмерное усиление / ограничение в неправильных местах может также победить любой эхоподавитель (им не нравятся нелинейные эффекты).

Звучит так, будто вы просто записываете звук на некоторые другие слои. SipEk - это просто оболочка для pjsip, но я предполагаю, что вы делаете аудио через материал Microsoft RIL / etc, а не через pjmedia. Вы должны хорошо понимать ваши звуковые тракты - где материал отбирается, если / как это акустическое / линейное эхоподавление, что такое хвост эха, как он кодируется и пакетируется, как он принимается, буферизируется дрожание, потеря -скрытый, декодированный и воспроизводимый.

...