Suche senden
Hochladen
Android audio system(audio_hardwareinterace)
•
5 gefällt mir
•
4,954 views
F
fefe7270
Folgen
Technologie
Melden
Teilen
Melden
Teilen
1 von 13
Empfohlen
Android audio system(audioflinger)
Android audio system(audioflinger)
fefe7270
Android audio system(audioplicy_service)
Android audio system(audioplicy_service)
fefe7270
Android Audio System
Android Audio System
Yi-Hsiang Huang
Android audio system(pcm데이터출력준비-서비스서버)
Android audio system(pcm데이터출력준비-서비스서버)
fefe7270
Embedded Android : System Development - Part III (Audio / Video HAL)
Embedded Android : System Development - Part III (Audio / Video HAL)
Emertxe Information Technologies Pvt Ltd
Android audio system(audiopolicy_manager)
Android audio system(audiopolicy_manager)
fefe7270
Embedded Android : System Development - Part IV
Embedded Android : System Development - Part IV
Emertxe Information Technologies Pvt Ltd
Embedded Android : System Development - Part II (HAL)
Embedded Android : System Development - Part II (HAL)
Emertxe Information Technologies Pvt Ltd
Empfohlen
Android audio system(audioflinger)
Android audio system(audioflinger)
fefe7270
Android audio system(audioplicy_service)
Android audio system(audioplicy_service)
fefe7270
Android Audio System
Android Audio System
Yi-Hsiang Huang
Android audio system(pcm데이터출력준비-서비스서버)
Android audio system(pcm데이터출력준비-서비스서버)
fefe7270
Embedded Android : System Development - Part III (Audio / Video HAL)
Embedded Android : System Development - Part III (Audio / Video HAL)
Emertxe Information Technologies Pvt Ltd
Android audio system(audiopolicy_manager)
Android audio system(audiopolicy_manager)
fefe7270
Embedded Android : System Development - Part IV
Embedded Android : System Development - Part IV
Emertxe Information Technologies Pvt Ltd
Embedded Android : System Development - Part II (HAL)
Embedded Android : System Development - Part II (HAL)
Emertxe Information Technologies Pvt Ltd
Android Things : Building Embedded Devices
Android Things : Building Embedded Devices
Emertxe Information Technologies Pvt Ltd
Embedded Android : System Development - Part II (Linux device drivers)
Embedded Android : System Development - Part II (Linux device drivers)
Emertxe Information Technologies Pvt Ltd
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Opersys inc.
Booting Android: bootloaders, fastboot and boot images
Booting Android: bootloaders, fastboot and boot images
Chris Simmonds
Android audio system(오디오 플링거 서비스 초기화)
Android audio system(오디오 플링거 서비스 초기화)
fefe7270
Android media framework overview
Android media framework overview
Jerrin George
Embedded Android : System Development - Part I
Embedded Android : System Development - Part I
Emertxe Information Technologies Pvt Ltd
Android booting sequece and setup and debugging
Android booting sequece and setup and debugging
Utkarsh Mankad
Embedded Android : System Development - Part III
Embedded Android : System Development - Part III
Emertxe Information Technologies Pvt Ltd
U-Boot presentation 2013
U-Boot presentation 2013
Wave Digitech
Audio Drivers
Audio Drivers
Anil Kumar Pugalia
Android audio system(오디오 출력-트랙생성)
Android audio system(오디오 출력-트랙생성)
fefe7270
Learning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device Driver
Nanik Tolaram
Understanding the Android System Server
Understanding the Android System Server
Opersys inc.
Android for Embedded Linux Developers
Android for Embedded Linux Developers
Opersys inc.
Learning AOSP - Android Booting Process
Learning AOSP - Android Booting Process
Nanik Tolaram
Android's HIDL: Treble in the HAL
Android's HIDL: Treble in the HAL
Opersys inc.
Linux Audio Drivers. ALSA
Linux Audio Drivers. ALSA
GlobalLogic Ukraine
Q4.11: Porting Android to new Platforms
Q4.11: Porting Android to new Platforms
Linaro
Android Booting Sequence
Android Booting Sequence
Jayanta Ghoshal
Android's Multimedia Framework
Android's Multimedia Framework
Opersys inc.
Android Audio & OpenSL
Android Audio & OpenSL
Yoss Cohen
Weitere ähnliche Inhalte
Was ist angesagt?
Android Things : Building Embedded Devices
Android Things : Building Embedded Devices
Emertxe Information Technologies Pvt Ltd
Embedded Android : System Development - Part II (Linux device drivers)
Embedded Android : System Development - Part II (Linux device drivers)
Emertxe Information Technologies Pvt Ltd
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Opersys inc.
Booting Android: bootloaders, fastboot and boot images
Booting Android: bootloaders, fastboot and boot images
Chris Simmonds
Android audio system(오디오 플링거 서비스 초기화)
Android audio system(오디오 플링거 서비스 초기화)
fefe7270
Android media framework overview
Android media framework overview
Jerrin George
Embedded Android : System Development - Part I
Embedded Android : System Development - Part I
Emertxe Information Technologies Pvt Ltd
Android booting sequece and setup and debugging
Android booting sequece and setup and debugging
Utkarsh Mankad
Embedded Android : System Development - Part III
Embedded Android : System Development - Part III
Emertxe Information Technologies Pvt Ltd
U-Boot presentation 2013
U-Boot presentation 2013
Wave Digitech
Audio Drivers
Audio Drivers
Anil Kumar Pugalia
Android audio system(오디오 출력-트랙생성)
Android audio system(오디오 출력-트랙생성)
fefe7270
Learning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device Driver
Nanik Tolaram
Understanding the Android System Server
Understanding the Android System Server
Opersys inc.
Android for Embedded Linux Developers
Android for Embedded Linux Developers
Opersys inc.
Learning AOSP - Android Booting Process
Learning AOSP - Android Booting Process
Nanik Tolaram
Android's HIDL: Treble in the HAL
Android's HIDL: Treble in the HAL
Opersys inc.
Linux Audio Drivers. ALSA
Linux Audio Drivers. ALSA
GlobalLogic Ukraine
Q4.11: Porting Android to new Platforms
Q4.11: Porting Android to new Platforms
Linaro
Android Booting Sequence
Android Booting Sequence
Jayanta Ghoshal
Was ist angesagt?
(20)
Android Things : Building Embedded Devices
Android Things : Building Embedded Devices
Embedded Android : System Development - Part II (Linux device drivers)
Embedded Android : System Development - Part II (Linux device drivers)
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Booting Android: bootloaders, fastboot and boot images
Booting Android: bootloaders, fastboot and boot images
Android audio system(오디오 플링거 서비스 초기화)
Android audio system(오디오 플링거 서비스 초기화)
Android media framework overview
Android media framework overview
Embedded Android : System Development - Part I
Embedded Android : System Development - Part I
Android booting sequece and setup and debugging
Android booting sequece and setup and debugging
Embedded Android : System Development - Part III
Embedded Android : System Development - Part III
U-Boot presentation 2013
U-Boot presentation 2013
Audio Drivers
Audio Drivers
Android audio system(오디오 출력-트랙생성)
Android audio system(오디오 출력-트랙생성)
Learning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device Driver
Understanding the Android System Server
Understanding the Android System Server
Android for Embedded Linux Developers
Android for Embedded Linux Developers
Learning AOSP - Android Booting Process
Learning AOSP - Android Booting Process
Android's HIDL: Treble in the HAL
Android's HIDL: Treble in the HAL
Linux Audio Drivers. ALSA
Linux Audio Drivers. ALSA
Q4.11: Porting Android to new Platforms
Q4.11: Porting Android to new Platforms
Android Booting Sequence
Android Booting Sequence
Andere mochten auch
Android's Multimedia Framework
Android's Multimedia Framework
Opersys inc.
Android Audio & OpenSL
Android Audio & OpenSL
Yoss Cohen
Android Multimedia Framework
Android Multimedia Framework
Picker Weng
Surface flingerservice(서피스 출력 요청 jb)
Surface flingerservice(서피스 출력 요청 jb)
fefe7270
08 android multimedia_framework_overview
08 android multimedia_framework_overview
Arjun Reddy
Android Tools for Qualcomm Snapdragon Processors
Android Tools for Qualcomm Snapdragon Processors
Qualcomm Developer Network
USB Host APIで遊んでみた
USB Host APIで遊んでみた
Makoto Yamazaki
Bluetooth Controlled High Power Audio Amplifier- Final Presentaion
Bluetooth Controlled High Power Audio Amplifier- Final Presentaion
Sagar Mali
Android Gadgets, Bluetooth Low Energy, and the WunderBar
Android Gadgets, Bluetooth Low Energy, and the WunderBar
relayr
Android Training (Media)
Android Training (Media)
Khaled Anaqwa
Android audio system(오디오 출력-트랙활성화)
Android audio system(오디오 출력-트랙활성화)
fefe7270
Camera camcorder framework overview(ginger bread)
Camera camcorder framework overview(ginger bread)
fefe7270
Surface flingerservice(서피스플링거서비스초기화 ics)
Surface flingerservice(서피스플링거서비스초기화 ics)
fefe7270
Surface flingerservice(서피스플링거서비스초기화)
Surface flingerservice(서피스플링거서비스초기화)
fefe7270
Surface flingerservice(그래픽 공유 버퍼 생성 및 등록)
Surface flingerservice(그래픽 공유 버퍼 생성 및 등록)
fefe7270
Surface flingerservice(서피스 플링거 연결 jb)
Surface flingerservice(서피스 플링거 연결 jb)
fefe7270
Surface flingerservice(서피스 상태 변경 jb)
Surface flingerservice(서피스 상태 변경 jb)
fefe7270
2016-08-20 01 Дмитрий Рабецкий, Сергей Сорокин. Опыт работы с Android Medi...
2016-08-20 01 Дмитрий Рабецкий, Сергей Сорокин. Опыт работы с Android Medi...
Омские ИТ-субботники
Andere mochten auch
(18)
Android's Multimedia Framework
Android's Multimedia Framework
Android Audio & OpenSL
Android Audio & OpenSL
Android Multimedia Framework
Android Multimedia Framework
Surface flingerservice(서피스 출력 요청 jb)
Surface flingerservice(서피스 출력 요청 jb)
08 android multimedia_framework_overview
08 android multimedia_framework_overview
Android Tools for Qualcomm Snapdragon Processors
Android Tools for Qualcomm Snapdragon Processors
USB Host APIで遊んでみた
USB Host APIで遊んでみた
Bluetooth Controlled High Power Audio Amplifier- Final Presentaion
Bluetooth Controlled High Power Audio Amplifier- Final Presentaion
Android Gadgets, Bluetooth Low Energy, and the WunderBar
Android Gadgets, Bluetooth Low Energy, and the WunderBar
Android Training (Media)
Android Training (Media)
Android audio system(오디오 출력-트랙활성화)
Android audio system(오디오 출력-트랙활성화)
Camera camcorder framework overview(ginger bread)
Camera camcorder framework overview(ginger bread)
Surface flingerservice(서피스플링거서비스초기화 ics)
Surface flingerservice(서피스플링거서비스초기화 ics)
Surface flingerservice(서피스플링거서비스초기화)
Surface flingerservice(서피스플링거서비스초기화)
Surface flingerservice(그래픽 공유 버퍼 생성 및 등록)
Surface flingerservice(그래픽 공유 버퍼 생성 및 등록)
Surface flingerservice(서피스 플링거 연결 jb)
Surface flingerservice(서피스 플링거 연결 jb)
Surface flingerservice(서피스 상태 변경 jb)
Surface flingerservice(서피스 상태 변경 jb)
2016-08-20 01 Дмитрий Рабецкий, Сергей Сорокин. Опыт работы с Android Medi...
2016-08-20 01 Дмитрий Рабецкий, Сергей Сорокин. Опыт работы с Android Medi...
Ähnlich wie Android audio system(audio_hardwareinterace)
Integrando sua app Android com Chromecast
Integrando sua app Android com Chromecast
Athila Henrique dos Santos
The unconventional devices for the Android video streaming
The unconventional devices for the Android video streaming
Matteo Bonifazi
망고100 보드로 놀아보자 18
망고100 보드로 놀아보자 18
종인 전
Developing natural user interface applications with real sense devices
Developing natural user interface applications with real sense devices
peteohanlon
System Calls.pptxnsjsnssbhsbbebdbdbshshsbshsbbs
System Calls.pptxnsjsnssbhsbbebdbdbshshsbshsbbs
ashukiller7
The unconventional devices for the video streaming in Android
The unconventional devices for the video streaming in Android
Alessandro Martellucci
Android For All The Things
Android For All The Things
Paul Trebilcox-Ruiz
XebiCon'17 : Faites chauffer les neurones de votre Smartphone avec du Deep Le...
XebiCon'17 : Faites chauffer les neurones de votre Smartphone avec du Deep Le...
Publicis Sapient Engineering
srgoc
srgoc
Gaurav Singh
CMU monitoring tool - proto
CMU monitoring tool - proto
Goutam Adwant
9 password security
9 password security
drewz lin
服务框架: Thrift & PasteScript
服务框架: Thrift & PasteScript
Qiangning Hong
MPI
MPI
ZongYing Lyu
Scmad Chapter13
Scmad Chapter13
Marcel Caraciolo
Os lab final
Os lab final
LakshmiSarvani6
Automating Analysis and Exploitation of Embedded Device Firmware
Automating Analysis and Exploitation of Embedded Device Firmware
Malachi Jones
망고100 보드로 놀아보자 15
망고100 보드로 놀아보자 15
종인 전
Lo Mejor Del Pdc2008 El Futrode C#
Lo Mejor Del Pdc2008 El Futrode C#
Juan Pablo
IOMX in Android
IOMX in Android
Raghavan Venkateswaran
Kinect v2 Introduction and Tutorial
Kinect v2 Introduction and Tutorial
Tsukasa Sugiura
Ähnlich wie Android audio system(audio_hardwareinterace)
(20)
Integrando sua app Android com Chromecast
Integrando sua app Android com Chromecast
The unconventional devices for the Android video streaming
The unconventional devices for the Android video streaming
망고100 보드로 놀아보자 18
망고100 보드로 놀아보자 18
Developing natural user interface applications with real sense devices
Developing natural user interface applications with real sense devices
System Calls.pptxnsjsnssbhsbbebdbdbshshsbshsbbs
System Calls.pptxnsjsnssbhsbbebdbdbshshsbshsbbs
The unconventional devices for the video streaming in Android
The unconventional devices for the video streaming in Android
Android For All The Things
Android For All The Things
XebiCon'17 : Faites chauffer les neurones de votre Smartphone avec du Deep Le...
XebiCon'17 : Faites chauffer les neurones de votre Smartphone avec du Deep Le...
srgoc
srgoc
CMU monitoring tool - proto
CMU monitoring tool - proto
9 password security
9 password security
服务框架: Thrift & PasteScript
服务框架: Thrift & PasteScript
MPI
MPI
Scmad Chapter13
Scmad Chapter13
Os lab final
Os lab final
Automating Analysis and Exploitation of Embedded Device Firmware
Automating Analysis and Exploitation of Embedded Device Firmware
망고100 보드로 놀아보자 15
망고100 보드로 놀아보자 15
Lo Mejor Del Pdc2008 El Futrode C#
Lo Mejor Del Pdc2008 El Futrode C#
IOMX in Android
IOMX in Android
Kinect v2 Introduction and Tutorial
Kinect v2 Introduction and Tutorial
Mehr von fefe7270
Surface flingerservice(서피스플링거서비스초기화 jb)
Surface flingerservice(서피스플링거서비스초기화 jb)
fefe7270
Surface flingerservice(서피스 플링거 연결 ics)
Surface flingerservice(서피스 플링거 연결 ics)
fefe7270
Surface flingerservice(서피스 상태 변경 및 출력 요청)
Surface flingerservice(서피스 상태 변경 및 출력 요청)
fefe7270
Surface flingerservice(서피스 플링거 연결)
Surface flingerservice(서피스 플링거 연결)
fefe7270
Stagefright recorder part1
Stagefright recorder part1
fefe7270
C++정리 스마트포인터
C++정리 스마트포인터
fefe7270
Android audio system(pcm데이터출력요청-서비스클라이언트)
Android audio system(pcm데이터출력요청-서비스클라이언트)
fefe7270
Mehr von fefe7270
(7)
Surface flingerservice(서피스플링거서비스초기화 jb)
Surface flingerservice(서피스플링거서비스초기화 jb)
Surface flingerservice(서피스 플링거 연결 ics)
Surface flingerservice(서피스 플링거 연결 ics)
Surface flingerservice(서피스 상태 변경 및 출력 요청)
Surface flingerservice(서피스 상태 변경 및 출력 요청)
Surface flingerservice(서피스 플링거 연결)
Surface flingerservice(서피스 플링거 연결)
Stagefright recorder part1
Stagefright recorder part1
C++정리 스마트포인터
C++정리 스마트포인터
Android audio system(pcm데이터출력요청-서비스클라이언트)
Android audio system(pcm데이터출력요청-서비스클라이언트)
Kürzlich hochgeladen
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
apidays
🐬 The future of MySQL is Postgres 🐘
🐬 The future of MySQL is Postgres 🐘
RTylerCroy
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
The Digital Insurer
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
Igalia
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
ThousandEyes
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
debabhi2
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
UK Journal
How to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
naman860154
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
Delhi Call girls
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
Enterprise Knowledge
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
Safe Software
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
Gabriella Davis
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
naman860154
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
Results
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
Anna Loughnan Colquhoun
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
Malak Abu Hammad
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
Khem
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
Antenna Manufacturer Coco
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
Enterprise Knowledge
Kürzlich hochgeladen
(20)
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
🐬 The future of MySQL is Postgres 🐘
🐬 The future of MySQL is Postgres 🐘
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
How to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
Android audio system(audio_hardwareinterace)
1.
안드로이드의 모든것 분석과
포팅 정리 Android Audio System (AudioHardware class) 박철희 1/10
2.
1.AudioHardware class 위치
및 역활 안드로이드의 모든것 분석과 포팅 정리 Application 역할: Framework Device control (play,stop,routing) Native Framework HAL Kernel 2/10
3.
2.AudioHardware class구조(msm7x30)
안드로이드의 모든것 분석과 포팅 정리 setParameters, getParameters openOutputStream, AudioHardwareInterface openOutputSession, setVoiceVolume , openInputStream setMode, setMasterVolume, openOutputStream, openOutputSession, AudioHardwareBase isModeInCall, isInCall openInputStream AudioStreamOut AudioHardware AudioStreamIn AudioStreamOutMSM72xx AudioStreamInMSM72xx AudioSessionOutMSM7xxx setParameters, setParameters, getParameters, getParameters, read // read audio buffer in from audio Write // write audio buffer to driver. driver Returns number of bytes written 3
4.
3.AudioHardware class 초기화
안드로이드의 모든것 분석과 포팅 정리 1)AudioHardware class AudioFlinger.cpp AudioFlinger::AudioFlinger() : BnAudioFlinger(), mAudioHardware(0), mFmEnabled(false), mMasterVolume(1.0f), mMasterMute(false), mNextUniqueId(1) { AudioHardwareInterface* mAudioHardware = AudioHardwareInterface::create(); … } AudioHardwareinterface.cpp AudioHardware.cpp(7x30) AudioHardwareInterface* AudioHardwareInterface::create() AudioHardware::AudioHardware() : { { hw = createAudioHardware(); control = } msm_mixer_open("/dev/snd/controlC0", 0); //장착된 device들을 가져와서 device_list 구조체에 넣는다.(소스 참조) AudioHardware.cpp(7x30) extern "C" AudioHardwareInterface* createAudioHardware(void) //이 device_list 는 device id를 구할 때 { 사용된다. return new AudioHardware(); } } 4/10
5.
3.AudioHardware class 초기화
안드로이드의 모든것 분석과 포팅 정리 2) AudioStreamOutMSM72xx AudioPolicyManagerBase.cpp AudioPolicyManagerBase::AudioPolicyManagerBase(AudioPolicyClientInterface *clientInterface) { … mHardwareOutput = mpClientInterface->openOutput(…); } AudioFlinger.cpp int AudioFlinger::openOutput { AudioStreamOut *output = mAudioHardware->openOutputStream(*pDevices,…) } AudioHardware.cpp(7x30) AudioStreamOut* AudioHardware::openOutputStream { … AudioStreamOutMSM72xx* out = new AudioStreamOutMSM72xx(); status_t lStatus = out->set(this, devices, format, channels, sampleRate); } AudioHardware.cpp(7x30) status_t AudioHardware::AudioStreamOutMSM72xx::set { if (pFormat) *pFormat = lFormat; if (pChannels) *pChannels = lChannels; if (pRate) *pRate = lRate; mDevices = devices; 5/10
6.
3.AudioHardware class 초기화
안드로이드의 모든것 분석과 포팅 정리 3) AudioStreamInMSM72xx AudioPolicyManagerBase.cpp audio_io_handle_t AudioPolicyManagerBase::getInput(…){ input = mpClientInterface->openInput(&inputDesc->mDevice,…); } AudioPolicyService.cpp audio_io_handle_t AudioPolicyService::openInput(…) { sp<IAudioFlinger> af = AudioSystem::get_audio_flinger(); return af->openInput(pDevices, pSamplingRate, (uint32_t *)pFormat, pChannels, acoustics); } int AudioFlinger::openInput(…) status_t AudioHardware::AudioStreamInMSM72xx::set { { … //각 입력되는 format에 맞게 AudioStreamIn *input = mAudioHardware-> mDevices, mFormat, mChannels 등을 설정 함. openInputStream(*pDevices,…); else if(*pFormat == AUDIO_HW_IN_FORMAT) } { .. mDevices = devices; AudioStreamIn* AudioHardware::openInputStream(…) mFormat = AUDIO_HW_IN_FORMAT; { mChannels = *pChannels; AudioStreamInMSM72xx* in = new AudioStreamInMSM72xx(); … status_t lStatus = in->set(this, devices, format, channels, sampleRate, acoustic_flags); } } 6/10
7.
4. AudioHardware class
method 분석 안드로이드의 모든것 분석과 포팅 정리 1) setVoiceVolume PhoneWindowManager.java handleVolumeKey(AudioManager.STREAM_VOICE_CALL, keyCode); void handleVolumeKey(int stream, int keycode) { audioService.adjustStreamVolume(stream, keycode == KeyEvent.KEYCODE_VOLUME_UP ? AudioManager.ADJUST_RAISE : AudioManager.ADJUST_LOWER,0); } AudioService.java public void adjustStreamVolume{ sendMsg(mAudioHandler, MSG_SET_SYSTEM_VOLUME, STREAM_VOLUME_ALIAS[streamType], SENDMSG_NOOP, 0, 0, streamState, 0); } public void handleMessage(Message msg) { case MSG_SET_SYSTEM_VOLUME: setSystemVolume((VolumeStreamState) msg.obj); break; } private void setSystemVolume(VolumeStreamState streamState){ setStreamVolumeIndex(streamState.mStreamType, streamState.mIndex); } private void setStreamVolumeIndex(int stream, int index) { AudioSystem.setStreamVolumeIndex(stream, (index + 5)/10); } 7/10
8.
4. AudioHardware class
method 분석 안드로이드의 모든것 분석과 포팅 정리 Android_media_AudioSystem.cpp android_media_AudioSystem_setStreamVolumeIndex(JNIEnv *env, jobject thiz, jint stream, jint index) { return check_AudioSystem_Command( AudioSystem::setStreamVolumeIndex(static_cast <AudioSystem::stream_type>(stream), index)); } AudioSystem.cpp status_t AudioSystem::setStreamVolumeIndex(stream_type stream, int index) { const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service(); if (aps == 0) return PERMISSION_DENIED; return aps->setStreamVolumeIndex(stream, index); } AudioPolicyService.cpp status_t AudioPolicyService::setStreamVolumeIndex() { return mpPolicyManager->setStreamVolumeIndex(stream, index); } AudioPolicyManagerBase.cpp status_t AudioPolicyManagerBase::setStreamVolumeIndex(){ status_t volStatus = checkAndSetVolume(stream, index, mOutputs.keyAt(i), mOutputs.valueAt(i)->device()); } status_t AudioPolicyManagerBase::checkAndSetVolume{ if (stream == AudioSystem::VOICE_CALL || stream == AudioSystem::BLUETOOTH_SCO) { mpClientInterface->setVoiceVolume(voiceVolume, delayMs); } 8/10
9.
4. AudioHardware class
method 분석 안드로이드의 모든것 분석과 포팅 정리 AudioPolicyService.cpp status_t AudioPolicyService::setVoiceVolume(float volume, int delayMs) { return mAudioCommandThread->voiceVolumeCommand(volume, delayMs); } status_t AudioPolicyService::AudioCommandThread::voiceVolumeCommand { command->mCommand = SET_VOICE_VOLUME; } bool AudioPolicyService::AudioCommandThread::threadLoop() { case SET_VOICE_VOLUME: { command->mStatus = AudioSystem::setVoiceVolume(data->mVolume); } AudioSystem.cpp status_t AudioSystem::setVoiceVolume(float value) { const sp<IAudioFlinger>& af = AudioSystem::get_audio_flinger(); if (af == 0) return PERMISSION_DENIED; return af->setVoiceVolume(value); } AudioFlinger.cpp status_t AudioFlinger::setVoiceVolume(float value) { status_t ret = mAudioHardware->setVoiceVolume(value); } 9/10
10.
4. AudioHardware class
method 분석 안드로이드의 모든것 분석과 포팅 정리 AudioHardware.cpp status_t AudioHardware::setVoiceVolume(float v) { if(msm_set_voice_rx_vol(vol)) { LOGE("msm_set_voice_rx_vol(%d) failed errno = %d",vol,errno); return -1; } } Hw.c(vendor/qcom…) { int msm_set_voice_rx_vol(int volume) { struct snd_ctl_elem_value val; val.id.numid = NUMID_VOICE_VOL; val.value.integer.value[0] = DIR_RX; val.value.integer.value[1] = volume; return msm_mixer_elem_write(&val); } } static int msm_mixer_elem_write(struct snd_ctl_elem_value *val) { rc = ioctl(control->fd, SNDRV_CTL_IOCTL_ELEM_WRITE, val); } 10/10
11.
4. AudioHardware class
method 분석 안드로이드의 모든것 분석과 포팅 정리 2) setVolume QwertyKeyListener.java public boolean onKeyDown{ return super.onKeyDown(view, content, keyCode, event); } phoneWindow.java protected boolean onKeyDown{ audioManager.adjustSuggestedStreamVolume( keyCode == KeyEvent.KEYCODE_VOLUME_UP ? AudioManager.ADJUST_RAISE : AudioManager.ADJUST_LOWER, mVolumeControlStreamType, AudioManager.FLAG_SHOW_UI | AudioManager.FLAG_VIBRATE);} AudioManager.java public void adjustSuggestedStreamVolume(int direction, int suggestedStreamType, int flags) { IAudioService service = getService(); try { service.adjustSuggestedStreamVolume(direction, suggestedStreamType, flags); } catch (RemoteException e) { Log.e(TAG, "Dead object in adjustVolume", e); } } 11/10
12.
4. AudioHardware class
method 분석 안드로이드의 모든것 분석과 포팅 정리 AudioService.java public void adjustSuggestedStreamVolume{ adjustStreamVolume(streamType, direction, flags); } public void adjustStreamVolume{ sendMsg(mAudioHandler, MSG_SET_SYSTEM_VOLUME, STREAM_VOLUME_ALIAS[streamType], SENDMSG_NOOP, 0, 0, streamState, 0); AudioService.java public void handleMessage(Message msg) { switch (baseMsgWhat) { case MSG_SET_SYSTEM_VOLUME: setSystemVolume((VolumeStreamState) msg.obj); break; } AudioFlinger의 setStreamVolume을 호출해서 Volume setting함. status_t AudioFlinger::PlaybackThread::setStreamVolume(int stream, float value) { mStreamTypes[stream].volume = value; } AudioFlinger::MixerThread::threadLoop()에서 prepareTracks_l 이 수행 됨. 12/10
13.
4. AudioHardware class
method 분석 안드로이드의 모든것 분석과 포팅 정리 uint32_t AudioFlinger::MixerThread::prepareTracks_l { float typeVolume = mStreamTypes[track->type()].volume; setStreamVolume 에서 설정한 volume값을 가져와서 //volume 값 설정 float v = masterVolume * typeVolume; vl = (uint32_t)(v * cblk->volume[0]) << 12; vr = (uint32_t)(v * cblk->volume[1]) << 12; param = AudioMixer::VOLUME; //AudioMixer.cpp의 setparameter에서 처리 해줌. mAudioMixer->setParameter(param, AudioMixer::VOLUME0, (void *)left); mAudioMixer->setParameter(param, AudioMixer::VOLUME1, (void *)right); mAudioMixer->setParameter(param, AudioMixer::AUXLEVEL, (void *)aux); … } 13/10