1

私たちは SIP ソフトフォンに取り組んでおり、ある電話から別の電話に電話をかけるとオーディオ フィードバックが得られます。ただし、通常の SIP 電話 (ソフトウェアまたはハードウェア) からアプリに電話をかけると、すべて正常に機能します。これは、アプリを使用してある電話から別の電話に電話する場合のみです。RIL オーディオの初期化に使用するコードは次のとおりです。

    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);
    }

SIP スタックにはSipEk ( http://voipengine.googlepages.com/sipeksdk ) を使用しています。基本的に、オーディオ用の SDK からのコールバック デリゲートを使用するだけです。このようなオーディオ フィードバック ループの問題を経験した人はいますか? RIL Audio と SipEk のどちらを使用していますか? 助言がありますか?

前もって感謝します!

4

1 に答える 1

1

フィードバックは、エコー キャンセレーション (スピーカーフォンとして機能しているかどうかに応じて、回線および/または音響) を使用していないこと、または使用している場合は、システムの遅延 (ジッター バッファー、ネットワーク、エンコード/デコードなど) を意味します。 ) は、エコー キャンセラが処理できるサイズを超えています。不適切な場所での過剰なゲイン/クリッピングも、エコー キャンセラを無効にする可能性があります (非線形効果は好まない)。

オーディオを他のレイヤーにダンプしているように聞こえます。SipEk は pjsip の単なるラッパーですが、pjmedia 経由ではなく、Microsoft RIL/etc 経由でオーディオを行っていると思います。オーディオ パスをよく理解する必要があります - 何がサンプリングされるか、それがアコースティック/ライン エコー キャンセリングの場合/どのようにキャンセルされるか、エコー テールとは何か、どのようにエンコードおよびパケット化されるか、どのように受信されるか、ジッター バッファリング、損失-隠し、デコードして再生します。

于 2009-05-13T14:29:10.197 に答える