수요일, 7월 02, 2008

WINCE에서 2개가 넘는 multi channel speaker 출력이 가능할까?

"WINCE에서 2개가 넘는 multi channel speaker가 있을때 각 channel로 서로다른 sound의 동시 출력이 가능할까?"라는 문제 관련하여 나름대로 조사해 보고 내가 알게 된 부분과 궁금한 점을 naver weeg와 wecom에 올렸고, 도움이 되는 답변도 얻었다.

질문
흔히 mobile device에서 사용하는 AC97 codec은 aclink data의 slot3, 4 data를 DA변환하여 LOUT_R, LOUT_L 출력할 수 있도록 해 줍니다. DAC가 보통 2개, 또는 wolfson wm9712의 경우는 auxDAC를 가지고 있어 3개의 DAC가 있고, 이 auxDAC는 costant 값을 설정하여 BEEP소리가 나게 하던가 aclink data의 5에서 11사이의 slot을 할당해 줄 수 있습니다. 그럼 그 slot으로 오는 aclink data가 auxDAC를 거치겠지요.

의문점은 windows ce환경에서
waveform audio의 waveout 함수들로 audio 출력할때 WAVEFORMATEX의 nChannels를 3으로 설정할 수 있느냐? 그렇게 해서 auxDAC를 포함한 3 channel의 speaker에서 서로 다른 소리가 나게 할 수 있는 것인가? 입니다.

PC에서는 multi channel speaker를 연결하도록 여러개의 speaker jack들이 있고 해서, 이런환경에 많이 사용하는 C-media의 AC97 codec을 찾아 봤습니다. 4ch, 혹은 6ch를 지원하는 것들이 있는데...
4ch짜리 AC97 codec은 4개의 DAC를 가지고 있고 실제 LOUT_R, LOUT_L외에 REAR_OUT_R, REAR_OUT_L 출력을 가지고 있습니다. AC97 표준에 따라 아마도 이 rear left, right는 AClink의 slot7, 8의 data를 받을 겁니다. (제품명이 CMI9738)
6ch짜리 AC97 codec은 6개의 DAC를 가지고 있고 실제 LOUT_R, LOUT_L외에 REAR_OUT_R, REAR_OUT_L, CENTER_OUT, LFE_OUT 출력을 가지고 있습니다. AC97 표준에 따라 아마도 이 rear left, right, center, lfe는 AClink의 slot6, 7, 8, 9의 data를 받을 겁니다. (제품명이 CMI9761)

그렇다면 wince환경에서 이 2 channel 초과의 audio를 동시에 여러개의 speaker로 따로따로 다른 소리를 출력할 수 있는 방법이 있습니까?
WAVEFORMATEX의 nChannels를 4나 6으로 설정하면 될까요?
아니면 다른 어떤 방법이 있나요?
wince에서는 안된다면 PC에서는 이렇게 2channel이 넘는 multi channel speaker로 서로 다른 소리가 나가게 하기 위해서 어떻게 하나요?


답글 (wecom)
http://msdn.microsoft.com/en-us/library/aa910386.aspx 에서 볼 수 있듯이 윈도우CE에서 지원하는(혹은 생성할 수 있는 오디오 형식이) 모노나 스테레오 둘중에 하나이기 때문에 2채널 이상을 설정하셔도 의미가 없을 것입니다.제가 아는 한 그렇습니다.참고하시기 바랍니다.

Microsoft Windows Embedded MVP

Youngho Ra(ratharn@naver.com)
www.embeddedce.com

실제 msdn 해당 website에 가면 WAVEOUTCAPS 라는 waveform audio output device의 capability를 정의하는 구조체의 설명이 있는데, 이 구조체의 member인 dwChannels은 1 과 2 만 지원된다고 명시돼있다. 또 dwFormats에서는 지원되는 WAV format을 지정할 수 있는데 이것도 여러가지 sample rate에 mono, stereo만 지원된다고 나와 있다.

답글 (weeg)
WAVEFORMATEXTENSIBLE에 대해서 찾아 보시면 될 듯 합니다.

이 내용을 MSDN에서 확인해 보니
PC환경에서는 WAVEFORMATEXTENSIBLE은 일반적인 PCM format wav가 아닌 경우 추가 정보를 지정하기 위해 사용하는 구조체로, Multichannel & high resolution wav format을 정의할 수 있고 이것을 이용해서 18개나 되는 channel의 speaker까지 동시 출력을 할 수 있도록 되어 있다. 이 WAVEFORMATEXTENSIBLE을 사용해서 정의되는 WAV format은 Directsound에서 사용된다.
그러나 wince 환경에서는 DirectSound를 지원하지 않는다.
Wince의 모든 source file을 search해 본 결과 이 구조체가 정의는 되어 있으나 전혀 사용되지 않는다. 따라서 wince에서는 안 되는 기능이라고 생각된다.

결론적으로 원하는 기능을 위해서는 우선 multi-channel을 지원하는 고급 AC97 codec를 사용하고 window의 waveform audio 함수를 사용하지 않고, 독자적인 driver와 독자적인 application interface를 새로 구현하는 수 밖에 없어 보인다.

댓글 3개:

익명 :

Do you have copy writer for so good articles? If so please give me contacts, because this really rocks! :)

익명 :

Making money on the internet is easy in the hush-hush world of [URL=http://www.www.blackhatmoneymaker.com]clickbank blackhat[/URL], You are far from alone if you haven’t heard of it before. Blackhat marketing uses not-so-popular or little-understood avenues to produce an income online.

yanmaneee :

off white nike
golden gooses sneakers
air max 270
yeezy boost
calvin klein underwear
vans shoes
nike air force
nike air max 97
nike air force 1
jordan shoes