media/java/android/media/AudioService.java

frameworks/av/services/audiopolicy/AudioPolicyManager.cpp


d3-androidsystemdevelopment-170430142255.pdf


참조 : https://www.slideshare.net/EmertxeSlides/embedded-android-system-development-part-iii-audio-video-hal

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 解决方案。友坚恒天科技服务于国内外平板电脑品牌商,并为行业客户提供一站式的解决方案;在为客户打造最具竞争力优势的产品的同时,也实现了自身的价值。

Posted by Real_G