Exemplo n.º 1
0
        /// <summary>
        /// Creates a new WASAPI Output
        /// </summary>
        /// <param name="device">Device to use</param>
        /// <param name="shareMode"></param>
        /// <param name="useEventSync">true if sync is done with event. false use sleep.</param>
        /// <param name="latency"></param>
		public WasapiOut(MMDevice device, AudioClientShareMode shareMode, bool useEventSync, int latency, AudioPCMConfig pcm)
        {
            this.audioClient = device.AudioClient;
            this.shareMode = shareMode;
            this.isUsingEventSync = useEventSync;
            this.latencyMilliseconds = latency;
			this.pcm = pcm;
			this.outputFormat = new NAudio.Wave.WaveFormatExtensible(pcm.SampleRate, pcm.BitsPerSample, pcm.ChannelCount);
			NAudio.Wave.WaveFormatExtensible closestSampleRateFormat;
            if (!audioClient.IsFormatSupported(shareMode, outputFormat, out closestSampleRateFormat))
				throw new NotSupportedException("PCM format mismatch");
			Init();
			bufferFrameCount = audioClient.BufferSize;
			readBuffers = new AudioBuffer[2];
			readBuffers[0] = new AudioBuffer(pcm, bufferFrameCount);
			readBuffers[1] = new AudioBuffer(pcm, bufferFrameCount);
			//if (this.shareMode == AudioClientShareMode.Exclusive)
			//    this.latencyMilliseconds = (int)(this.audioClient.DefaultDevicePeriod / 10000);
        }
Exemplo n.º 2
0
 /// <summary>
 /// Creates a new WASAPI Output
 /// </summary>
 /// <param name="device">Device to use</param>
 /// <param name="shareMode"></param>
 /// <param name="useEventSync">true if sync is done with event. false use sleep.</param>
 /// <param name="latency"></param>
 public WasapiOut(MMDevice device, AudioClientShareMode shareMode, bool useEventSync, int latency, AudioPCMConfig pcm)
 {
     this.m_settings          = new AudioEncoderSettings(pcm);
     this.audioClient         = device.AudioClient;
     this.shareMode           = shareMode;
     this.isUsingEventSync    = useEventSync;
     this.latencyMilliseconds = latency;
     this.outputFormat        = new NAudio.Wave.WaveFormatExtensible(pcm.SampleRate, pcm.BitsPerSample, pcm.ChannelCount);
     NAudio.Wave.WaveFormatExtensible closestSampleRateFormat;
     if (!audioClient.IsFormatSupported(shareMode, outputFormat, out closestSampleRateFormat))
     {
         throw new NotSupportedException("PCM format mismatch");
     }
     Init();
     bufferFrameCount = audioClient.BufferSize;
     readBuffers      = new AudioBuffer[2];
     readBuffers[0]   = new AudioBuffer(pcm, bufferFrameCount);
     readBuffers[1]   = new AudioBuffer(pcm, bufferFrameCount);
     //if (this.shareMode == AudioClientShareMode.Exclusive)
     //    this.latencyMilliseconds = (int)(this.audioClient.DefaultDevicePeriod / 10000);
 }