2009-05-05 2 views
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 스택에 대한 (http://voipengine.googlepages.com/sipeksdk) SipEk을 사용하고 있습니다 : 여기에 우리가 RIL 오디오를 초기화하는 데 사용하는 코드입니다. 기본적으로 SDK의 콜백 대리자를 오디오 용으로 사용합니다. 다른 사람이 이런 오디오 피드백 루프에 문제가 있습니까? RIL Audio 또는 SipEk 중 하나를 사용합니까? 어떤 제안?

미리 감사드립니다.

답변

1

피드백은 스피커폰으로 작동하는지 여부에 따라 회선 제거 및/또는 음향 제거 기능을 사용하고 있지 않다는 것을 의미합니다. 그렇다면 시스템 지연 (지터 버퍼, 네트워크, 인코딩/디코 드 등)은 에코 제거기가 처리 할 수있는 것보다 큽니다. 잘못된 위치에서 과도한 게인/클리핑은 모든 에코 제거기를 무효화 할 수 있습니다 (이들은 비선형 효과를 좋아하지 않습니다).

오디오를 다른 레이어로 덤핑하는 것처럼 들립니다. SipEk는 pjsip의 래퍼 일 뿐이지 만 pjmedia가 아닌 Microsoft RIL/etc를 통해 오디오를 보내고 있다고 가정합니다. 오디오 경로를 잘 이해할 필요가 있습니다. 즉, 샘플을 얻는 방법, 어쿠스틱/라인 에코 취소 여부, 에코 테일의 의미, 인코딩 및 패킷 화 방법, 수신 방법, 지터 버퍼링, 손실 숨겨지고 디코딩되어 재생됩니다.

관련 문제