기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

망고210 보드를 사용하고 있습니다.


1. ALSA library와 Android Audio HAL부분에 대해서 보고 있는데 아래의 내용에 대한 원인을 알고 계시는 분 있나요?

2. /system/etc/asound.conf 파일은 어떻게 설정 되는 것인가요?



어플에서 Speaker 볼륨을 조절하기 위해서 AudioFlinger를 조절하기 위해서 setMasterVolume을 사용을 하려고 합니다. AudioSystem 서비스에서 setStreamVolume -> setMasterVolume으로 조절을 하였습니다.

HAL부분(./external/libaudio/AudioHardwareALSA.cpp)에 있는 setMasterVolume()에서 alsa-api를 사용하지 못합니다.


----------------------------------------------------------------------------

status_t ALSAMixer::setMasterVolume(float volume)
{
    mixer_info_t *info = mixerMasterProp[SND_PCM_STREAM_PLAYBACK].mInfo;
    if (!info || !info->elem) return INVALID_OPERATION;

    long minVol = info->min;
    long maxVol = info->max;

    // Make sure volume is between bounds.
    long vol = minVol + volume * (maxVol - minVol);
    if (vol > maxVol) vol = maxVol;
    if (vol < minVol) vol = minVol;

    info->volume = vol;
    snd_mixer_selem_set_playback_volume_all (info->elem, vol);

    return NO_ERROR;
}

----------------------------------------------------------------------------

원인을 알수가 없어서 아래 부분의 PCM->Playback으로 변경을 하여 alsa-api를 사용할 수 있습니다.


static alsa_properties_t
mixerMasterProp[SND_PCM_STREAM_LAST+1] = {
    { ROUTE_ALL, "alsa.mixer.playback.master",  "PCM",     NULL},
    { ROUTE_ALL, "alsa.mixer.capture.master",   "Capture", NULL}
};



아래 log는 PCM으로 설정된 경우 입니다.


D/AudioHardwareALSA( 2000): Mixer: element name: 'Headphone'
D/AudioHardwareALSA( 2000): Mixer: element name: 'Playback'
D/AudioHardwareALSA( 2000): Mixer: element name: '3D'
D/AudioHardwareALSA( 2000): Mixer: element name: 'ALC Attack'
D/AudioHardwareALSA( 2000): Mixer: element name: 'ALC Decay'
D/AudioHardwareALSA( 2000): Mixer: element name: 'ALC Hold Time'
D/AudioHardwareALSA( 2000): Mixer: element name: 'ALC Max Gain'
D/AudioHardwareALSA( 2000): Mixer: element name: 'ALC Min Gain'
D/AudioHardwareALSA( 2000): Mixer: element name: 'ALC Target'
D/AudioHardwareALSA( 2000): Mixer: element name: 'Left Output Mixer Boost Bypass'
D/AudioHardwareALSA( 2000): Mixer: element name: 'Left Output Mixer LINPUT3'
D/AudioHardwareALSA( 2000): Mixer: element name: 'Noise Gate Threshold'
D/AudioHardwareALSA( 2000): Mixer: element name: 'Right Output Mixer Boost Bypass'
D/AudioHardwareALSA( 2000): Mixer: element name: 'Right Output Mixer RINPUT3'
D/AudioHardwareALSA( 2000): Mixer: element name: 'Speaker'
D/AudioHardwareALSA( 2000): Mixer: element name: 'Speaker AC'
D/AudioHardwareALSA( 2000): Mixer: element name: 'Speaker DC'
D/AudioHardwareALSA( 2000): Mixer: master 'PCM' not found.
D/AudioHardwareALSA( 2000): Mixer: route 'Earpiece' not found.
D/AudioHardwareALSA( 2000): Mixer: route 'Speaker' found.
D/AudioHardwareALSA( 2000): Mixer: route 'Bluetooth' not found.
D/AudioHardwareALSA( 2000): Mixer: route 'Headphone' found.
D/AudioHardwareALSA( 2000): Mixer: route 'Bluetooth A2DP' not found.
D/AudioHardwareALSA( 2000): Mixer: element name: 'Playback'
D/AudioHardwareALSA( 2000): Mixer: element name: 'Capture'
D/AudioHardwareALSA( 2000): Mixer: master 'Capture' found.
D/AudioHardwareALSA( 2000): Mixer: route 'Capture' found.
D/AudioHardwareALSA( 2000): Mixer: route '' not found.
D/AudioHardwareALSA( 2000): Mixer: route 'Bluetooth Capture' not found.
D/AudioHardwareALSA( 2000): Mixer: route 'Capture' found.
D/AudioHardwareALSA( 2000): Mixer: route 'Bluetooth A2DP Capture' not found.
D/AudioHardwareALSA( 2000): mixer initialized.
D/AudioHardwareInterface( 2000): setMode(NORMAL)


