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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "windowscontracts.idl";
import "Windows.Foundation.idl";
import "Windows.Foundation.Numerics.idl";
import "Windows.Graphics.DirectX.Direct3D11.idl";
import "Windows.Media.idl";
import "Windows.Media.Capture.idl";
import "Windows.Media.Editing.idl";
import "Windows.Media.MediaProperties.idl";
import "Windows.Media.Playback.idl";
import "Windows.Media.Render.idl";
import "Windows.Media.Transcoding.idl";
import "Windows.Storage.Streams.idl";
import "Windows.UI.idl";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        namespace Collections
        {
            interface IPropertySet;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        namespace Numerics
        {
            typedef struct Quaternion Quaternion;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        typedef struct Rect Rect;

        typedef struct Size Size;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Graphics
    {
        namespace DirectX
        {
            namespace Direct3D11
            {
                interface IDirect3DDevice;

                interface IDirect3DSurface;
            }
        }
    }
}
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 Editing
        {
            runtimeclass MediaOverlay;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        interface IMediaExtension;
    }
}
namespace Windows
{
    namespace Media
    {
        namespace MediaProperties
        {
            runtimeclass AudioEncodingProperties;

            typedef enum MediaMirroringOptions MediaMirroringOptions;

            typedef enum MediaRotation MediaRotation;

            typedef enum SphericalVideoFrameFormat SphericalVideoFrameFormat;

            runtimeclass VideoEncodingProperties;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Playback
        {
            typedef enum SphericalVideoProjectionMode SphericalVideoProjectionMode;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Render
        {
            typedef enum AudioRenderCategory AudioRenderCategory;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Transcoding
        {
            typedef enum MediaVideoProcessingAlgorithm MediaVideoProcessingAlgorithm;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        runtimeclass VideoFrame;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IRandomAccessStreamWithContentType;
        }
    }
}
namespace Windows
{
    namespace UI
    {
        typedef struct Color Color;
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Effects
        {
            typedef enum AudioEffectState AudioEffectState;

            typedef enum AudioEffectType AudioEffectType;

            typedef enum MediaEffectClosedReason MediaEffectClosedReason;

            typedef enum MediaMemoryTypes MediaMemoryTypes;

            interface IAcousticEchoCancellationConfiguration;

            interface IAudioCaptureEffectsManager;

            interface IAudioEffect;

            interface IAudioEffect2;

            interface IAudioEffectDefinition;

            interface IAudioEffectDefinitionFactory;

            interface IAudioEffectsManagerStatics;

            interface IAudioRenderEffectsManager;

            interface IAudioRenderEffectsManager2;

            interface IBasicAudioEffect;

            interface IBasicVideoEffect;

            interface ICompositeVideoFrameContext;

            interface IProcessAudioFrameContext;

            interface IProcessVideoFrameContext;

            interface IVideoCompositor;

            interface IVideoCompositorDefinition;

            interface IVideoCompositorDefinitionFactory;

            interface IVideoEffectDefinition;

            interface IVideoEffectDefinitionFactory;

            interface IVideoTransformEffectDefinition;

            interface IVideoTransformEffectDefinition2;

            interface IVideoTransformSphericalProjection;

            runtimeclass AcousticEchoCancellationConfiguration;

            runtimeclass AudioCaptureEffectsManager;

            runtimeclass AudioEffect;

            runtimeclass AudioEffectDefinition;

            runtimeclass AudioEffectsManager;

            runtimeclass AudioRenderEffectsManager;

            runtimeclass CompositeVideoFrameContext;

            runtimeclass ProcessAudioFrameContext;

            runtimeclass ProcessVideoFrameContext;

            runtimeclass VideoCompositorDefinition;

            runtimeclass VideoEffectDefinition;

            runtimeclass VideoTransformEffectDefinition;

            runtimeclass VideoTransformSphericalProjection;
        }
    }
}

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

