/// <summary> /// Tries to resolve a valid format pointer for the audio client. /// </summary> /// <param name="audioClient">The audio client to use.</param> /// <param name="shareMode">The share mode to use.</param> /// <returns>A pointer to a valid format, or zero if one cannot be found.</returns> public static IntPtr GetFormatPointer(IAudioClient audioClient, AUDCLNT_SHAREMODE shareMode) { var formatPtr = IntPtr.Zero; if (shareMode == AUDCLNT_SHAREMODE.AUDCLNT_SHAREMODE_SHARED) { audioClient.GetMixFormat(out formatPtr); } else { // Otherwise we need to find a supported format foreach (var format in TestWaveFormats) { var formatMatch = IntPtr.Zero; var supported = audioClient.IsFormatSupported(shareMode, format, out formatMatch); if (supported == 0) { formatPtr = format; break; } else if (supported == 1) { formatPtr = formatMatch; break; } } if (formatPtr == IntPtr.Zero) { Assert.Inconclusive("Unable to find a valid format pointer."); } } return(formatPtr); }
/// <summary> /// Runs each test, creating the specified interface from the IAudioClient.GetService method. /// Tests are run only in the specified share mode. /// </summary> /// <param name="shareMode">The audio client share mode.</param> /// <param name="onTestReady">The test method to use.</param> protected virtual void ExecuteServiceTest(AUDCLNT_SHAREMODE shareMode, TestReadyDelegate <T> onTestReady) { var exclusiveMode = (shareMode == AUDCLNT_SHAREMODE.AUDCLNT_SHAREMODE_EXCLUSIVE); Manager = ServiceTestManager <T> .Create(ComIID, exclusiveMode); Manager.OnTestReady = onTestReady; Manager.Run(); }
/// <summary> /// Runs each test, creating the specified interface from the IAudioClient.GetService method. /// Tests are run only in the specified share mode, with the audio client in the running (started) state. /// </summary> /// <param name="shareMode">The audio client share mode.</param> /// <param name="onTestReady">The test method to use.</param> protected virtual void ExecuteRunningServiceTest(AUDCLNT_SHAREMODE shareMode, TestReadyDelegate <T> onTestReady) { var exclusiveMode = (shareMode == AUDCLNT_SHAREMODE.AUDCLNT_SHAREMODE_EXCLUSIVE); var serviceTestManager = ServiceTestManager <T> .Create(ComIID, exclusiveMode); serviceTestManager.AutoStartClient = true; Manager = serviceTestManager; Manager.OnTestReady = onTestReady; Manager.Run(); }
public int IsFormatSupported(AUDCLNT_SHAREMODE ShareMode, [NativeTypeName("const WAVEFORMATEX *")] WAVEFORMATEX *pFormat, [NativeTypeName("WAVEFORMATEX **")] WAVEFORMATEX **ppClosestMatch) { return(((delegate * unmanaged <IAudioClient2 *, AUDCLNT_SHAREMODE, WAVEFORMATEX *, WAVEFORMATEX **, int>)(lpVtbl[7]))((IAudioClient2 *)Unsafe.AsPointer(ref this), ShareMode, pFormat, ppClosestMatch)); }
public int Initialize(AUDCLNT_SHAREMODE ShareMode, [NativeTypeName("DWORD")] uint StreamFlags, [NativeTypeName("REFERENCE_TIME")] long hnsBufferDuration, [NativeTypeName("REFERENCE_TIME")] long hnsPeriodicity, [NativeTypeName("const WAVEFORMATEX *")] WAVEFORMATEX *pFormat, [NativeTypeName("LPCGUID")] Guid *AudioSessionGuid) { return(((delegate * unmanaged <IAudioClient2 *, AUDCLNT_SHAREMODE, uint, long, long, WAVEFORMATEX *, Guid *, int>)(lpVtbl[3]))((IAudioClient2 *)Unsafe.AsPointer(ref this), ShareMode, StreamFlags, hnsBufferDuration, hnsPeriodicity, pFormat, AudioSessionGuid)); }