developer tip

WebRTC AGC (자동 이득 제어)

optionbox 2020. 11. 22. 19:21
반응형

WebRTC AGC (자동 이득 제어)


WebRTC AGC를 테스트하고 있지만 신호가 수정되지 않은 상태로 통과하기 때문에 뭔가 잘못하고있는 것 같습니다.

AGC를 만들고 초기화하는 방법은 다음과 같습니다.

agcConfig.compressionGaindB = 9;
agcConfig.limiterEnable = 1;
agcConfig.targetLevelDbfs = 9;   /* 9dB below full scale */

WebRtcAgc_Create(&agc);
WebRtcAgc_Init(agc, minLevel, maxLevel, kAgcModeFixedDigital, 8000);
WebRtcAgc_set_config(agc, agcConfig);

그리고 각 10ms 샘플 블록에 대해 다음을 수행합니다.

WebRtcAgc_Process(agc, micData, NULL, 80, micData, NULL, micLevelIn, &micLevelOut, 0, &saturationWarning);

경우 micLevelIn0으로 설정됩니다.

누군가 내가 뭘 잘못하고 있는지 말해 줄 수 있습니까?

나는 풀 스케일 사인 톤이 목표 DBFS 레벨로 감쇠 될 것이라고 예상했습니다. 낮은 레벨의 사인 톤 (즉 -30dBFS)은 목표 DBFS 레벨과 일치하도록 증폭됩니다. 그러나 그것은 내가보고있는 것이 아닙니다.


다음은 Webrtc_AGC에 사용할 작업 순서입니다.

  1. AGC 생성 : WebRtcAgc_Create
  2. AGC 초기화 : WebRtcAgc_Init
  3. 구성 설정 : WebRtcAgc_set_config
  4. 초기화 capture_level = 0
  5. 의 경우 kAgcModeAdaptiveDigitalVirtualMic을 호출합니다.WebRtcAgc_VirtualMic
  6. 프로세스 버퍼 capture_level:WebRtcAgc_Process
  7. 반환 된 아웃 캡처 레벨을 가져 WebRtcAgc_Process와서capture_level
  8. 5-7을 반복합니다. audio buffers
  9. AGC를 파괴하십시오. WebRtcAgc_Free

webrtc / modules / audio_processing / gain_control_impl.cc에서 참조하십시오.


이 시도:


    agcConfig.compressionGaindB = 9;
    agcConfig.limiterEnable = 1;
    agcConfig.targetLevelDbfs = 9; / * 9dB 풀 스케일 이하 * /

    WebRtcAgc_Create (& agc);
    WebRtcAgc_Init (& agc, minLevel, maxLevel, kAgcModeFixedDigital, 8000);
    WebRtcAgc_set_config (& agc, & agcConfig);

참고 URL : https://stackoverflow.com/questions/22706446/webrtc-agc-automatic-gain-control

반응형