Esempio n. 1
0
        public void CanPlayBuffers()
        {
            using (var dsound = CreateDirectSound8())
            {
                dsound.SetCooperativeLevel(DSUtils.GetDesktopWindow(), DSCooperativeLevelType.DSSCL_NORMAL);
                WaveFormat waveFormat = new WaveFormat(44100, 16, 2);
                using (var primaryBuffer = new DirectSoundPrimaryBuffer(dsound))
                using (var secondaryBuffer = new DirectSoundSecondaryBuffer(dsound, waveFormat, (int)waveFormat.MillisecondsToBytes(10000)))
                {
                    primaryBuffer.Play(DSBPlayFlags.DSBPLAY_LOOPING);
                    var caps = secondaryBuffer.BufferCaps;

                    var data = GenerateData(caps.dwBufferBytes / 2, waveFormat);

                    if (secondaryBuffer.Write(data, 0, data.Length))
                    {
                        secondaryBuffer.Play(DSBPlayFlags.DSBPLAY_LOOPING);
                    }
                    else
                    {
                        Assert.Fail("Could not write data.");
                    }
                    Thread.Sleep(1);
                }
            }
        }