2/26/2016

Audio-ALSA Playback & Capture Flow

1. ALSA의 기본 API  

DM368은 TI에서 제공하는 Audio Guide는 없지만 구조는 거의 동일하다.
TI 제공하는 Audio는  기본 구조는 동일하지만, CPU에따라 EVM에 따라 조금씩 다르다.
하지만, OMAP인 경우 기본구조와 다르게 Audio 구조가 복잡하지만, 요즘은 거의 다 ALSA로 기반으로 하므로 아래와 같이 ALSA의 API들을 알아두록하자. 

  • Audio 관련 부분 전체 Index
TI에서 제공해주는 Audio 관련 ALSA Guide로 현재 AM38xxx 와 DM84xx 를 위해서 변경사항이 있는지 확인만 하자 

  • ALSA Common API
ALSA의 일반적인 API로 아래 함수명과 설명을 보면 쉽게 사용법이 짐작이 간다. 
관련 세부내용들은 생략하도록 하겠다. 
Commonly Used APIs
NameDescription
snd_pcm_openOpens a PCM stream
snd_pcm_closeCloses a previously opened PCM stream
snd_pcm_hw_params_anyFill params with a full configuration space for a PCM
snd_pcm_hw_params_test_ <>Test the availability of important parameters like number of channels, sample rate etc. For e.g. snd_pcm_hw_params_test_format, snd_pcm_hw_params_test_rate etc.
snd_pcm_hw_params_set_ <>Set the different configuration parameters. For e.g. snd_pcm_hw_params_set_format, snd_pcm_hw_params_set_rate etc.
snd_pcm_hw_paramsInstall one PCM hardware configuration chosen from a configuration space
snd_pcm_writeiWrite interleaved frames to a PCM
snd_pcm_readiRead interleaved frames from a PCM
snd_pcm_preparePrepare PCM for use
snd_pcm_dropStop a PCM dropping pending frames
snd_pcm_drainStop a PCM preserving pending frames


아래의 ALSA의 Playback or Capture도 간단하게 짜기 싫다면, ALSA Tool을 간단하게 이용하도록하자. 

1.1 ALSA의 PLAYBACK FLOW


ALSA를 이용하여 기본적으로 Playback하는 flow로 그리 어렵지 않으며 거의 다른 일반 Linux System Call과 거의 유사하다. 

  1. Playback Mode로 Open
  2. hw parameter 관련설정 (format/acess type/ sample rate/ channel )
  3. write로 재생시작 


1.2 ALSA 의 CAPTURE FLOW


상위와 동일 
  1. Capture Mode로 Open
  2. hw parameter 관련설정 (format/acess type/ sample rate/ channel )
  3. read로 녹음시작 


관련내용출처