public void InfoIsCorrect(SampleFormat id, int bitCount, Type type, bool isPlanar) { var format = SampleFormatInfo.Get(id); Assert.Equal(id, format.Id); Assert.Equal(bitCount, format.BitCount); Assert.Equal(type, format.Type); Assert.Equal(isPlanar, format.IsPlanar); }
private int WasapiSetup( int deviceId, bool isExclusive, bool isEventDriven, int sampleRate, int pcmDataBitsPerSample, int pcmDataValidBitsPerSample, PcmDataLib.PcmData.ValueRepresentationType vrt, int latencyMillisec) { int num = SampleFormatInfo.GetSetupSampleFormatCandidateNum( isExclusive ? WasapiSharedOrExclusiveType.Exclusive : WasapiSharedOrExclusiveType.Shared, BitsPerSampleFixType.AutoSelect, pcmDataValidBitsPerSample, vrt); int hr = -1; for (int i = 0; i < num; ++i) { SampleFormatInfo sf = SampleFormatInfo.CreateSetupSampleFormat( isExclusive ? WasapiSharedOrExclusiveType.Exclusive : WasapiSharedOrExclusiveType.Shared, BitsPerSampleFixType.AutoSelect, pcmDataBitsPerSample, pcmDataValidBitsPerSample, vrt, i); hr = wasapi.Setup(deviceId, WasapiCS.DeviceType.Play, WasapiCS.StreamType.PCM, sampleRate, sf.GetSampleFormatType(), 2, WasapiCS.MMCSSCallType.Enable, WasapiCS.MMThreadPriorityType.None, WasapiCS.SchedulerTaskType.ProAudio, WasapiCS.ShareMode.Exclusive, isEventDriven ? WasapiCS.DataFeedMode.EventDriven : WasapiCS.DataFeedMode.TimerDriven, latencyMillisec, 500, 10000); if (0 <= hr) { m_sampleFormat = sf; return(hr); } } wasapi.Unsetup(); return(hr); }