Now decoding the format from the WAVEFORMAT returned by the winapi
This commit is contained in:
parent
bf20431901
commit
dc08fc4652
|
@ -113,13 +113,23 @@ impl Endpoint {
|
||||||
check_result((*client).GetMixFormat(&mut format_ptr)).unwrap(); // FIXME: don't unwrap
|
check_result((*client).GetMixFormat(&mut format_ptr)).unwrap(); // FIXME: don't unwrap
|
||||||
|
|
||||||
let format = {
|
let format = {
|
||||||
assert!((*format_ptr).wFormatTag == winapi::WAVE_FORMAT_EXTENSIBLE);
|
let data_type = match (*format_ptr).wFormatTag {
|
||||||
|
winapi::WAVE_FORMAT_PCM => SampleFormat::I16,
|
||||||
|
winapi::WAVE_FORMAT_EXTENSIBLE => {
|
||||||
|
let format_ptr = format_ptr as *const winapi::WAVEFORMATEXTENSIBLE;
|
||||||
|
match (*format_ptr).SubFormat {
|
||||||
|
winapi::KSDATAFORMAT_SUBTYPE_IEEE_FLOAT => SampleFormat::F32,
|
||||||
|
winapi::KSDATAFORMAT_SUBTYPE_PCM => SampleFormat::I16,
|
||||||
|
g => panic!("Unknown SubFormat GUID returned by GetMixFormat: {:?}", g)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
f => panic!("Unknown data format returned by GetMixFormat: {:?}", f)
|
||||||
|
};
|
||||||
|
|
||||||
// FIXME: decode from the format
|
|
||||||
Format {
|
Format {
|
||||||
channels: 2,
|
channels: (*format_ptr).nChannels,
|
||||||
samples_rate: SamplesRate(44100),
|
samples_rate: SamplesRate((*format_ptr).nSamplesPerSec),
|
||||||
data_type: SampleFormat::I16,
|
data_type: data_type,
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue