+ if (IsEqualIID(&wfe->SubFormat, &KSDATAFORMAT_SUBTYPE_IEEE_FLOAT))
+ {
+ switch (wf->wBitsPerSample)
+ {
+ case 64:
+ audio->i_format = VLC_CODEC_FL64;
+ break;
+ case 32:
+ audio->i_format = VLC_CODEC_FL32;
+ break;
+ default:
+ return -1;
+ }
+ }
+ else if (IsEqualIID(&wfe->SubFormat, &KSDATAFORMAT_SUBTYPE_PCM))
+ {
+ switch (wf->wBitsPerSample)
+ {
+ case 32:
+ audio->i_format = VLC_CODEC_S32N;
+ break;
+ case 16:
+ audio->i_format = VLC_CODEC_S16N;
+ break;
+ default:
+ return -1;
+ }
+ }
+
+ if (wfe->Samples.wValidBitsPerSample != wf->wBitsPerSample)
+ return -1;
+