Exemple #1
0
        internal SoundEffect(SharpDX.XAudio2.XAudio2 device, SharpDX.Multimedia.SoundStream waveStream)
        {
            if (waveStream == null)
                throw new ArgumentNullException("waveStream");

            this.audioBuffer = new SharpDX.XAudio2.AudioBuffer();
            this.audioBuffer.Stream = waveStream;
            this.audioBuffer.AudioBytes = (int)waveStream.Length;

            this.sourceVoice = new SharpDX.XAudio2.SourceVoice(device, waveStream.Format);
        }
Exemple #2
0
        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (this.sourceVoice != null)
                {
                    this.sourceVoice.Dispose();
                    this.sourceVoice = null;
                }

                if (this.audioBuffer != null)
                {
                    this.audioBuffer.Stream.Close();
                    this.audioBuffer = null;
                }
            }
        }
Exemple #3
0
        public AudioSource(WaveFormat format)
        {
            WaveFormat = format;

            mSourceVoice = new SharpDX.XAudio2.SourceVoice(
                AudioDevice.XAudio,
                new SharpDX.Multimedia.WaveFormat(
                    WaveFormat.SampleRate,
                    WaveFormat.Bits,
                    WaveFormat.Channels));

            mStreamBuffer  = new SharpDX.DataBuffer[mBufferCount];
            mCurrentBuffer = 0;

            mSourceVoice.BufferEnd += (IntPtr obj) =>
            {
                mStreamBufferTask?.Wait();

                mStreamBufferTask?.Dispose();
                mStreamBufferTask = new Task(SubmitAudioBuffer);
                mStreamBufferTask.Start();
            };
        }