Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }