기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.
현재 타사 보드로 스터디 중입니다.
지금 사운드 디바이스 드라이버가 로딩되어져 있는 상태입니다.
aplay 라는 툴을 사용해 로딩해본 결과입니다.
# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: EVM [EVM], device 0: AIC3X tlv320aic3x-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: EVM [EVM], device 1: hdmi HDMI-DAI-CODEC-1 []
Subdevices: 1/1
Subdevice #0: subdevice #0
이 상태에서
# aplay -Dhw:0,0 test.wav
라는 명령어를 하게 되면 HP-out 쪽으로 출력이 됩니다.
다음으로
# aplay -Dhw:0,1 test.wqv
라는 명령어를 하게 되면 HDMI-audio 쪽에서 출력이 됩니다.
여기까지는 현재 상황이고요 제가 하고 싶은거는 오디오 출력을 바꾸고 싶습니다.
gst-launch filesrc location="fan_4.mp4" ! qtdemux name=demux demux.audio_00 ! queue ! faad ! alsasink demux.video_00 ! queue ! h264parse ! omx_h264dec ! omx_scaler ! omx_ctrl display-mode=OMX_DC_MODE_1080P_60 ! omx_videosink
gstreamer 를 사용하여 영상을 재생하는데 영상 출력은 HDMI 쪽으로 사운드는 HP-out 쪽으로 출력됩니다.
이 상황에서 영상 오디오를 HDMI 쪽으로 출력하고 싶습니다.
질문입니다.
1. 현재 device 1 로 되어 있는 HDMI-audio 를 device 0 로 바꾸는 방법이나 팁을 알려 주시면 감사하겠습니다.
혹은
2. gstreamer pipeline 을 조정하여 default 값(HP-out) 출력이 아닌 HDMI audio 출력으로 바꾸고 싶습니다.
이에 따라 gstreamer pipeline 조절 팁을 알려주시면 감사하겠습니다.
감사합니다.
좋은 하루 되십시오.
아하...그게 패닉이 나면 안될텐데...
원래 잘 처리 되는 것이 ALSA 인데.. 아무래도.
기존에 [0] 에 있던 .init 을 [1]으로 옮기셨을 테니
기존에 [0]에 있던 .init 만 그대로 남겨 두고... [0] 과 [1]을 바꿔 보세요..
static struct snd_soc_dai_link xxxxxx[] = {
{
/* HPOUT_LINK */
.init = xxx_init,
......
},
{
/* HDMI_OUT */
......
},
};
을
static struct snd_soc_dai_link xxxxxx[] = {
{
/* HDMI_OUT */
.init = xxx_init,
......
},
{
/* HPOUT_LINK */
......
},
};
안녕하세요.
/dev/snd/pcmC0D0p <- HPOUT 고정
/dev/snd/pcmC0D1p <- HDMI OUT 고정
kernel alsa 에서 이미 고정시켜 놓았을 겁니다.
1. 커널 alsa 를 수정
davinci-evm.c 에 보시면 snd_soc_dai_link 구조체를 선언한 부분을 보시면 알 수 있습니다.
[0] 과 [1] 배열을 바꾸는 방법 이 있을 수 있겠습니다 ^^ (비추천) ( 커널도 컴파일 해야됨 )
질문하신 device 1 을 0으로 device 0을 1로 바꾸는 방법입니다.
(코덱 이름이랑 evm 보고 davinci-evm.c 라고 말씀 드렸는데..
아니라면 사용하시는 alsa asoc 의 machine 드라이버의 snd_soc_dai_link 구조체 입니다. )
2. amixer 를 통하여 path 를 변경
amixer 를 치면 path 설정을 할 수 있는데 경로를 HDMI 로 바꾸는 방법
(오디오 코덱에 대해서 잘 알고 있어야 함. 비추천)
3. gstreamer 에서 /dev/snd/pcmC0D1p 를 open 하도록 변경 ( 추천 )
제가 gstreamer 에 대해 경험이 없습니다만, 분명 configure 나 환경설정 파일을 통하여
/dev/snd/pcmC0D1p 를 open 하여 PCM write 를 하는 방법이 있을 듯 합니다.
지금은 /dev/snd/pcmC0D0p 를 open 하여 write 때문에 HPOUT 으로 나가고 있을겁니다.