Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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();
        }
Esempio n. 3
0
        /// <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));
 }