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