6/22/2012

qualcomm msm7227 Audio device flow in Android part

Reagrding audio device flow, we can find some document for AMSS such as 80-VH828-1.

However, there is few code flow document for MSM7227 Android regarding device handling. Here shows device code flow in Android part.



Brief flow fordevice is "Application --> Libaudio --> qdsp5 --> QDSP or AMSS(ARM9)"



There are four parts for device handling.

1) Audio routing : do_routing / Android

2) Audio Tuning : AudioFilter.csv / Android

3) Voice Tuning : voccal.c / AMSS

4) ADIE setting : msm_aud.h / AMSS



Android source is starting from 'do_routing' in AudioHardware.cpp

There are two paths in audio routing function. One is for ADSP and the other is for AMSS.



* ADSP path

1) msm72xx_enable_audpp() : open device 'msm_pcm_ctl' to handle AFE

sending filter parameters through ioctl().

2) audpp_ioctl in /qdsp5/audio_out.c : msms_adsp_write() is sending audio filter parameters.

ex) MBADRC setting is called by audpp_dsp_set_mbadrc().



* AMSS path

1) doAudioRouteOrMute() : open device 'msm_snd' to handle AFE

do_route_audio_rpc() is sending routing parameter through ioctl for RPC.

2) snd_ioctl in qdsp5/snd.c : msms_rpc_call is called to send the paramters to AMSS

ex) SND DEVICE

volume table, ADIE configuration is defined in AMSS with SND_DEVICE id from Android.

1 comment:

  1. Hi, I'm a noob tryin to understand your post.

    I have few questions regarding audio routing may be you might have some idea.

    When we play a file on device player /dev/msm_pcm_out then audio is routed to dsp decoder-> earpiece/loudspkr...

    And when a GSM call is received, the call audio path is earpiece/loudspkr.

    now the question, is it possible to cross connect audio player path to audio call path.. i;e merging two signals on the line instead of playing audio locally on IO.

    TIA
    br

    ReplyDelete