+ p_wf->nChannels = p_input->p_fmt->audio.i_channels;
+ p_wf->nSamplesPerSec = p_input->p_fmt->audio.i_rate;
+ p_wf->nBlockAlign = p_input->p_fmt->audio.i_blockalign;
+ p_wf->nAvgBytesPerSec= p_input->p_fmt->i_bitrate / 8;
+ p_wf->wBitsPerSample = 0;
+
+ switch( p_input->p_fmt->i_codec )
+ {
+ case VLC_FOURCC( 'a', '5', '2', ' ' ):
+ p_wf->wFormatTag = WAVE_FORMAT_A52;
+ break;
+ case VLC_FOURCC( 'm', 'p', 'g', 'a' ):
+ p_wf->wFormatTag = WAVE_FORMAT_MPEGLAYER3;
+ break;
+ case VLC_FOURCC( 'w', 'm', 'a', '1' ):
+ p_wf->wFormatTag = WAVE_FORMAT_WMA1;
+ break;
+ case VLC_FOURCC( 'w', 'm', 'a', ' ' ):
+ case VLC_FOURCC( 'w', 'm', 'a', '2' ):
+ p_wf->wFormatTag = WAVE_FORMAT_WMA2;
+ break;
+ case VLC_FOURCC( 'w', 'm', 'a', 'p' ):
+ p_wf->wFormatTag = WAVE_FORMAT_WMAP;
+ break;
+ case VLC_FOURCC( 'w', 'm', 'a', 'l' ):
+ p_wf->wFormatTag = WAVE_FORMAT_WMAL;
+ break;
+ /* raw codec */
+ case VLC_FOURCC( 'u', '8', ' ', ' ' ):
+ p_wf->wFormatTag = WAVE_FORMAT_PCM;
+ p_wf->nBlockAlign= p_wf->nChannels;
+ p_wf->wBitsPerSample = 8;
+ break;
+ case VLC_FOURCC( 's', '1', '6', 'l' ):
+ p_wf->wFormatTag = WAVE_FORMAT_PCM;
+ p_wf->nBlockAlign= 2 * p_wf->nChannels;
+ p_wf->wBitsPerSample = 16;
+ break;
+ case VLC_FOURCC( 's', '2', '4', 'l' ):
+ p_wf->wFormatTag = WAVE_FORMAT_PCM;
+ p_wf->nBlockAlign= 3 * p_wf->nChannels;
+ p_wf->wBitsPerSample = 24;
+ break;
+ case VLC_FOURCC( 's', '3', '2', 'l' ):
+ p_wf->wFormatTag = WAVE_FORMAT_PCM;
+ p_wf->nBlockAlign= 4 * p_wf->nChannels;
+ p_wf->wBitsPerSample = 32;
+ break;
+ default:
+ return VLC_EGENERIC;
+ }
+#undef p_wf