Files
cuetools.net/CUETools.Codecs.CoreAudio/CoreAudioApi/AudioRenderClient.cs

61 lines
1.9 KiB
C#
Raw Normal View History

2010-03-30 02:41:43 +00:00
using System;
using System.Collections.Generic;
using System.Text;
using NAudio.CoreAudioApi.Interfaces;
using System.Runtime.InteropServices;
namespace NAudio.CoreAudioApi
{
/// <summary>
/// Audio Render Client
/// </summary>
public class AudioRenderClient : IDisposable
{
IAudioRenderClient audioRenderClientInterface;
internal AudioRenderClient(IAudioRenderClient audioRenderClientInterface)
{
this.audioRenderClientInterface = audioRenderClientInterface;
}
/// <summary>
/// Gets a pointer to the buffer
/// </summary>
/// <param name="numFramesRequested">Number of frames requested</param>
/// <returns>Pointer to the buffer</returns>
public IntPtr GetBuffer(int numFramesRequested)
{
return audioRenderClientInterface.GetBuffer(numFramesRequested);
}
/// <summary>
/// Release buffer
/// </summary>
/// <param name="numFramesWritten">Number of frames written</param>
/// <param name="bufferFlags">Buffer flags</param>
public void ReleaseBuffer(int numFramesWritten,AudioClientBufferFlags bufferFlags)
{
audioRenderClientInterface.ReleaseBuffer(numFramesWritten, bufferFlags);
}
#region IDisposable Members
/// <summary>
/// Release the COM object
/// </summary>
public void Dispose()
{
if (audioRenderClientInterface != null)
{
// althugh GC would do this for us, we want it done now
// to let us reopen WASAPI
Marshal.ReleaseComObject(audioRenderClientInterface);
audioRenderClientInterface = null;
GC.SuppressFinalize(this);
}
}
#endregion
}
}