/* * 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; [ 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); }