2017-09-06 19 views
0

REMOTE_SUBMIX를 사용하여 기기에서 오디오를 녹음하는 앱을 작성 중입니다. 이 PAGE에 따르면,STREAM_SYSTEM을 REMOTE_SUBMIX에서 제외하는 방법

특정 스트림 STREAM_RING, STREAM_ALARM 및 STREAM_NOTIFICATION 포함한 원격 서브 믹스로부터 배제되는 것을 말한다. 이러한 스트림은 평소처럼 계속 로컬로 제공됩니다.

이제 STREAM_SYSTEM도 제외하고 싶지만이 정책/전략이 AOSP 소스 코드 또는 모든 구성 파일에서 정의 된 위치를 찾을 수 없습니다.

아무도 그것에 대해 어떤 단서를 알고 있습니까? 고마워.

답변

1

audiopolicy 서비스 코드에 있습니다 (매개 변수 프레임 워크를 기반으로하는 라우팅 코드를 사용하는 Intel 장치에 있지 않은 경우 구성 파일에 있음).

난 당신이 관심있는 코드가 여기에있다 생각 :

https://android.googlesource.com/platform/frameworks/av/+/android-8.0.0_r1/services/audiopolicy/enginedefault/src/Engine.cpp#477

audiopolicy이 방식으로 작동합니다 : 먼저이 Engine::getStrategyForStream 함수를 사용하여 스트림에 "전략"을 찾아, 다음이를 선택하는 Engine::getDeviceForStrategyInt로 전환 이 전략을위한 장치.

모두 STREAM_SYSTEMSTREAM_MUSIC이 같은 STRATEGY_MEDIA를 사용하는 것이 보인다는 시스템 사운드를 배제하지만, 원격 서브 믹스에 음악 재생를 마칠 경우

https://android.googlesource.com/platform/frameworks/av/+/android-8.0.0_r1/services/audiopolicy/enginedefault/src/Engine.cpp#180

그래서 당신이 뭔가를 변경해야합니다.

+0

정말 감사합니다. 이것은 제가 찾고있는 것에 가깝습니다. 나는이 질문을 올렸을 때 engine.cpp를 알아 차렸다. 어떤 설정 파일을 수정해야하는지 지적 해 주시겠습니까? RING과 ALARM이 STRATEGY_SONIFICATION에 속하고 NOTIFICATION이 STRATEGY_SONIFICATION_RESPECTFUL에 속한 것을 보았습니다. 이 두 가지는 remote_submix에서 혼합되지 않습니다. 이 engine.cpp를 변경하고 STREAM_SYSTEM을 STRATEGY_SONIFICATION으로 이동시켜야합니까? – Robin

+0

내가 말했듯이 인텔이 만든 장치가 아니라면 설정 파일에 있지 않습니다. 예, 당신은 그걸로 시작해서 당신이 기대하는대로 작동하는지, 그리고 무엇인가를 망가뜨릴 지 여부를 볼 수 있습니다. 불행히도, 시도하기 전에 아이디어가 효과가 있을지 말하기 어렵습니다. –

+0

나는 전략을 바꾸기 위해 engine.cpp를 수정하려고했고, 타겟 보드의 libaudiopolicyenginedefault.so를 교체하려고 시도했다. 내가 추가 한 디버그 로그를 보았지만 여전히 문제를 해결하지 못합니다. 잠재적 인 이유에 대한 어떤 생각? – Robin