Linux API/alsa2014. 11. 3. 09:06
ALSA 구조(?)상

플레이시에는
사운드 카드로는 링버퍼에 값을 쌓아두고 커널/드라이버에서 일정주기 마다 데이터를 넣어주도록 되어있고

녹음시에는
사운드 카드에서 인터럽트 주기마다 데이터를 받아오도록 되어 있다.

물론 인터럽트가 많아질수록 지연은 짧아지겠지만
인터럽트로 인한 컨텍스트 스위칭의 부하가 많아 지므로 다른 프로세서들이 사용할 가용 cpu 는 줄어들게 되기에
음악 재생시 버퍼 크기 늘림으로 cpu 점유율이 낮아진 것을 봐서
벤치마크 내용과는 달리 임베디드 시스템에서의 적용은 쉽지 않을 것으로 보인다.




Audio Latency
    Programmed delay until data is processed
        Playback latency: buffer size
        Recording latency: period size
    Least full-duplex latency: period size x 2

System Latency
    Delay of system response
        Interrupt -> Wake-up
    Must not greater than buffer size
        Buffer underflow, overflow

[링크 : http://www.alsa-project.org/~tiwai/suselabs2003-audio-latency.pdf
[링크 : http://www.alsa-project.org/main/index.php/Low_latency_howto]

---
2014.11.13
[링크 : https://wiki.kldp.org/HOWTO/html/MIDI-HOWTO/x88.html
[링크 : http://www.gardena.net/benno/linux/audio/]

 http://elinux.org/images/8/82/Elc2011_lorriaux.pdf
 http://pyalsaaudio.sourceforge.net/terminology.html

'Linux API > alsa' 카테고리의 다른 글

ALSA 드라이버 관련  (0) 2014.11.17
alsa 함수 - size / time  (0) 2014.11.17
SALSA - Small ALSA  (0) 2014.10.24
alsa + ffmpeg 벤치마크(?)  (0) 2014.10.23
alsa 패키지 종류  (0) 2014.10.21
Posted by 구차니