Android volume / Audio HAL / Audio policy / Camera
media/java/android/media/AudioService.java
frameworks/av/services/audiopolicy/AudioPolicyManager.cpp
d3-androidsystemdevelopment-170430142255.pdf
Implement interfaces 는 audio.h 와 audio_effect.h 에 기술되어있다.
그리고 audio policy configuration file 을 생성해야 하는데 여기에는 so 라이브러리안의 HAL 패키지와 audio 토폴로지의 구현을 기술한다.
audio gain control, noise suppression 같은 pre-processing 효과의 configure.
누가에서 audio policy 가 xml 베이스로 변경된다. (선택가능)
새로운 audio policy config file 은 audio_policy_configuration.xml 이다.
위치는 /system/etc/
빌드 옵션에서 USE_XML_AUDIO_POLICY_CONF := 1 이면 xml 을 쓴다.
구버전은 audio_policy.conf 이다. 이것은 deprecated 다.
위치는 device/<company>/<device>/audio/audio_policy.conf 이다.
예 device/samsung/tuna/audio/audio_policy.conf 다.
xml 파일은 다른 폴더로 부터 xi:include 로 포함될수있다.
예 : <xi:include href="a2dp_audio_policy_configuration.xml">
A2DP : a2dp_audio_policy_configuration.xml
Reroute submix : rsubmix_audio_policy_configuration.xml
USB : usb_audio_policy_configuration.xml
audio_policy.conf 의 AUDIO_DEVICE_IN_BUILTIN_MIC 나 AUDIO_DEVICE_IN_BACK_MIC 이런것이
MediaRecorder.AudioSource.CAMCORDER 이런데 연결 되게 하려면
frameworks/av/services/audiopolicy/AudioPolicyManager.cpp 여기에서 처리해야 한다.
안드로이드에서 volume config 같은것도 xml을 이용하게 되면서 참조하는 부분이 변경되었다.
● Create a device/<company>/<device>/audio directory to
contain your library's source files.
● Create an Android.mk file to build the shared library
● Make file shall contain
– LOCAL_MODULE := audio.primary.<device>
● Create device.mk (see rpi3.mk in device/brcm/rpi/ directory)
● Default pre-processing effects applied for each AudioSource are specified
in the /system/etc/audio_effects.conf file
● To apply custom effects for every AudioSource, create a
/system/vendor/etc/audio_effects.conf file and specify the pre-processing
effects to turn on
참조 : https://zhuanlan.zhihu.com/p/30671012
codec MIC与USB camera MIC录音音频源选择说明:
1、选择录音不同的音频源可以指定以下类型:
(1)类型一:MediaRecorder.AudioSource.MIC 选择的是codec MIC音频源
(2)类型二:MediaRecorder.AudioSource.CAMCORDER 选择的是USB camera MIC音频源
...........
2、例如:
mMediaRecorder = new MediaRecorder();
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); //使用codec MIC音频源
或者:
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER); //使用USB camera MIC音频源
也可以使用:
//选择MediaRecorder.AudioSource.MIC或者MediaRecorder.AudioSource.CAMCORDER类型
new AudioRecord(MediaRecorder.AudioSource.MIC, frequency, channelConfiguration, audioEncoding, bufferSize);
3、Android源码AudioPolicyManager.cpp添加录音设备
路径:frameworks\av\services\audiopolicy\AudioPolicyManager.cpp
位置:audio_devices_t AudioPolicyManager::getDeviceForInputSource(audio_source_t inputSource)
在相关switch下添加对应是录设备,例如添加USB audio device:
case AUDIO_SOURCE_CAMCORDER:
ALOGD("Enter case:AUDIO_SOURCE_CAMCORDER");
if (availableDeviceTypes & AUDIO_DEVICE_IN_BACK_MIC) {
device = AUDIO_DEVICE_IN_BACK_MIC;
+ } else if (availableDeviceTypes & AUDIO_DEVICE_IN_USB_DEVICE) {
+ device = AUDIO_DEVICE_IN_USB_DEVICE;
} else if (availableDeviceTypes & AUDIO_DEVICE_IN_BUILTIN_MIC) {
device = AUDIO_DEVICE_IN_BUILTIN_MIC;
}
break;
三星S5P 6818开发板录音类型选择方法,友坚科技专注于三星平台产品的研发,是三星在中国最具实力的方案公司。公司主打的三星平板电脑方案销量,连续多年稳居第一。公司定位于中高端产品的研发,具有多年的嵌入式产品研发经验;基于三星 A15-Exynos5260/5410/5250、A53_S5P6818、A9-S5P4418、A9-Exynos 4412、A8-S5PV210、ARM11-S3C6410、ARM9-S3C2416 等处理器,开发了系列化的产品,为客户提供了全面的产品选择及专业化的量身定制 MID 解决方案。友坚恒天科技服务于国内外平板电脑品牌商,并为行业客户提供一站式的解决方案;在为客户打造最具竞争力优势的产品的同时,也实现了自身的价值。
'Android' 카테고리의 다른 글
Android system property 개수 (0) | 2018.06.04 |
---|---|
Android 4.4 볼륨 조정 프로세스 분석 (0) | 2018.03.13 |
Android log 추출 (0) | 2018.01.03 |