| /* | |
| * Copyright 2020 Nikolay Sivov for CodeWeavers | |
| * | |
| * This library is free software; you can redistribute it and/or | |
| * modify it under the terms of the GNU Lesser General Public | |
| * License as published by the Free Software Foundation; either | |
| * version 2.1 of the License, or (at your option) any later version. | |
| * | |
| * This library is distributed in the hope that it will be useful, | |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| * Lesser General Public License for more details. | |
| * | |
| * You should have received a copy of the GNU Lesser General Public | |
| * License along with this library; if not, write to the Free Software | |
| * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | |
| */ | |
| import "unknwn.idl"; | |
| import "audioclient.idl"; | |
| import "propsys.idl"; | |
| typedef [v1_enum] enum AudioObjectType | |
| { | |
| AudioObjectType_None = 0, | |
| AudioObjectType_Dynamic = 0x00000001, | |
| AudioObjectType_FrontLeft = 0x00000002, | |
| AudioObjectType_FrontRight = 0x00000004, | |
| AudioObjectType_FrontCenter = 0x00000008, | |
| AudioObjectType_LowFrequency = 0x00000010, | |
| AudioObjectType_SideLeft = 0x00000020, | |
| AudioObjectType_SideRight = 0x00000040, | |
| AudioObjectType_BackLeft = 0x00000080, | |
| AudioObjectType_BackRight = 0x00000100, | |
| AudioObjectType_TopFrontLeft = 0x00000200, | |
| AudioObjectType_TopFrontRight = 0x00000400, | |
| AudioObjectType_TopBackLeft = 0x00000800, | |
| AudioObjectType_TopBackRight = 0x00001000, | |
| AudioObjectType_BottomFrontLeft = 0x00002000, | |
| AudioObjectType_BottomFrontRight = 0x00004000, | |
| AudioObjectType_BottomBackLeft = 0x00008000, | |
| AudioObjectType_BottomBackRight = 0x00010000, | |
| AudioObjectType_BackCenter = 0x00020000, | |
| } AudioObjectType; | |
| cpp_quote("#define SPTLAUDCLNT_E_DESTROYED AUDCLNT_ERR(0x100)") | |
| cpp_quote("#define SPTLAUDCLNT_E_OUT_OF_ORDER AUDCLNT_ERR(0x101)") | |
| cpp_quote("#define SPTLAUDCLNT_E_RESOURCES_INVALIDATED AUDCLNT_ERR(0x102)") | |
| cpp_quote("#define SPTLAUDCLNT_E_NO_MORE_OBJECTS AUDCLNT_ERR(0x103)") | |
| cpp_quote("#define SPTLAUDCLNT_E_PROPERTY_NOT_SUPPORTED AUDCLNT_ERR(0x104)") | |
| cpp_quote("#define SPTLAUDCLNT_E_ERRORS_IN_OBJECT_CALLS AUDCLNT_ERR(0x105)") | |
| cpp_quote("#define SPTLAUDCLNT_E_METADATA_FORMAT_NOT_SUPPORTED AUDCLNT_ERR(0x106)") | |
| cpp_quote("#define SPTLAUDCLNT_E_STREAM_NOT_AVAILABLE AUDCLNT_ERR(0x107)") | |
| cpp_quote("#define SPTLAUDCLNT_E_INVALID_LICENSE AUDCLNT_ERR(0x108)") | |
| cpp_quote("#define SPTLAUDCLNT_E_STREAM_NOT_STOPPED AUDCLNT_ERR(0x10a)") | |
| cpp_quote("#define SPTLAUDCLNT_E_STATIC_OBJECT_NOT_AVAILABLE AUDCLNT_ERR(0x10b)") | |
| cpp_quote("#define SPTLAUDCLNT_E_OBJECT_ALREADY_ACTIVE AUDCLNT_ERR(0x10c)") | |
| cpp_quote("#define SPTLAUDCLNT_E_INTERNAL AUDCLNT_ERR(0x10d)") | |
| interface ISpatialAudioObjectRenderStreamBase; | |
| [ | |
| object, | |
| uuid(dddf83e6-68d7-4c70-883f-a1836afb4a50), | |
| pointer_default(unique), | |
| local | |
| ] | |
| interface ISpatialAudioObjectRenderStreamNotify : IUnknown | |
| { | |
| HRESULT OnAvailableDynamicObjectCountChange( | |
| [in] ISpatialAudioObjectRenderStreamBase *stream, | |
| [in] LONGLONG deadline, | |
| [in] UINT32 object_count); | |
| } | |
| typedef struct tagSpatialAudioObjectRenderStreamActivationParams | |
| { | |
| const WAVEFORMATEX *ObjectFormat; | |
| AudioObjectType StaticObjectTypeMask; | |
| UINT32 MinDynamicObjectCount; | |
| UINT32 MaxDynamicObjectCount; | |
| AUDIO_STREAM_CATEGORY Category; | |
| HANDLE EventHandle; | |
| ISpatialAudioObjectRenderStreamNotify *NotifyObject; | |
| } SpatialAudioObjectRenderStreamActivationParams; | |
| [ | |
| object, | |
| uuid(dcdaa858-895a-4a22-a5eb-67bda506096d), | |
| pointer_default(unique), | |
| local | |
| ] | |
| interface IAudioFormatEnumerator : IUnknown | |
| { | |
| HRESULT GetCount( | |
| [out] UINT32 *count); | |
| HRESULT GetFormat( | |
| [in] UINT32 index, | |
| [out] WAVEFORMATEX **format); | |
| } | |
| [ | |
| object, | |
| uuid(bbf8e066-aaaa-49be-9a4d-fd2a858ea27f), | |
| pointer_default(unique), | |
| local | |
| ] | |
| interface ISpatialAudioClient : IUnknown | |
| { | |
| HRESULT GetStaticObjectPosition( | |
| [in] AudioObjectType type, | |
| [out] float *x, | |
| [out] float *y, | |
| [out] float *z); | |
| HRESULT GetNativeStaticObjectTypeMask( | |
| [out] AudioObjectType *mask); | |
| HRESULT GetMaxDynamicObjectCount( | |
| [out] UINT32 *value); | |
| HRESULT GetSupportedAudioObjectFormatEnumerator( | |
| [out] IAudioFormatEnumerator **enumerator); | |
| HRESULT GetMaxFrameCount( | |
| [in] WAVEFORMATEX const *format, | |
| [out] UINT32 *count); | |
| HRESULT IsAudioObjectFormatSupported( | |
| [in] WAVEFORMATEX const *format); | |
| HRESULT IsSpatialAudioStreamAvailable( | |
| [in] REFIID stream_uuid, | |
| [in] PROPVARIANT const *info); | |
| HRESULT ActivateSpatialAudioStream( | |
| [in] PROPVARIANT const *params, | |
| [in] REFIID riid, | |
| [out, iid_is(riid)] void **stream); | |
| } | |
| [ | |
| object, | |
| uuid(cce0b8f2-8d4d-4efb-a8cf-3d6ecf1c30e0), | |
| pointer_default(unique), | |
| local | |
| ] | |
| interface ISpatialAudioObjectBase : IUnknown | |
| { | |
| HRESULT GetBuffer( | |
| [out] BYTE **buffer, | |
| [out] UINT32 *bytes); | |
| HRESULT SetEndOfStream( | |
| [in] UINT32 frames); | |
| HRESULT IsActive( | |
| [out] BOOL *active); | |
| HRESULT GetAudioObjectType( | |
| [out] AudioObjectType *type); | |
| } | |
| [ | |
| object, | |
| uuid(dde28967-521b-46e5-8f00-bd6f2bc8ab1d), | |
| pointer_default(unique), | |
| local | |
| ] | |
| interface ISpatialAudioObject : ISpatialAudioObjectBase | |
| { | |
| HRESULT SetPosition( | |
| [in] float x, | |
| [in] float y, | |
| [in] float z); | |
| HRESULT SetVolume( | |
| [in] float vol); | |
| } | |
| [ | |
| object, | |
| uuid(feaaf403-c1d8-450d-aa05-e0ccee7502a8), | |
| pointer_default(unique), | |
| local | |
| ] | |
| interface ISpatialAudioObjectRenderStreamBase : IUnknown | |
| { | |
| HRESULT GetAvailableDynamicObjectCount( | |
| [out] UINT32 *count); | |
| HRESULT GetService( | |
| [in] REFIID riid, | |
| [out] void **service); | |
| HRESULT Start(); | |
| HRESULT Stop(); | |
| HRESULT Reset(); | |
| HRESULT BeginUpdatingAudioObjects( | |
| [out] UINT32 *count, | |
| [out] UINT32 *frames); | |
| HRESULT EndUpdatingAudioObjects(); | |
| } | |
| [ | |
| object, | |
| uuid(bab5f473-b423-477b-85f5-b5a332a04153), | |
| pointer_default(unique), | |
| local | |
| ] | |
| interface ISpatialAudioObjectRenderStream : ISpatialAudioObjectRenderStreamBase | |
| { | |
| HRESULT ActivateSpatialAudioObject( | |
| [in] AudioObjectType type, | |
| [out] ISpatialAudioObject **object); | |
| } |