도와주세요!!
안녕하세요...
현제 Audio Codec(TLV320AIC23)을 통하여 음성을 저장하려고 하는데요.
지금 Audio codec은 잡았는데요. 막상 이걸 어떻게 써야 할지를 모르겠어서요..
/dev/sound/에 Audio codec의 디파이스 파일을 만들어 줘야 할것 같은데.
Target 장비에 /sys/devices/platform/soc-audio/sound/card0/controlC0, mixer, pcmC0D0c, pcmC0D0p이렇게 파일이 생겼습니다.
이것들을 전부다 /dev/sound/에 mknod를 통하여 device file을 생성을 해주면 되는 건지요.?
이렇게 해서 device파일을 생성하면 이것을 그냥 open()을 하여 read()를 하면 읽으면 음성 데이터를 받을 수 있는건지요.?
혹시 음성녹음 관련해서 해보신분이 계시면 기본적인 개념이라도....
그리고 ALSA, OSS는 codec device를 사용하기 위한 lib인지? 음성을 녹을 하기 위해서는 alsa-lib, alsa-driver, alsa-util을
사용해야 하는건지요.?
답답해서 이것저것 말을 하다 보니 두서가 없네요...
음성저장 관련해서 경험이 있으신분들 조언을 부탁드립니다.
커널에서 사용준비는 끝나신것으로 보입니다.
사용하시는 User Platform ( Android? , ramdisk? ) 에 따라서 향후 방향이 결정납니다.
만약 안드로이드라면...
mknod 할 필요 없이 안드로이드에 포함된 uevent 가
/dev/snd/controlC0
/dev/snd/pcmC0D0c
/dev/snd/pcmC0D0p
를 자동적으로 만들어 주고 Audio HAL 을 잘 포팅 하여 사용하시는 것입니다.
일반 Ramdisk 이라면
uevent(cross 된 uevent or busybox 의 mdev) 를 가진 ramdisk 라면 자동적으로 device file 을 만들어 줄 것이고
아니면 위와 말씀 하신 것 처럼 mknod 하여 생성해 주셔야 합니다.
(busybox 의 mdev 는 /dev/* 에 만들어 버리더군요... /dev/snd/* 에 만들어야 하는데... 이거 문제인데..)
(busybox 의 mdev 를 사용하여 /dev/* 에 만들어진 file 을 /dev/snd/* 로 모두 옮겨 버리십시요. ALSA 관련한것만)
kernel 과 통신 할 수 있는 device file 은 만들어 졌으니 이제
이 deviece file 을 이용한 ALSA library 를 크로스컴파일 하여 넣어 주셔야 합니다.
안드로이드에서는 이미 되어 있으며(물론 손 봐야 할 것입니다) Audio HAL에 포함 됩니다.
실제 alsa lib 를 크로스컴파일 하면 alsa util 이란 것도 있는데 여기에 aplay 나 amixer 가 있습니다.
이것으로 wav file 을 이용하여 test 할 수 있습니다.
linux 에서 음악 관련한 APP 를 크로스 컴파일 해서 넣으신다면
ALSA Lib 를 크로스 컴파일 해서 넣으셔야 할 것이고 ( 음악 APP 가 ALSA Lib 를 사용 할 것이므로 )
alsa lib 가 크고 무겁기 때문에
tinyalsa 란 것도 한번 검색하여 설치해 보십시요.
저는 현재 ramdisk 상에서
tinyplay + tinycap + tinymix + tinyalsalib 를 이용하여
플레이백,캡쳐 테스트를 합니다.
안녕하세요.
다음 링크에 ALSA 강좌 입니다.
이지랑드로랑 - 7장. ALSA 드라이버 포함시키기
도움이 되셨으면 좋겠습니다 ^^