//
// Copyright (c) Microsoft Corporation. All rights reserved.
// 
//
// File generated by WinMDIDL version 8.00.0014
//

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.idl";
import "Windows.Devices.Enumeration.idl";
import "Windows.Media.idl";
import "Windows.Media.Capture.idl";
import "Windows.Media.Effects.idl";
import "Windows.Media.MediaProperties.idl";
import "Windows.Media.Render.idl";
import "Windows.Media.Transcoding.idl";
import "Windows.Storage.idl";
// Additional imports to ensure that all required headers are included
cpp_quote("#if defined(__cplusplus)")
cpp_quote("}")
cpp_quote("#endif // defined(__cplusplus)")
cpp_quote("#include <Windows.Foundation.h>")
cpp_quote("#if !defined(__windows2Edevices2Eenumeration_h__)")
cpp_quote("#include <Windows.Devices.Enumeration.h>")
cpp_quote("#endif // !defined(__windows2Edevices2Eenumeration_h__)")
cpp_quote("#if !defined(__windows2Emedia_h__)")
cpp_quote("#include <Windows.Media.h>")
cpp_quote("#endif // !defined(__windows2Emedia_h__)")
cpp_quote("#if !defined(__windows2Emedia2Ecapture_h__)")
cpp_quote("#include <Windows.Media.Capture.h>")
cpp_quote("#endif // !defined(__windows2Emedia2Ecapture_h__)")
cpp_quote("#if !defined(__windows2Emedia2Eeffects_h__)")
cpp_quote("#include <Windows.Media.Effects.h>")
cpp_quote("#endif // !defined(__windows2Emedia2Eeffects_h__)")
cpp_quote("#if !defined(__windows2Emedia2Emediaproperties_h__)")
cpp_quote("#include <Windows.Media.MediaProperties.h>")
cpp_quote("#endif // !defined(__windows2Emedia2Emediaproperties_h__)")
cpp_quote("#if !defined(__windows2Emedia2Erender_h__)")
cpp_quote("#include <Windows.Media.Render.h>")
cpp_quote("#endif // !defined(__windows2Emedia2Erender_h__)")
cpp_quote("#if !defined(__windows2Emedia2Etranscoding_h__)")
cpp_quote("#include <Windows.Media.Transcoding.h>")
cpp_quote("#endif // !defined(__windows2Emedia2Etranscoding_h__)")
cpp_quote("#if !defined(__windows2Estorage_h__)")
cpp_quote("#include <Windows.Storage.h>")
cpp_quote("#endif // !defined(__windows2Estorage_h__)")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace Devices
    {
        namespace Enumeration
        {
            runtimeclass DeviceInformation;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        interface IClosable;

        typedef struct TimeSpan TimeSpan;
    }
}
namespace Windows
{
    namespace Media
    {
        runtimeclass AudioFrame;