고도리

2012.02.08 12:11:44
*.127.19.87

음.....저도 일일이 소스를 보면서 비교해봐야 답을 할 수 있을 듯 합니다만(현재......집입니다...ㅠ.ㅠ)


1. asound.conf 는 주로 audio 경로 설정 혹은 시나리오를 지정할 때 사용합니다. mixer 세팅 부분이 있는지는 다시 함 봐야겠네요.


2. static alsa_properties_t

mixerMasterProp[SND_PCM_STREAM_LAST+1] = {
    { ROUTE_ALL, "alsa.mixer.playback.master",  "PCM",     NULL},
    { ROUTE_ALL, "alsa.mixer.capture.master",   "Capture", NULL}
};


의 내용을 이용해서 alsa mixer를 제어하게 되어 있는데, PCM이 동작하지 않고, Playback이 동작한다는 얘기는 alsa driver,의 구성이 alsa hal과 맞지 않는다는 것입니다.


3. alsa driver와 alsa hal과의 관계는 alsa hal이 alsa driver를 이용하는 구조입니다.


4. 해서 android에서는 alsa hal에 맞춰서 alsa driver를 구현해 주는게 걱정을 더는 방법 중 하나입니다.



List of Articles
번호 제목 글쓴이 날짜 조회 수
» Android - ALSA HAL 관련 문의 [1] 새희망 2012-02-08 1870
5167 ioremap에 대해서 ^^; 문의가 있습니다. file [2] 혜민아빠 2012-02-07 1368
5166 안드로이드에서 nfs 서버로 마운트 가능한가요? [2] 문종섭 2012-02-06 1733
5165 부트로더 관련 질문+임베디드드려요! 많은 답변 부탁드립니다. [3] 조동히 2012-02-06 1221
5164 안드로이드 부팅시 커널에서 다음과 같은 메시지를 보네주는데요.. [1] 훌러덩 2012-02-05 875
5163 Emulator kernel 에 insmod 불가 현상 [3] 2012 2012-02-04 1310
5162 커널 제작시에 디바이스 드라이버를 포함 시키는 방법에 대해서 문의... file [1] 혜민아빠 2012-02-03 1608
5161 s5pv210에 아이스크림샌드위치 포팅 문제 [4] 봉이 2012-02-03 2147
5160 android와 gpu에 관해서.. [4] 박수민 2012-02-03 1244
5159 odroid-s 질문입니다 ㅠㅠ 포팅에 관하여... [8] 하루천재 2012-02-03 1134
5158 가장 저렴하게 리눅스를 돌릴수 있는 CPU? [3] 권오혁 2012-02-03 1161
5157 오드로이드7 센서에 대해서.. [1] 조침철 2012-02-02 1285
5156 QT 라이브러리에서 Alignment Trap에 관한 질문입니다. iruis 2012-02-01 1191
5155 V210 보드 셋팅 메뉴얼 및 개발 관련 파일좀 올려 주세요~ [1] 김수기 2012-02-01 917
5154 Switched to Read-Only in ubifs rootfs.. Simba444 2012-02-01 1017
5153 오드로이드T에 허니컴을 올리는 방법? [3] trumpetYK 2012-01-31 1367
5152 Aesop V210 보드에서 MAC 어드레스 변경 가능한가요? (재등록) [3] Ike 2012-01-29 1557
5151 오리겐보드 망고보드 [2] 흠흠좋군 2012-01-28 2068
5150 Aesop V210 보드에서 MAC 어드레스 변경 가능한가요? [4] Ike 2012-01-28 1424
5149 S5PV210 의 WINCE6.5 BSP가 삼성에서 정식지원 되는지 알수있나... [1] 정철진 2012-01-27 1419

사용자 로그인