                interface Windows.Foundation.Collections.IIterable<Windows.Media.Effects.IAudioEffectDefinition*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Media.Effects.IVideoEffectDefinition*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Media.Effects.AudioEffect*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Media.Effects.IAudioEffectDefinition*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Media.Effects.IVideoEffectDefinition*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Media.Effects.AudioEffect*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Media.Effects.IAudioEffectDefinition*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Media.Effects.IVideoEffectDefinition*>;

                interface Windows.Foundation.Collections.IVector<Windows.Media.Effects.IAudioEffectDefinition*>;

                interface Windows.Foundation.Collections.IVector<Windows.Media.Effects.IVideoEffectDefinition*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Effects.AudioCaptureEffectsManager*, IInspectable*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Effects.AudioRenderEffectsManager*, IInspectable*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Media
    {
        namespace Effects
        {
            [contract(Windows.Foundation.UniversalApiContract, 19.0)]
            enum AudioEffectState
            {
                Off = 0,
                On  = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum AudioEffectType
            {
                Other                    = 0,
                AcousticEchoCancellation = 1,
                NoiseSuppression         = 2,
                AutomaticGainControl     = 3,
                BeamForming              = 4,
                ConstantToneRemoval      = 5,
                Equalizer                = 6,
                LoudnessEqualizer        = 7,
                BassBoost                = 8,
                VirtualSurround          = 9,
                VirtualHeadphones        = 10,
                SpeakerFill              = 11,
                RoomCorrection           = 12,
                BassManagement           = 13,
                EnvironmentalEffects     = 14,
                SpeakerProtection        = 15,
                SpeakerCompensation      = 16,
                DynamicRangeCompression  = 17,
                [contract(Windows.Foundation.UniversalApiContract, 12.0)]
                FarFieldBeamForming      = 18,
                [contract(Windows.Foundation.UniversalApiContract, 13.0)]
                DeepNoiseSuppression     = 19
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum MediaEffectClosedReason
            {
                Done                      = 0,
                UnknownError              = 1,
                UnsupportedEncodingFormat = 2,
                EffectCurrentlyUnloaded   = 3
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum MediaMemoryTypes
            {
                Gpu       = 0,
                Cpu       = 1,
                GpuAndCpu = 2
            };

            [contract(Windows.Foundation.UniversalApiContract, 19.0)]
            [exclusiveto(Windows.Media.Effects.AcousticEchoCancellationConfiguration)]
            [uuid(587E735B-175B-5177-A407-2E33BAFE33A5)]
            interface IAcousticEchoCancellationConfiguration : IInspectable
            {
                HRESULT SetEchoCancellationRenderEndpoint([in] HSTRING deviceId);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Effects.AudioCaptureEffectsManager)]
            [uuid(8F85C271-038D-4393-8298-540110608EEF)]
            interface IAudioCaptureEffectsManager : IInspectable
            {
                [eventadd] HRESULT AudioCaptureEffectsChanged([in] Windows.Foundation.TypedEventHandler<Windows.Media.Effects.AudioCaptureEffectsManager*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT AudioCaptureEffectsChanged([in] EventRegistrationToken token);
                HRESULT GetAudioCaptureEffects([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Media.Effects.AudioEffect*>** effects);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Effects.AudioEffect)]
            [uuid(34AAFA51-9207-4055-BE93-6E5734A86AE4)]
            interface IAudioEffect : IInspectable
            {
                [propget] HRESULT AudioEffectType([out] [retval] Windows.Media.Effects.AudioEffectType* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 19.0)]
            [exclusiveto(Windows.Media.Effects.AudioEffect)]
            [uuid(06703CB0-757E-5757-8AF0-6BA58A8B2990)]
            interface IAudioEffect2 : IInspectable
            {
                [propget] HRESULT AcousticEchoCancellationConfiguration([out] [retval] Windows.Media.Effects.AcousticEchoCancellationConfiguration** value);
                [propget] HRESULT CanSetState([out] [retval] boolean* value);
                [propget] HRESULT State([out] [retval] Windows.Media.Effects.AudioEffectState* value);
                HRESULT SetState([in] Windows.Media.Effects.AudioEffectState newState);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(E4D7F974-7D80-4F73-9089-E31C9DB9C294)]
            interface IAudioEffectDefinition : IInspectable
            {
                [propget] HRESULT ActivatableClassId([out] [retval] HSTRING* value);
                [propget] HRESULT Properties([out] [retval] Windows.Foundation.Collections.IPropertySet** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Effects.AudioEffectDefinition)]
            [uuid(8E1DA646-E705-45ED-8A2B-FC4E4F405A97)]
            interface IAudioEffectDefinitionFactory : IInspectable
            {
                HRESULT Create([in] HSTRING activatableClassId, [out] [retval] Windows.Media.Effects.AudioEffectDefinition** value);
                HRESULT CreateWithProperties([in] HSTRING activatableClassId, [in] Windows.Foundation.Collections.IPropertySet* props, [out] [retval] Windows.Media.Effects.AudioEffectDefinition** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Effects.AudioEffectsManager)]
            [uuid(66406C04-86FA-47CC-A315-F489D8C3FE10)]
            interface IAudioEffectsManagerStatics : IInspectable
            {
                [overload("CreateAudioRenderEffectsManager")] HRESULT CreateAudioRenderEffectsManager([in] HSTRING deviceId, [in] Windows.Media.Render.AudioRenderCategory category, [out] [retval] Windows.Media.Effects.AudioRenderEffectsManager** value);
                [overload("CreateAudioRenderEffectsManager")] HRESULT CreateAudioRenderEffectsManagerWithMode([in] HSTRING deviceId, [in] Windows.Media.Render.AudioRenderCategory category, [in] Windows.Media.AudioProcessing mode, [out] [retval] Windows.Media.Effects.AudioRenderEffectsManager** value);
                [overload("CreateAudioCaptureEffectsManager")] HRESULT CreateAudioCaptureEffectsManager([in] HSTRING deviceId, [in] Windows.Media.Capture.MediaCategory category, [out] [retval] Windows.Media.Effects.AudioCaptureEffectsManager** value);
                [overload("CreateAudioCaptureEffectsManager")] HRESULT CreateAudioCaptureEffectsManagerWithMode([in] HSTRING deviceId, [in] Windows.Media.Capture.MediaCategory category, [in] Windows.Media.AudioProcessing mode, [out] [retval] Windows.Media.Effects.AudioCaptureEffectsManager** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Effects.AudioRenderEffectsManager)]
            [uuid(4DC98966-8751-42B2-BFCB-39CA7864BD47)]
            interface IAudioRenderEffectsManager : IInspectable
            {
                [eventadd] HRESULT AudioRenderEffectsChanged([in] Windows.Foundation.TypedEventHandler<Windows.Media.Effects.AudioRenderEffectsManager*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT AudioRenderEffectsChanged([in] EventRegistrationToken token);
                HRESULT GetAudioRenderEffects([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Media.Effects.AudioEffect*>** effects);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [deprecated("Not supported starting in windows 10", deprecate, Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Effects.AudioRenderEffectsManager)]
            [uuid(A844CD09-5ECC-44B3-BB4E-1DB07287139C)]
            interface IAudioRenderEffectsManager2 : IInspectable
            {
                [deprecated("Not supported starting in windows 10", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] [propget] HRESULT EffectsProviderThumbnail([out] [retval] Windows.Storage.Streams.IRandomAccessStreamWithContentType** value);
                [deprecated("Not supported starting in windows 10", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] [propget] HRESULT EffectsProviderSettingsLabel([out] [retval] HSTRING* value);
                [deprecated("Not supported starting in windows 10", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] HRESULT ShowSettingsUI();
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(8C062C53-6BC0-48B8-A99A-4B41550F1359)]
            interface IBasicAudioEffect : IInspectable
                requires
                    Windows.Media.IMediaExtension
            {
                [propget] HRESULT UseInputFrameForOutput([out] [retval] boolean* value);
                [propget] HRESULT SupportedEncodingProperties([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Media.MediaProperties.AudioEncodingProperties*>** value);
                HRESULT SetEncodingProperties([in] Windows.Media.MediaProperties.AudioEncodingProperties* encodingProperties);
                HRESULT ProcessFrame([in] Windows.Media.Effects.ProcessAudioFrameContext* context);
                HRESULT Close([in] Windows.Media.Effects.MediaEffectClosedReason reason);
                HRESULT DiscardQueuedFrames();
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(8262C7EF-B360-40BE-949B-2FF42FF35693)]
            interface IBasicVideoEffect : IInspectable
                requires
                    Windows.Media.IMediaExtension
            {
                [propget] HRESULT IsReadOnly([out] [retval] boolean* value);
                [propget] HRESULT SupportedMemoryTypes([out] [retval] Windows.Media.Effects.MediaMemoryTypes* value);
                [propget] HRESULT TimeIndependent([out] [retval] boolean* value);
                [propget] HRESULT SupportedEncodingProperties([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Media.MediaProperties.VideoEncodingProperties*>** value);
                HRESULT SetEncodingProperties([in] Windows.Media.MediaProperties.VideoEncodingProperties* encodingProperties, [in] Windows.Graphics.DirectX.Direct3D11.IDirect3DDevice* device);
                HRESULT ProcessFrame([in] Windows.Media.Effects.ProcessVideoFrameContext* context);
                HRESULT Close([in] Windows.Media.Effects.MediaEffectClosedReason reason);
                HRESULT DiscardQueuedFrames();
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Effects.CompositeVideoFrameContext)]
            [uuid(6C30024B-F514-4278-A5F7-B9188049D110)]
            interface ICompositeVideoFrameContext : IInspectable
            {
                [propget] HRESULT SurfacesToOverlay([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Graphics.DirectX.Direct3D11.IDirect3DSurface*>** value);
                [propget] HRESULT BackgroundFrame([out] [retval] Windows.Media.VideoFrame** value);
                [propget] HRESULT OutputFrame([out] [retval] Windows.Media.VideoFrame** value);
                HRESULT GetOverlayForSurface([in] Windows.Graphics.DirectX.Direct3D11.IDirect3DSurface* surfaceToOverlay, [out] [retval] Windows.Media.Editing.MediaOverlay** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Effects.ProcessAudioFrameContext)]
            [uuid(4CD92946-1222-4A27-A586-FB3E20273255)]
            interface IProcessAudioFrameContext : IInspectable
            {
                [propget] HRESULT InputFrame([out] [retval] Windows.Media.AudioFrame** value);
                [propget] HRESULT OutputFrame([out] [retval] Windows.Media.AudioFrame** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Effects.ProcessVideoFrameContext)]
            [uuid(276F0E2B-6461-401E-BA78-0FDAD6114EEC)]
            interface IProcessVideoFrameContext : IInspectable
            {
                [propget] HRESULT InputFrame([out] [retval] Windows.Media.VideoFrame** value);
                [propget] HRESULT OutputFrame([out] [retval] Windows.Media.VideoFrame** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(8510B43E-420C-420F-96C7-7C98BBA1FC55)]
            interface IVideoCompositor : IInspectable
                requires
                    Windows.Media.IMediaExtension
            {
                [propget] HRESULT TimeIndependent([out] [retval] boolean* value);
                HRESULT SetEncodingProperties([in] Windows.Media.MediaProperties.VideoEncodingProperties* backgroundProperties, [in] Windows.Graphics.DirectX.Direct3D11.IDirect3DDevice* device);
                HRESULT CompositeFrame([in] Windows.Media.Effects.CompositeVideoFrameContext* context);
                HRESULT Close([in] Windows.Media.Effects.MediaEffectClosedReason reason);
                HRESULT DiscardQueuedFrames();
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(7946B8D0-2010-4AE3-9AB2-2CEF42EDD4D2)]
            interface IVideoCompositorDefinition : IInspectable
            {
                [propget] HRESULT ActivatableClassId([out] [retval] HSTRING* value);
                [propget] HRESULT Properties([out] [retval] Windows.Foundation.Collections.IPropertySet** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Effects.VideoCompositorDefinition)]
            [uuid(4366FD10-68B8-4D52-89B6-02A968CCA899)]
            interface IVideoCompositorDefinitionFactory : IInspectable
            {
                HRESULT Create([in] HSTRING activatableClassId, [out] [retval] Windows.Media.Effects.VideoCompositorDefinition** value);
                HRESULT CreateWithProperties([in] HSTRING activatableClassId, [in] Windows.Foundation.Collections.IPropertySet* props, [out] [retval] Windows.Media.Effects.VideoCompositorDefinition** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(39F38CF0-8D0F-4F3E-84FC-2D46A5297943)]
            interface IVideoEffectDefinition : IInspectable
            {
                [propget] HRESULT ActivatableClassId([out] [retval] HSTRING* value);
                [propget] HRESULT Properties([out] [retval] Windows.Foundation.Collections.IPropertySet** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Effects.VideoEffectDefinition)]
            [uuid(81439B4E-6E33-428F-9D21-B5AAFEF7617C)]
            interface IVideoEffectDefinitionFactory : IInspectable
            {
                HRESULT Create([in] HSTRING activatableClassId, [out] [retval] Windows.Media.Effects.VideoEffectDefinition** value);
                HRESULT CreateWithProperties([in] HSTRING activatableClassId, [in] Windows.Foundation.Collections.IPropertySet* props, [out] [retval] Windows.Media.Effects.VideoEffectDefinition** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Effects.VideoTransformEffectDefinition)]
            [uuid(9664BB6A-1EA6-4AA6-8074-ABE8851ECAE2)]
            interface IVideoTransformEffectDefinition : IInspectable
                requires
                    Windows.Media.Effects.IVideoEffectDefinition
            {
                [propget] HRESULT PaddingColor([out] [retval] Windows.UI.Color* value);
                [propput] HRESULT PaddingColor([in] Windows.UI.Color value);
                [propget] HRESULT OutputSize([out] [retval] Windows.Foundation.Size* value);
                [propput] HRESULT OutputSize([in] Windows.Foundation.Size value);
                [propget] HRESULT CropRectangle([out] [retval] Windows.Foundation.Rect* value);
                [propput] HRESULT CropRectangle([in] Windows.Foundation.Rect value);
                [propget] HRESULT Rotation([out] [retval] Windows.Media.MediaProperties.MediaRotation* value);
                [propput] HRESULT Rotation([in] Windows.Media.MediaProperties.MediaRotation value);
                [propget] HRESULT Mirror([out] [retval] Windows.Media.MediaProperties.MediaMirroringOptions* value);
                [propput] HRESULT Mirror([in] Windows.Media.MediaProperties.MediaMirroringOptions value);
                [propput] HRESULT ProcessingAlgorithm([in] Windows.Media.Transcoding.MediaVideoProcessingAlgorithm value);
                [propget] HRESULT ProcessingAlgorithm([out] [retval] Windows.Media.Transcoding.MediaVideoProcessingAlgorithm* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [exclusiveto(Windows.Media.Effects.VideoTransformEffectDefinition)]
            [uuid(F0A8089F-66C8-4694-9FD9-1136ABF7444A)]
            interface IVideoTransformEffectDefinition2 : IInspectable
            {
                [propget] HRESULT SphericalProjection([out] [retval] Windows.Media.Effects.VideoTransformSphericalProjection** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [exclusiveto(Windows.Media.Effects.VideoTransformSphericalProjection)]
            [uuid(CF4401F0-9BF2-4C39-9F41-E022514A8468)]
            interface IVideoTransformSphericalProjection : IInspectable
            {
                [propget] HRESULT IsEnabled([out] [retval] boolean* value);
                [propput] HRESULT IsEnabled([in] boolean value);
                [propget] HRESULT FrameFormat([out] [retval] Windows.Media.MediaProperties.SphericalVideoFrameFormat* value);
                [propput] HRESULT FrameFormat([in] Windows.Media.MediaProperties.SphericalVideoFrameFormat value);
                [propget] HRESULT ProjectionMode([out] [retval] Windows.Media.Playback.SphericalVideoProjectionMode* value);
                [propput] HRESULT ProjectionMode([in] Windows.Media.Playback.SphericalVideoProjectionMode value);
                [propget] HRESULT HorizontalFieldOfViewInDegrees([out] [retval] DOUBLE* value);
                [propput] HRESULT HorizontalFieldOfViewInDegrees([in] DOUBLE value);
                [propget] HRESULT ViewOrientation([out] [retval] Windows.Foundation.Numerics.Quaternion* value);
                [propput] HRESULT ViewOrientation([in] Windows.Foundation.Numerics.Quaternion value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 19.0)]
            [marshaling_behavior(agile)]
            runtimeclass AcousticEchoCancellationConfiguration
            {
                [default] interface Windows.Media.Effects.IAcousticEchoCancellationConfiguration;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(mta)]
            runtimeclass AudioCaptureEffectsManager
            {
                [default] interface Windows.Media.Effects.IAudioCaptureEffectsManager;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(mta)]
            runtimeclass AudioEffect
            {
                [default] interface Windows.Media.Effects.IAudioEffect;
                [contract(Windows.Foundation.UniversalApiContract, 19.0)] interface Windows.Media.Effects.IAudioEffect2;
            }

            [activatable(Windows.Media.Effects.IAudioEffectDefinitionFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass AudioEffectDefinition
            {
                [default] interface Windows.Media.Effects.IAudioEffectDefinition;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Media.Effects.IAudioEffectsManagerStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [threading(mta)]
            runtimeclass AudioEffectsManager
            {
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(mta)]
            runtimeclass AudioRenderEffectsManager
            {
                [default] interface Windows.Media.Effects.IAudioRenderEffectsManager;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Media.Effects.IAudioRenderEffectsManager2;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass CompositeVideoFrameContext
            {
                [default] interface Windows.Media.Effects.ICompositeVideoFrameContext;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass ProcessAudioFrameContext
            {
                [default] interface Windows.Media.Effects.IProcessAudioFrameContext;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass ProcessVideoFrameContext
            {
                [default] interface Windows.Media.Effects.IProcessVideoFrameContext;
            }

            [activatable(Windows.Media.Effects.IVideoCompositorDefinitionFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass VideoCompositorDefinition
            {
                [default] interface Windows.Media.Effects.IVideoCompositorDefinition;
            }

            [activatable(Windows.Media.Effects.IVideoEffectDefinitionFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass VideoEffectDefinition
            {
                [default] interface Windows.Media.Effects.IVideoEffectDefinition;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass VideoTransformEffectDefinition
            {
                [default] interface Windows.Media.Effects.IVideoEffectDefinition;
                interface Windows.Media.Effects.IVideoTransformEffectDefinition;
                [contract(Windows.Foundation.UniversalApiContract, 6.0)] interface Windows.Media.Effects.IVideoTransformEffectDefinition2;
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass VideoTransformSphericalProjection
            {
                [default] interface Windows.Media.Effects.IVideoTransformSphericalProjection;
            }
        }
    }
}