        typedef enum AudioProcessing AudioProcessing;
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Capture
        {
            typedef enum MediaCategory MediaCategory;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Effects
        {
            interface IAudioEffectDefinition;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace MediaProperties
        {
            runtimeclass AudioEncodingProperties;

            runtimeclass MediaEncodingProfile;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Render
        {
            typedef enum AudioRenderCategory AudioRenderCategory;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Transcoding
        {
            typedef enum TranscodeFailureReason TranscodeFailureReason;
        }
    }
}
namespace Windows
{
    namespace Storage
    {
        interface IStorageFile;

        runtimeclass StorageFile;
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Audio
        {
            typedef enum AudioGraphCreationStatus AudioGraphCreationStatus;

            typedef enum QuantumSizeSelectionMode QuantumSizeSelectionMode;

            typedef enum AudioDeviceNodeCreationStatus AudioDeviceNodeCreationStatus;

            typedef enum AudioFileNodeCreationStatus AudioFileNodeCreationStatus;

            typedef enum AudioGraphUnrecoverableError AudioGraphUnrecoverableError;

            interface ICreateAudioGraphResult;

            interface IAudioGraphSettingsFactory;

            interface IAudioGraphSettings;

            interface IAudioGraphStatics;

            interface ICreateAudioDeviceInputNodeResult;

            interface ICreateAudioDeviceOutputNodeResult;

            interface ICreateAudioFileInputNodeResult;

            interface ICreateAudioFileOutputNodeResult;

            interface IAudioGraphUnrecoverableErrorOccurredEventArgs;

            interface IAudioGraph;

            interface IAudioNode;

            interface IAudioInputNode;

            interface IAudioFrameInputNode;

            interface IAudioFileInputNode;

            interface IAudioDeviceInputNode;

            interface IAudioDeviceOutputNode;

            interface IAudioFrameOutputNode;

            interface IAudioFileOutputNode;

            interface IAudioFrameCompletedEventArgs;

            interface IFrameInputNodeQuantumStartedEventArgs;

            interface IAudioGraphConnection;

            interface IEqualizerBand;

            interface IEqualizerEffectDefinitionFactory;

            interface IReverbEffectDefinitionFactory;

            interface IEchoEffectDefinitionFactory;

            interface ILimiterEffectDefinitionFactory;

            interface IEqualizerEffectDefinition;

            interface IReverbEffectDefinition;

            interface IEchoEffectDefinition;

            interface ILimiterEffectDefinition;

            runtimeclass AudioGraph;

            runtimeclass CreateAudioGraphResult;

            runtimeclass AudioGraphSettings;

            runtimeclass AudioDeviceInputNode;

            runtimeclass CreateAudioDeviceInputNodeResult;

            runtimeclass AudioDeviceOutputNode;

            runtimeclass CreateAudioDeviceOutputNodeResult;

            runtimeclass AudioFileInputNode;

            runtimeclass CreateAudioFileInputNodeResult;

            runtimeclass AudioFileOutputNode;

            runtimeclass CreateAudioFileOutputNodeResult;

            runtimeclass AudioGraphUnrecoverableErrorOccurredEventArgs;

            runtimeclass AudioFrameInputNode;

            runtimeclass AudioFrameOutputNode;

            runtimeclass AudioSubmixNode;

            runtimeclass AudioGraphConnection;

            runtimeclass AudioFrameCompletedEventArgs;

            runtimeclass FrameInputNodeQuantumStartedEventArgs;

            runtimeclass EqualizerBand;

            runtimeclass EqualizerEffectDefinition;

            runtimeclass ReverbEffectDefinition;

            runtimeclass EchoEffectDefinition;

            runtimeclass LimiterEffectDefinition;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Media
    {
        namespace Audio
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.Media.Audio.AudioGraphConnection*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Media.Audio.EqualizerBand*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Media.Audio.AudioGraphConnection*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Media.Audio.EqualizerBand*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Media.Audio.AudioGraphConnection*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Media.Audio.EqualizerBand*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Media.Audio.CreateAudioDeviceInputNodeResult*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Media.Audio.CreateAudioDeviceOutputNodeResult*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Media.Audio.CreateAudioFileInputNodeResult*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Media.Audio.CreateAudioFileOutputNodeResult*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Media.Audio.CreateAudioGraphResult*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Audio.AudioFileInputNode*, IInspectable*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Audio.AudioFrameInputNode*, Windows.Media.Audio.AudioFrameCompletedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Audio.AudioFrameInputNode*, Windows.Media.Audio.FrameInputNodeQuantumStartedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Audio.AudioGraph*, IInspectable*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Audio.AudioGraph*, Windows.Media.Audio.AudioGraphUnrecoverableErrorOccurredEventArgs*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Media
    {
        namespace Audio
        {
            [version(0x0A000000)]
            enum AudioGraphCreationStatus
            {
                Success            = 0,
                DeviceNotAvailable = 1,
                FormatNotSupported = 2,
                UnknownFailure     = 3
            };

            [version(0x0A000000)]
            enum QuantumSizeSelectionMode
            {
                SystemDefault    = 0,
                LowestLatency    = 1,
                ClosestToDesired = 2
            };

            [version(0x0A000000)]
            enum AudioDeviceNodeCreationStatus
            {
                Success            = 0,
                DeviceNotAvailable = 1,
                FormatNotSupported = 2,
                UnknownFailure     = 3,
                AccessDenied       = 4
            };

            [version(0x0A000000)]
            enum AudioFileNodeCreationStatus
            {
                Success            = 0,
                FileNotFound       = 1,
                InvalidFileType    = 2,
                FormatNotSupported = 3,
                UnknownFailure     = 4
            };

            [version(0x0A000000)]
            enum AudioGraphUnrecoverableError
            {
                None                     = 0,
                AudioDeviceLost          = 1,
                AudioSessionDisconnected = 2,
                UnknownFailure           = 3
            };

            [exclusiveto(Windows.Media.Audio.CreateAudioGraphResult)]
            [uuid(5453EF7E-7BDE-4B76-BB5D-48F79CFC8C0B)]
            [version(0x0A000000)]
            interface ICreateAudioGraphResult : IInspectable
            {
                [propget] HRESULT Status([out] [retval] Windows.Media.Audio.AudioGraphCreationStatus* value);
                [propget] HRESULT Graph([out] [retval] Windows.Media.Audio.AudioGraph** value);
            }

            [exclusiveto(Windows.Media.Audio.AudioGraphSettings)]
            [uuid(A5D91CC6-C2EB-4A61-A214-1D66D75F83DA)]
            [version(0x0A000000)]
            interface IAudioGraphSettingsFactory : IInspectable
            {
                HRESULT Create([in] Windows.Media.Render.AudioRenderCategory audioRenderCategory, [out] [retval] Windows.Media.Audio.AudioGraphSettings** value);
            }

            [exclusiveto(Windows.Media.Audio.AudioGraphSettings)]
            [uuid(1D59647F-E6FE-4628-84F8-9D8BDBA25785)]
            [version(0x0A000000)]
            interface IAudioGraphSettings : IInspectable
            {
                [propget] HRESULT EncodingProperties([out] [retval] Windows.Media.MediaProperties.AudioEncodingProperties** value);
                [propput] HRESULT EncodingProperties([in] Windows.Media.MediaProperties.AudioEncodingProperties* value);
                [propget] HRESULT PrimaryRenderDevice([out] [retval] Windows.Devices.Enumeration.DeviceInformation** value);
                [propput] HRESULT PrimaryRenderDevice([in] Windows.Devices.Enumeration.DeviceInformation* value);
                [propget] HRESULT QuantumSizeSelectionMode([out] [retval] Windows.Media.Audio.QuantumSizeSelectionMode* value);
                [propput] HRESULT QuantumSizeSelectionMode([in] Windows.Media.Audio.QuantumSizeSelectionMode value);
                [propget] HRESULT DesiredSamplesPerQuantum([out] [retval] INT32* value);
                [propput] HRESULT DesiredSamplesPerQuantum([in] INT32 value);
                [propget] HRESULT AudioRenderCategory([out] [retval] Windows.Media.Render.AudioRenderCategory* value);
                [propput] HRESULT AudioRenderCategory([in] Windows.Media.Render.AudioRenderCategory value);
                [propget] HRESULT DesiredRenderDeviceAudioProcessing([out] [retval] Windows.Media.AudioProcessing* value);
                [propput] HRESULT DesiredRenderDeviceAudioProcessing([in] Windows.Media.AudioProcessing value);
            }

            [exclusiveto(Windows.Media.Audio.AudioGraph)]
            [uuid(76EC3132-E159-4AB7-A82A-17BEB4B31E94)]
            [version(0x0A000000)]
            interface IAudioGraphStatics : IInspectable
            {
                HRESULT CreateAsync([in] Windows.Media.Audio.AudioGraphSettings* settings, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Audio.CreateAudioGraphResult*>** result);
            }

            [exclusiveto(Windows.Media.Audio.CreateAudioDeviceInputNodeResult)]
            [uuid(16EEC7A8-1CA7-40EF-91A4-D346E0AA1BBA)]
            [version(0x0A000000)]
            interface ICreateAudioDeviceInputNodeResult : IInspectable
            {
                [propget] HRESULT Status([out] [retval] Windows.Media.Audio.AudioDeviceNodeCreationStatus* value);
                [propget] HRESULT DeviceInputNode([out] [retval] Windows.Media.Audio.AudioDeviceInputNode** value);
            }

            [exclusiveto(Windows.Media.Audio.CreateAudioDeviceOutputNodeResult)]
            [uuid(F7776D27-1D9A-47F7-9CD4-2859CC1B7BFF)]
            [version(0x0A000000)]
            interface ICreateAudioDeviceOutputNodeResult : IInspectable
            {
                [propget] HRESULT Status([out] [retval] Windows.Media.Audio.AudioDeviceNodeCreationStatus* value);
                [propget] HRESULT DeviceOutputNode([out] [retval] Windows.Media.Audio.AudioDeviceOutputNode** value);
            }

            [exclusiveto(Windows.Media.Audio.CreateAudioFileInputNodeResult)]
            [uuid(CE83D61C-E297-4C50-9CE7-1C7A69D6BD09)]
            [version(0x0A000000)]
            interface ICreateAudioFileInputNodeResult : IInspectable
            {
                [propget] HRESULT Status([out] [retval] Windows.Media.Audio.AudioFileNodeCreationStatus* value);
                [propget] HRESULT FileInputNode([out] [retval] Windows.Media.Audio.AudioFileInputNode** value);
            }

            [exclusiveto(Windows.Media.Audio.CreateAudioFileOutputNodeResult)]
            [uuid(47D6BA7B-E909-453F-866E-5540CDA734FF)]
            [version(0x0A000000)]
            interface ICreateAudioFileOutputNodeResult : IInspectable
            {
                [propget] HRESULT Status([out] [retval] Windows.Media.Audio.AudioFileNodeCreationStatus* value);
                [propget] HRESULT FileOutputNode([out] [retval] Windows.Media.Audio.AudioFileOutputNode** value);
            }

            [exclusiveto(Windows.Media.Audio.AudioGraphUnrecoverableErrorOccurredEventArgs)]
            [uuid(C3D9CBE0-3FF6-4FB3-B262-50D435C55423)]
            [version(0x0A000000)]
            interface IAudioGraphUnrecoverableErrorOccurredEventArgs : IInspectable
            {
                [propget] HRESULT Error([out] [retval] Windows.Media.Audio.AudioGraphUnrecoverableError* value);
            }

            [exclusiveto(Windows.Media.Audio.AudioGraph)]
            [uuid(1AD46EED-E48C-4E14-9660-2C4F83E9CDD8)]
            [version(0x0A000000)]
            interface IAudioGraph : IInspectable
                requires
                    Windows.Foundation.IClosable
            {
                [overload("CreateFrameInputNode")] HRESULT CreateFrameInputNode([out] [retval] Windows.Media.Audio.AudioFrameInputNode** frameInputNode);
                [overload("CreateFrameInputNode")] HRESULT CreateFrameInputNodeWithFormat([in] Windows.Media.MediaProperties.AudioEncodingProperties* encodingProperties, [out] [retval] Windows.Media.Audio.AudioFrameInputNode** frameInputNode);
                [overload("CreateDeviceInputNodeAsync")] HRESULT CreateDeviceInputNodeAsync([in] Windows.Media.Capture.MediaCategory category, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Audio.CreateAudioDeviceInputNodeResult*>** result);
                [overload("CreateDeviceInputNodeAsync")] HRESULT CreateDeviceInputNodeWithFormatAsync([in] Windows.Media.Capture.MediaCategory category, [in] Windows.Media.MediaProperties.AudioEncodingProperties* encodingProperties, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Audio.CreateAudioDeviceInputNodeResult*>** result);
                [overload("CreateDeviceInputNodeAsync")] HRESULT CreateDeviceInputNodeWithFormatOnDeviceAsync([in] Windows.Media.Capture.MediaCategory category, [in] Windows.Media.MediaProperties.AudioEncodingProperties* encodingProperties, [in] Windows.Devices.Enumeration.DeviceInformation* device, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Audio.CreateAudioDeviceInputNodeResult*>** result);
                [overload("CreateFrameOutputNode")] HRESULT CreateFrameOutputNode([out] [retval] Windows.Media.Audio.AudioFrameOutputNode** frameOutputNode);
                [overload("CreateFrameOutputNode")] HRESULT CreateFrameOutputNodeWithFormat([in] Windows.Media.MediaProperties.AudioEncodingProperties* encodingProperties, [out] [retval] Windows.Media.Audio.AudioFrameOutputNode** frameOutputNode);
                HRESULT CreateDeviceOutputNodeAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Audio.CreateAudioDeviceOutputNodeResult*>** result);
                HRESULT CreateFileInputNodeAsync([in] Windows.Storage.IStorageFile* file, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Audio.CreateAudioFileInputNodeResult*>** result);
                [overload("CreateFileOutputNodeAsync")] HRESULT CreateFileOutputNodeAsync([in] Windows.Storage.IStorageFile* file, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Audio.CreateAudioFileOutputNodeResult*>** result);
                [overload("CreateFileOutputNodeAsync")] HRESULT CreateFileOutputNodeWithFileProfileAsync([in] Windows.Storage.IStorageFile* file, [in] Windows.Media.MediaProperties.MediaEncodingProfile* fileEncodingProfile, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Audio.CreateAudioFileOutputNodeResult*>** result);
                [overload("CreateSubmixNode")] HRESULT CreateSubmixNode([out] [retval] Windows.Media.Audio.AudioSubmixNode** submixNode);
                [overload("CreateSubmixNode")] HRESULT CreateSubmixNodeWithFormat([in] Windows.Media.MediaProperties.AudioEncodingProperties* encodingProperties, [out] [retval] Windows.Media.Audio.AudioSubmixNode** submixNode);
                HRESULT Start();
                HRESULT Stop();
                HRESULT ResetAllNodes();
                [eventadd] HRESULT QuantumStarted([in] Windows.Foundation.TypedEventHandler<Windows.Media.Audio.AudioGraph*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT QuantumStarted([in] EventRegistrationToken token);
                [eventadd] HRESULT QuantumProcessed([in] Windows.Foundation.TypedEventHandler<Windows.Media.Audio.AudioGraph*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT QuantumProcessed([in] EventRegistrationToken token);
                [eventadd] HRESULT UnrecoverableErrorOccurred([in] Windows.Foundation.TypedEventHandler<Windows.Media.Audio.AudioGraph*, Windows.Media.Audio.AudioGraphUnrecoverableErrorOccurredEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT UnrecoverableErrorOccurred([in] EventRegistrationToken token);
                [propget] HRESULT CompletedQuantumCount([out] [retval] UINT64* value);
                [propget] HRESULT EncodingProperties([out] [retval] Windows.Media.MediaProperties.AudioEncodingProperties** value);
                [propget] HRESULT LatencyInSamples([out] [retval] INT32* value);
                [propget] HRESULT PrimaryRenderDevice([out] [retval] Windows.Devices.Enumeration.DeviceInformation** value);
                [propget] HRESULT RenderDeviceAudioProcessing([out] [retval] Windows.Media.AudioProcessing* value);
                [propget] HRESULT SamplesPerQuantum([out] [retval] INT32* value);
            }

            [uuid(15389D7F-DBD8-4819-BF03-668E9357CD6D)]
            [version(0x0A000000)]
            interface IAudioNode : IInspectable
                requires
                    Windows.Foundation.IClosable
            {
                [propget] HRESULT EffectDefinitions([out] [retval] Windows.Foundation.Collections.IVector<Windows.Media.Effects.IAudioEffectDefinition*>** value);
                [propput] HRESULT OutgoingGain([in] DOUBLE value);
                [propget] HRESULT OutgoingGain([out] [retval] DOUBLE* value);
                [propget] HRESULT EncodingProperties([out] [retval] Windows.Media.MediaProperties.AudioEncodingProperties** value);
                [propget] HRESULT ConsumeInput([out] [retval] boolean* value);
                [propput] HRESULT ConsumeInput([in] boolean value);
                HRESULT Start();
                HRESULT Stop();
                HRESULT Reset();
                HRESULT DisableEffectsByDefinition([in] Windows.Media.Effects.IAudioEffectDefinition* definition);
                HRESULT EnableEffectsByDefinition([in] Windows.Media.Effects.IAudioEffectDefinition* definition);
            }

            [uuid(D148005C-8428-4784-B7FD-A99D468C5D20)]
            [version(0x0A000000)]
            interface IAudioInputNode : IInspectable
                requires
                    Windows.Media.Audio.IAudioNode,
                    Windows.Foundation.IClosable
            {
                [propget] HRESULT OutgoingConnections([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Media.Audio.AudioGraphConnection*>** value);
                [overload("AddOutgoingConnection")] HRESULT AddOutgoingConnection([in] Windows.Media.Audio.IAudioNode* destination);
                [overload("AddOutgoingConnection")] HRESULT AddOutgoingConnectionWithGain([in] Windows.Media.Audio.IAudioNode* destination, [in] DOUBLE gain);
                HRESULT RemoveOutgoingConnection([in] Windows.Media.Audio.IAudioNode* destination);
            }

            [exclusiveto(Windows.Media.Audio.AudioFrameInputNode)]
            [uuid(01B266C7-FD96-4FF5-A3C5-D27A9BF44237)]
            [version(0x0A000000)]
            interface IAudioFrameInputNode : IInspectable
                requires
                    Windows.Media.Audio.IAudioInputNode,
                    Windows.Media.Audio.IAudioNode,
                    Windows.Foundation.IClosable
            {
                [propput] HRESULT PlaybackSpeedFactor([in] DOUBLE value);
                [propget] HRESULT PlaybackSpeedFactor([out] [retval] DOUBLE* value);
                HRESULT AddFrame([in] Windows.Media.AudioFrame* frame);
                HRESULT DiscardQueuedFrames();
                [propget] HRESULT QueuedSampleCount([out] [retval] UINT64* value);
                [eventadd] HRESULT AudioFrameCompleted([in] Windows.Foundation.TypedEventHandler<Windows.Media.Audio.AudioFrameInputNode*, Windows.Media.Audio.AudioFrameCompletedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT AudioFrameCompleted([in] EventRegistrationToken token);
                [eventadd] HRESULT QuantumStarted([in] Windows.Foundation.TypedEventHandler<Windows.Media.Audio.AudioFrameInputNode*, Windows.Media.Audio.FrameInputNodeQuantumStartedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT QuantumStarted([in] EventRegistrationToken token);
            }

            [exclusiveto(Windows.Media.Audio.AudioFileInputNode)]
            [uuid(905B67C8-6F65-4CD4-8890-4694843C276D)]
            [version(0x0A000000)]
            interface IAudioFileInputNode : IInspectable
                requires
                    Windows.Media.Audio.IAudioInputNode,
                    Windows.Media.Audio.IAudioNode,
                    Windows.Foundation.IClosable
            {
                [propput] HRESULT PlaybackSpeedFactor([in] DOUBLE value);
                [propget] HRESULT PlaybackSpeedFactor([out] [retval] DOUBLE* value);
                [propget] HRESULT Position([out] [retval] Windows.Foundation.TimeSpan* value);
                HRESULT Seek([in] Windows.Foundation.TimeSpan position);
                [propget] HRESULT StartTime([out] [retval] Windows.Foundation.IReference<Windows.Foundation.TimeSpan>** value);
                [propput] HRESULT StartTime([in] Windows.Foundation.IReference<Windows.Foundation.TimeSpan>* value);
                [propget] HRESULT EndTime([out] [retval] Windows.Foundation.IReference<Windows.Foundation.TimeSpan>** value);
                [propput] HRESULT EndTime([in] Windows.Foundation.IReference<Windows.Foundation.TimeSpan>* value);
                [propget] HRESULT LoopCount([out] [retval] Windows.Foundation.IReference<INT32>** value);
                [propput] HRESULT LoopCount([in] Windows.Foundation.IReference<INT32>* value);
                [propget] HRESULT Duration([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT SourceFile([out] [retval] Windows.Storage.StorageFile** value);
                [eventadd] HRESULT FileCompleted([in] Windows.Foundation.TypedEventHandler<Windows.Media.Audio.AudioFileInputNode*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT FileCompleted([in] EventRegistrationToken token);
            }

            [exclusiveto(Windows.Media.Audio.AudioDeviceInputNode)]
            [uuid(B01B6BE1-6F4E-49E2-AC01-559D62BEB3A9)]
            [version(0x0A000000)]
            interface IAudioDeviceInputNode : IInspectable
                requires
                    Windows.Media.Audio.IAudioInputNode,
                    Windows.Media.Audio.IAudioNode,
                    Windows.Foundation.IClosable
            {
                [propget] HRESULT Device([out] [retval] Windows.Devices.Enumeration.DeviceInformation** value);
            }

            [exclusiveto(Windows.Media.Audio.AudioDeviceOutputNode)]
            [uuid(362EDBFF-FF1C-4434-9E0F-BD2EF522AC82)]
            [version(0x0A000000)]
            interface IAudioDeviceOutputNode : IInspectable
                requires
                    Windows.Media.Audio.IAudioNode,
                    Windows.Foundation.IClosable
            {
                [propget] HRESULT Device([out] [retval] Windows.Devices.Enumeration.DeviceInformation** value);
            }

            [exclusiveto(Windows.Media.Audio.AudioFrameOutputNode)]
            [uuid(B847371B-3299-45F5-88B3-C9D12A3F1CC8)]
            [version(0x0A000000)]
            interface IAudioFrameOutputNode : IInspectable
                requires
                    Windows.Media.Audio.IAudioNode,
                    Windows.Foundation.IClosable
            {
                HRESULT GetFrame([out] [retval] Windows.Media.AudioFrame** audioFrame);
            }

            [exclusiveto(Windows.Media.Audio.AudioFileOutputNode)]
            [uuid(50E01980-5166-4093-80F8-ADA00089E9CF)]
            [version(0x0A000000)]
            interface IAudioFileOutputNode : IInspectable
                requires
                    Windows.Media.Audio.IAudioNode,
                    Windows.Foundation.IClosable
            {
                [propget] HRESULT File([out] [retval] Windows.Storage.IStorageFile** value);
                [propget] HRESULT FileEncodingProfile([out] [retval] Windows.Media.MediaProperties.MediaEncodingProfile** value);
                HRESULT FinalizeAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Transcoding.TranscodeFailureReason>** result);
            }

            [exclusiveto(Windows.Media.Audio.AudioFrameCompletedEventArgs)]
            [uuid(DC7C829E-0208-4504-A5A8-F0F268920A65)]
            [version(0x0A000000)]
            interface IAudioFrameCompletedEventArgs : IInspectable
            {
                [propget] HRESULT Frame([out] [retval] Windows.Media.AudioFrame** value);
            }

            [exclusiveto(Windows.Media.Audio.FrameInputNodeQuantumStartedEventArgs)]
            [uuid(3D9BD498-A306-4F06-BD9F-E9EFC8226304)]
            [version(0x0A000000)]
            interface IFrameInputNodeQuantumStartedEventArgs : IInspectable
            {
                [propget] HRESULT RequiredSamples([out] [retval] INT32* value);
            }

            [exclusiveto(Windows.Media.Audio.AudioGraphConnection)]
            [uuid(763070ED-D04E-4FAC-B233-600B42EDD469)]
            [version(0x0A000000)]
            interface IAudioGraphConnection : IInspectable
            {
                [propget] HRESULT Destination([out] [retval] Windows.Media.Audio.IAudioNode** value);
                [propput] HRESULT Gain([in] DOUBLE value);
                [propget] HRESULT Gain([out] [retval] DOUBLE* value);
            }

            [exclusiveto(Windows.Media.Audio.EqualizerBand)]
            [uuid(C00A5A6A-262D-4B85-9BB7-43280B62ED0C)]
            [version(0x0A000000)]
            interface IEqualizerBand : IInspectable
            {
                [propget] HRESULT Bandwidth([out] [retval] DOUBLE* value);
                [propput] HRESULT Bandwidth([in] DOUBLE value);
                [propget] HRESULT FrequencyCenter([out] [retval] DOUBLE* value);
                [propput] HRESULT FrequencyCenter([in] DOUBLE value);
                [propget] HRESULT Gain([out] [retval] DOUBLE* value);
                [propput] HRESULT Gain([in] DOUBLE value);
            }

            [exclusiveto(Windows.Media.Audio.EqualizerEffectDefinition)]
            [uuid(D2876FC4-D410-4EB5-9E69-C9AA1277EAF0)]
            [version(0x0A000000)]
            interface IEqualizerEffectDefinitionFactory : IInspectable
            {
                HRESULT Create([in] Windows.Media.Audio.AudioGraph* audioGraph, [out] [retval] Windows.Media.Audio.EqualizerEffectDefinition** value);
            }

            [exclusiveto(Windows.Media.Audio.ReverbEffectDefinition)]
            [uuid(A7D5CBFE-100B-4FF0-9DA6-DC4E05A759F0)]
            [version(0x0A000000)]
            interface IReverbEffectDefinitionFactory : IInspectable
            {
                HRESULT Create([in] Windows.Media.Audio.AudioGraph* audioGraph, [out] [retval] Windows.Media.Audio.ReverbEffectDefinition** value);
            }

            [exclusiveto(Windows.Media.Audio.EchoEffectDefinition)]
            [uuid(0D4E2257-AAF2-4E86-A54C-FB79DB8F6C12)]
            [version(0x0A000000)]
            interface IEchoEffectDefinitionFactory : IInspectable
            {
                HRESULT Create([in] Windows.Media.Audio.AudioGraph* audioGraph, [out] [retval] Windows.Media.Audio.EchoEffectDefinition** value);
            }

            [exclusiveto(Windows.Media.Audio.LimiterEffectDefinition)]
            [uuid(ECBAE6F1-61FF-45EF-B8F5-48659A57C72D)]
            [version(0x0A000000)]
            interface ILimiterEffectDefinitionFactory : IInspectable
            {
                HRESULT Create([in] Windows.Media.Audio.AudioGraph* audioGraph, [out] [retval] Windows.Media.Audio.LimiterEffectDefinition** value);
            }

            [exclusiveto(Windows.Media.Audio.EqualizerEffectDefinition)]
            [uuid(023F6F1F-83FE-449A-A822-C696442D16B0)]
            [version(0x0A000000)]
            interface IEqualizerEffectDefinition : IInspectable
                requires
                    Windows.Media.Effects.IAudioEffectDefinition
            {
                [propget] HRESULT Bands([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Media.Audio.EqualizerBand*>** value);
            }

            [exclusiveto(Windows.Media.Audio.ReverbEffectDefinition)]
            [uuid(4606AA89-F563-4D0A-8F6E-F0CDDFF35D84)]
            [version(0x0A000000)]
            interface IReverbEffectDefinition : IInspectable
                requires
                    Windows.Media.Effects.IAudioEffectDefinition
            {
                [propput] HRESULT WetDryMix([in] DOUBLE value);
                [propget] HRESULT WetDryMix([out] [retval] DOUBLE* value);
                [propput] HRESULT ReflectionsDelay([in] UINT32 value);
                [propget] HRESULT ReflectionsDelay([out] [retval] UINT32* value);
                [propput] HRESULT ReverbDelay([in] BYTE value);
                [propget] HRESULT ReverbDelay([out] [retval] BYTE* value);
                [propput] HRESULT RearDelay([in] BYTE value);
                [propget] HRESULT RearDelay([out] [retval] BYTE* value);
                [propput] HRESULT PositionLeft([in] BYTE value);
                [propget] HRESULT PositionLeft([out] [retval] BYTE* value);
                [propput] HRESULT PositionRight([in] BYTE value);
                [propget] HRESULT PositionRight([out] [retval] BYTE* value);
                [propput] HRESULT PositionMatrixLeft([in] BYTE value);
                [propget] HRESULT PositionMatrixLeft([out] [retval] BYTE* value);
                [propput] HRESULT PositionMatrixRight([in] BYTE value);
                [propget] HRESULT PositionMatrixRight([out] [retval] BYTE* value);
                [propput] HRESULT EarlyDiffusion([in] BYTE value);
                [propget] HRESULT EarlyDiffusion([out] [retval] BYTE* value);
                [propput] HRESULT LateDiffusion([in] BYTE value);
                [propget] HRESULT LateDiffusion([out] [retval] BYTE* value);
                [propput] HRESULT LowEQGain([in] BYTE value);
                [propget] HRESULT LowEQGain([out] [retval] BYTE* value);
                [propput] HRESULT LowEQCutoff([in] BYTE value);
                [propget] HRESULT LowEQCutoff([out] [retval] BYTE* value);
                [propput] HRESULT HighEQGain([in] BYTE value);
                [propget] HRESULT HighEQGain([out] [retval] BYTE* value);
                [propput] HRESULT HighEQCutoff([in] BYTE value);
                [propget] HRESULT HighEQCutoff([out] [retval] BYTE* value);
                [propput] HRESULT RoomFilterFreq([in] DOUBLE value);
                [propget] HRESULT RoomFilterFreq([out] [retval] DOUBLE* value);
                [propput] HRESULT RoomFilterMain([in] DOUBLE value);
                [propget] HRESULT RoomFilterMain([out] [retval] DOUBLE* value);
                [propput] HRESULT RoomFilterHF([in] DOUBLE value);
                [propget] HRESULT RoomFilterHF([out] [retval] DOUBLE* value);
                [propput] HRESULT ReflectionsGain([in] DOUBLE value);
                [propget] HRESULT ReflectionsGain([out] [retval] DOUBLE* value);
                [propput] HRESULT ReverbGain([in] DOUBLE value);
                [propget] HRESULT ReverbGain([out] [retval] DOUBLE* value);
                [propput] HRESULT DecayTime([in] DOUBLE value);
                [propget] HRESULT DecayTime([out] [retval] DOUBLE* value);
                [propput] HRESULT Density([in] DOUBLE value);
                [propget] HRESULT Density([out] [retval] DOUBLE* value);
                [propput] HRESULT RoomSize([in] DOUBLE value);
                [propget] HRESULT RoomSize([out] [retval] DOUBLE* value);
                [propput] HRESULT DisableLateField([in] boolean value);
                [propget] HRESULT DisableLateField([out] [retval] boolean* value);
            }

            [exclusiveto(Windows.Media.Audio.EchoEffectDefinition)]
            [uuid(0E4D3FAA-36B8-4C91-B9DA-11F44A8A6610)]
            [version(0x0A000000)]
            interface IEchoEffectDefinition : IInspectable
                requires
                    Windows.Media.Effects.IAudioEffectDefinition
            {
                [propput] HRESULT WetDryMix([in] DOUBLE value);
                [propget] HRESULT WetDryMix([out] [retval] DOUBLE* value);
                [propput] HRESULT Feedback([in] DOUBLE value);
                [propget] HRESULT Feedback([out] [retval] DOUBLE* value);
                [propput] HRESULT Delay([in] DOUBLE value);
                [propget] HRESULT Delay([out] [retval] DOUBLE* value);
            }

            [exclusiveto(Windows.Media.Audio.LimiterEffectDefinition)]
            [uuid(6B755D19-2603-47BA-BDEB-39055E3486DC)]
            [version(0x0A000000)]
            interface ILimiterEffectDefinition : IInspectable
                requires
                    Windows.Media.Effects.IAudioEffectDefinition
            {
                [propput] HRESULT Release([in] UINT32 value);
                [propget] HRESULT Release([out] [retval] UINT32* value);
                [propput] HRESULT Loudness([in] UINT32 value);
                [propget] HRESULT Loudness([out] [retval] UINT32* value);
            }

            [marshaling_behavior(agile)]
            [static(Windows.Media.Audio.IAudioGraphStatics, 0x0A000000)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass AudioGraph
            {
                [default] interface Windows.Media.Audio.IAudioGraph;
                interface Windows.Foundation.IClosable;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass CreateAudioGraphResult
            {
                [default] interface Windows.Media.Audio.ICreateAudioGraphResult;
            }

            [activatable(Windows.Media.Audio.IAudioGraphSettingsFactory, 0x0A000000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass AudioGraphSettings
            {
                [default] interface Windows.Media.Audio.IAudioGraphSettings;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass AudioDeviceInputNode
            {
                [default] interface Windows.Media.Audio.IAudioDeviceInputNode;
                interface Windows.Media.Audio.IAudioInputNode;
                interface Windows.Media.Audio.IAudioNode;
                interface Windows.Foundation.IClosable;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass CreateAudioDeviceInputNodeResult
            {
                [default] interface Windows.Media.Audio.ICreateAudioDeviceInputNodeResult;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass AudioDeviceOutputNode
            {
                [default] interface Windows.Media.Audio.IAudioDeviceOutputNode;
                interface Windows.Media.Audio.IAudioNode;
                interface Windows.Foundation.IClosable;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass CreateAudioDeviceOutputNodeResult
            {
                [default] interface Windows.Media.Audio.ICreateAudioDeviceOutputNodeResult;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass AudioFileInputNode
            {
                [default] interface Windows.Media.Audio.IAudioFileInputNode;
                interface Windows.Media.Audio.IAudioInputNode;
                interface Windows.Media.Audio.IAudioNode;
                interface Windows.Foundation.IClosable;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass CreateAudioFileInputNodeResult
            {
                [default] interface Windows.Media.Audio.ICreateAudioFileInputNodeResult;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass AudioFileOutputNode
            {
                [default] interface Windows.Media.Audio.IAudioFileOutputNode;
                interface Windows.Media.Audio.IAudioNode;
                interface Windows.Foundation.IClosable;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass CreateAudioFileOutputNodeResult
            {
                [default] interface Windows.Media.Audio.ICreateAudioFileOutputNodeResult;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass AudioGraphUnrecoverableErrorOccurredEventArgs
            {
                [default] interface Windows.Media.Audio.IAudioGraphUnrecoverableErrorOccurredEventArgs;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass AudioFrameInputNode
            {
                [default] interface Windows.Media.Audio.IAudioFrameInputNode;
                interface Windows.Media.Audio.IAudioInputNode;
                interface Windows.Media.Audio.IAudioNode;
                interface Windows.Foundation.IClosable;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass AudioFrameOutputNode
            {
                [default] interface Windows.Media.Audio.IAudioFrameOutputNode;
                interface Windows.Media.Audio.IAudioNode;
                interface Windows.Foundation.IClosable;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass AudioSubmixNode
            {
                [default] interface Windows.Media.Audio.IAudioInputNode;
                interface Windows.Media.Audio.IAudioNode;
                interface Windows.Foundation.IClosable;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass AudioGraphConnection
            {
                [default] interface Windows.Media.Audio.IAudioGraphConnection;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass AudioFrameCompletedEventArgs
            {
                [default] interface Windows.Media.Audio.IAudioFrameCompletedEventArgs;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass FrameInputNodeQuantumStartedEventArgs
            {
                [default] interface Windows.Media.Audio.IFrameInputNodeQuantumStartedEventArgs;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass EqualizerBand
            {
                [default] interface Windows.Media.Audio.IEqualizerBand;
            }

            [activatable(Windows.Media.Audio.IEqualizerEffectDefinitionFactory, 0x0A000000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass EqualizerEffectDefinition
            {
                [default] interface Windows.Media.Audio.IEqualizerEffectDefinition;
                interface Windows.Media.Effects.IAudioEffectDefinition;
            }

            [activatable(Windows.Media.Audio.IReverbEffectDefinitionFactory, 0x0A000000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass ReverbEffectDefinition
            {
                [default] interface Windows.Media.Audio.IReverbEffectDefinition;
                interface Windows.Media.Effects.IAudioEffectDefinition;
            }

            [activatable(Windows.Media.Audio.IEchoEffectDefinitionFactory, 0x0A000000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass EchoEffectDefinition
            {
                [default] interface Windows.Media.Audio.IEchoEffectDefinition;
                interface Windows.Media.Effects.IAudioEffectDefinition;
            }

            [activatable(Windows.Media.Audio.ILimiterEffectDefinitionFactory, 0x0A000000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass LimiterEffectDefinition
            {
                [default] interface Windows.Media.Audio.ILimiterEffectDefinition;
                interface Windows.Media.Effects.IAudioEffectDefinition;
            }
        }
    }
}
