API:ALSA

구차니의 잡동사니 위키
이동: 둘러보기, 찾기

Advanced Linux Sound Architecture

리눅스에서 사운드 카드를 제어하기 위한 API이다.


목차

용어

  • frame - 한번의 샘플링으로 얻어지는 데이터의 양. sampling depth(8/16/24bit 로 영향을 받는다)
  • period - 하드웨어 인터럽트로 받아지는 버퍼로 recording latency에 영향을 미침
  • buffer - 커널/드라이버에서 관리되는 버퍼로 playback latency에 영향을 미침
  • usec - micro second. 1/1000 초
  • sampling rate - 음원을 저장하는 시간 주기 단위. 44100Hz / 48000 Hz 등이 주로 사용됨
  • sampling - 음원을 저장하는 데이터의 정밀도 16bit를 주로 사용하며 고급사양에서는 24bit를 사용한다.
  • channel - 음원의 갯수. 일반적으로 스테레오는 L/R 채널 2개로 구성된다.


약어

  • PCM - Pulse Code Modulate


계산

sampling bits per second(bps) = channel(N) * sampling rate(Hz) * sampling(bit)

tradeoff

buffer / period 는 latency에 비례하며, cpu 사용률과는 반비례 한다.

즉, cpu 점유율을 낮추기 위해서는 latency가 상승하게 된다.


proc filesystem

$ tree /proc/asound/
/proc/asound/
├── Generic -> card1
├── Intel -> card0
├── card0
│   ├── codec#2
│   ├── id
│   ├── oss_mixer
│   ├── pcm0c
│   │   ├── info
│   │   ├── oss
│   │   └── sub0
│   │       ├── hw_params
│   │       ├── info
│   │       ├── prealloc
│   │       ├── prealloc_max
│   │       ├── status
│   │       └── sw_params
│   └── pcm0p
│       ├── info
│       ├── oss
│       └── sub0
│           ├── hw_params
│           ├── info
│           ├── prealloc
│           ├── prealloc_max
│           ├── status
│           └── sw_params
├── card1
│   ├── codec#0
│   ├── id
│   ├── oss_mixer
│   └── pcm3p
│       ├── info
│       └── sub0
│           ├── hw_params
│           ├── info
│           ├── prealloc
│           ├── prealloc_max
│           ├── status
│           └── sw_params
├── cards
├── devices
├── hwdep
├── modules
├── oss
│   ├── devices
│   └── sndstat
├── pcm
├── seq
│   ├── clients
│   ├── drivers
│   ├── oss
│   ├── queues
│   └── timer
├── timers
└── version


SALSA

Small ALSA 는 임베디드용으로 함수를 inline으로 처리하고 system call을 이용해 직접 호출하는 식으로

ALSA에 비해 경량화 되고 간소화된 ALSA library이다.



외부링크

개인 도구
이름공간

변수
행위
둘러보기
도구모음