다음과 같은 형식으로 기본 wave out format을
WaveHeader.FormatTag = 1; // 1.WAVE_FORMAT_PCM
WaveHeader.NumChannels = num_channels;
WaveHeader.SampleRate = GetSampleRate ();
WaveHeader.BlockAlign = num_channels * bps;
WaveHeader.BytesPerSecond = SampleRate * BlockAlign;
WaveHeader.BitsPerSample = GetBitsPerSample ();
WaveHeader.NumChannels = num_channels;
WaveHeader.SampleRate = GetSampleRate ();
WaveHeader.BlockAlign = num_channels * bps;
WaveHeader.BytesPerSecond = SampleRate * BlockAlign;
WaveHeader.BitsPerSample = GetBitsPerSample ();
CE쪽에서는 block align과 bytes per second 순서가 살짝 다르다.
Linux 에서와의 달리 WinCE의 wave out에는 상당한 제약이 있다.
1. channel 은 1CH, 2CH (mono/stereo)
2. Sample rate 은 8.0khz, 11.025khz, 22.05khz, 44.1khz
3. Bit per sample 은 8bit와 16bit.
2. Sample rate 은 8.0khz, 11.025khz, 22.05khz, 44.1khz
3. Bit per sample 은 8bit와 16bit.
때문에 디코더를 셋팅에도 신경써야 하고,
해당 코덱을 이용해 오디오 파일을 디코딩하고 출력 시에
floating point 연산이 추가로 필요한 경우가 발생하기 때문에..
상당한 mips를 먹게된다.
(멀티 채널의 down mixing, sample rate 변환, bit per sample 변환 등.)