audioproc_f.exe
rtc_tools/audioproc_f/audioproc_float_main.cc //main
api/test/audioproc_float.h //안쪽의 껍데기
modules/audio_processing/test/audioproc_float_impl.h //실제 테스트 툴 코드
이 안에서 input output 외부로 부터 전달 받고 RunSimulation()에서
modules/audio_processing/test/audio_processing_simulator.h 을 기반으로 만들어진
modules/audio_processing/test/aec_dump_based_simulator.h
OR
modules/audio_processing/test/wav_based_simulator.h
simulator 클래스의 *_based_simulator의 Process()와 기반인 audio_processing_simulator의 ProcessStream()을 통해 modules/audio_processing/ 안에 있는 aec3, agc, vad 등등 동작함.
simulator에서 다시 audio_processing_impl의 ProcessStream() -> ProcessCaptureStreamLocked()에서 submodules_.echo_controller->AnalyzeCapture() -> ProcessCaptureStreamLocked()
항상 aec는 16000hz sample rate로 동작함.
ProcessCaptureStreamLocked() 에서 echo_path_gain_change가 되었는지 bool값으로 알아낸 후
echo_controller->ProcessCapture()를 한다.
modules/audio_processing/aec3/echo_canceller3.cc
EchoCanceller3::ProcessCapture() -> ProcessCaptureFrameContent() 가 호출 되고
Frame_blocker에서 capture block을 추출 해 // 추정
block_processor->ProcessCapture() 를 진행한다.
aec3_common.h 에서 kBlockSize = kFFTLengthBy2 = 256; 으로 설정하면
echo_remover -> ProcessCapture() 부분에서 x ,y 를 받아오는 부분이 있고 이부분에서 256개씩 받아올 것이다.
그다음 echo_remover에 overlap을 시킬수 있는 것을 만들고
istft 를 해주는 것을 돌려
float 형태의 output을 출력해면 될 것이다.
aec 부분은 빼고 fft -> overlap -> ifft -> overlap -> bypass 되는지 확인 해보면 수월할듯.
'WebRTC' 카테고리의 다른 글
SoX 명령어 cheat sheet (0) | 2020.07.22 |
---|---|
aec_dump 관련 내용 (0) | 2020.07.16 |
chromium echo cancellation 테스트 (0) | 2020.06.05 |
chromium 빌드하기 (0) | 2020.06.03 |
OverView (0) | 2020.06.03 |