62 lines
2.1 KiB
C#
62 lines
2.1 KiB
C#
using System;
|
|
using System.Runtime.InteropServices;
|
|
using NAudio.Wave;
|
|
|
|
namespace NAudio.CoreAudioApi.Interfaces
|
|
{
|
|
/// <summary>
|
|
/// Windows CoreAudio IAudioClient interface
|
|
/// Defined in AudioClient.h
|
|
/// </summary>
|
|
[Guid("1CB9AD4C-DBFA-4c32-B178-C2F568A703B2"),
|
|
InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
|
|
ComImport]
|
|
public interface IAudioClient
|
|
{
|
|
[PreserveSig]
|
|
int Initialize(AudioClientShareMode shareMode,
|
|
AudioClientStreamFlags streamFlags,
|
|
long hnsBufferDuration, // REFERENCE_TIME
|
|
long hnsPeriodicity, // REFERENCE_TIME
|
|
[In] WaveFormat pFormat,
|
|
[In] ref Guid audioSessionGuid);
|
|
|
|
/// <summary>
|
|
/// The GetBufferSize method retrieves the size (maximum capacity) of the endpoint buffer.
|
|
/// </summary>
|
|
int GetBufferSize(out uint bufferSize);
|
|
|
|
[return: MarshalAs(UnmanagedType.I8)]
|
|
long GetStreamLatency();
|
|
|
|
int GetCurrentPadding(out int currentPadding);
|
|
|
|
[PreserveSig]
|
|
int IsFormatSupported(
|
|
AudioClientShareMode shareMode,
|
|
[In] WaveFormat pFormat,
|
|
IntPtr closestMatchFormat); // or outIntPtr??
|
|
|
|
int GetMixFormat(out IntPtr deviceFormatPointer);
|
|
|
|
// REFERENCE_TIME is 64 bit int
|
|
int GetDevicePeriod(out long defaultDevicePeriod, out long minimumDevicePeriod);
|
|
|
|
int Start();
|
|
|
|
int Stop();
|
|
|
|
int Reset();
|
|
|
|
int SetEventHandle(IntPtr eventHandle);
|
|
|
|
/// <summary>
|
|
/// The GetService method accesses additional services from the audio client object.
|
|
/// </summary>
|
|
/// <param name="interfaceId">The interface ID for the requested service.</param>
|
|
/// <param name="interfacePointer">Pointer to a pointer variable into which the method writes the address of an instance of the requested interface. </param>
|
|
[PreserveSig]
|
|
int GetService([In, MarshalAs(UnmanagedType.LPStruct)] Guid interfaceId, [Out, MarshalAs(UnmanagedType.IUnknown)] out object interfacePointer);
|
|
}
|
|
}
|