headers: Add IAudioClient3 and IAudioAmbisonicsControl in AudioClient.idl.
Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com>
Signed-off-by: Liu Hao <lh_mouse@126.com>
diff --git a/mingw-w64-headers/include/audioclient.idl b/mingw-w64-headers/include/audioclient.idl
index f7a0a66..73c2f9d 100644
--- a/mingw-w64-headers/include/audioclient.idl
+++ b/mingw-w64-headers/include/audioclient.idl
@@ -60,12 +60,26 @@
AUDCLNT_BUFFERFLAGS_TIMESTAMP_ERROR = 0x4
};
-typedef enum AUDCLNT_STREAMOPTIONS {
+typedef [v1_enum] enum AUDCLNT_STREAMOPTIONS {
AUDCLNT_STREAMOPTIONS_NONE = 0x0,
AUDCLNT_STREAMOPTIONS_RAW = 0x1,
AUDCLNT_STREAMOPTIONS_MATCH_FORMAT = 0x2,
AUDCLNT_STREAMOPTIONS_AMBISONICS = 0x4
} AUDCLNT_STREAMOPTIONS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(AUDCLNT_STREAMOPTIONS);")
+
+typedef enum AMBISONICS_TYPE {
+ AMBISONICS_TYPE_FULL3D = 0x0
+} AMBISONICS_TYPE;
+
+typedef enum AMBISONICS_CHANNEL_ORDERING {
+ AMBISONICS_CHANNEL_ORDERING_ACN = 0x0
+} AMBISONICS_CHANNEL_ORDERING;
+
+typedef enum AMBISONICS_NORMALIZATION {
+ AMBISONICS_NORMALIZATION_SN3D = 0x0,
+ AMBISONICS_NORMALIZATION_N3D = 0x1
+} AMBISONICS_NORMALIZATION;
cpp_quote("")
typedef struct AudioClientProperties {
@@ -75,6 +89,21 @@
AUDCLNT_STREAMOPTIONS Options;
} AudioClientProperties;
+typedef struct AudioClient3ActivationParams {
+ GUID tracingContextId;
+} AudioClient3ActivationParams;
+
+typedef struct AMBISONICS_PARAMS {
+ UINT32 u32Size;
+ UINT32 u32Version;
+ AMBISONICS_TYPE u32Type;
+ AMBISONICS_CHANNEL_ORDERING u32ChannelOrdering;
+ AMBISONICS_NORMALIZATION u32Normalization;
+ UINT32 u32Order;
+ UINT32 u32NumChannels;
+ UINT32 *pu32ChannelMap;
+} AMBISONICS_PARAMS;
+
cpp_quote("")
[object, local, uuid (1cb9ad4c-DBFA-4c32-B178-C2F568A703B2), pointer_default (unique)]
interface IAudioClient : IUnknown {
@@ -100,6 +129,13 @@
HRESULT GetBufferSizeLimits ([in] const WAVEFORMATEX *pFormat,[in] WINBOOL bEventDriven,[in] REFERENCE_TIME *phnsMinBufferDuration,[in] REFERENCE_TIME *phnsMaxBufferDuration);
}
+[object, local, uuid (7ed4ee07-8e67-4cd4-8c1a-2b7a5987ad42), pointer_default (unique)]
+interface IAudioClient3 : IAudioClient2 {
+ HRESULT GetSharedModeEnginePeriod ([in] const WAVEFORMATEX *pFormat, [out] UINT32 *pDefaultPeriodInFrames, [out] UINT32 *pFundamentalPeriodInFrames, [out] UINT32 *pMinPeriodInFrames, [out] UINT32 *pMaxPeriodInFrames);
+ HRESULT GetCurrentSharedModeEnginePeriod ([out, unique] WAVEFORMATEX **ppFormat, [out] UINT32 *pCurrentPeriodInFrames);
+ HRESULT InitializeSharedAudioStream ([in] DWORD StreamFlags, [in] UINT32 PeriodInFrames, [in] const WAVEFORMATEX *pFormat, [in] LPCGUID AudioSessionGuid);
+}
+
cpp_quote("")
[object, local, uuid (F294ACFC-3146-4483-A7BF-ADDCA7C260E2), helpstring ("IAudioRenderClient Interface"), pointer_default (unique)]
interface IAudioRenderClient : IUnknown {
@@ -162,6 +198,14 @@
HRESULT GetAllVolumes ([in] UINT32 dwCount,[out, size_is (dwCount),] float *pfVolumes);
}
+[object, local, uuid (28724c91-df35-4856-9f76-d6a26413f3df), pointer_default (unique)]
+interface IAudioAmbisonicsControl : IUnknown {
+ HRESULT SetData([in] const AMBISONICS_PARAMS *pAmbisonicsParams, [in] UINT32 cbAmbisonicsParams);
+ HRESULT SetHeadTracking([in] WINBOOL bEnableHeadTracking);
+ HRESULT GetHeadTracking([out] WINBOOL *pbEnableHeadTracking);
+ HRESULT SetRotation([in] float X, [in] float Y, [in] float Z, [in] float W);
+}
+
cpp_quote("")
[object, local, uuid (1c158861-B533-4b30-B1CF-E853E51C59B8), pointer_default (unique)]
interface IChannelAudioVolume : IUnknown {
@@ -208,6 +252,11 @@
cpp_quote("#define AUDCLNT_E_OFFLOAD_MODE_ONLY AUDCLNT_ERR(0x24)")
cpp_quote("#define AUDCLNT_E_NONOFFLOAD_MODE_ONLY AUDCLNT_ERR(0x25)")
cpp_quote("#define AUDCLNT_E_RESOURCES_INVALIDATED AUDCLNT_ERR(0x26)")
+cpp_quote("#define AUDCLNT_E_RAW_MODE_UNSUPPORTED AUDCLNT_ERR(0x027)")
+cpp_quote("#define AUDCLNT_E_ENGINE_PERIODICITY_LOCKED AUDCLNT_ERR(0x028)")
+cpp_quote("#define AUDCLNT_E_ENGINE_FORMAT_LOCKED AUDCLNT_ERR(0x029)")
+cpp_quote("#define AUDCLNT_E_HEADTRACKING_ENABLED AUDCLNT_ERR(0x030)")
+cpp_quote("#define AUDCLNT_E_HEADTRACKING_UNSUPPORTED AUDCLNT_ERR(0x040)")
cpp_quote("#define AUDCLNT_S_BUFFER_EMPTY AUDCLNT_SUCCESS(0x1)")
cpp_quote("#define AUDCLNT_S_THREAD_ALREADY_REGISTERED AUDCLNT_SUCCESS(0x2)")
cpp_quote("#define AUDCLNT_S_POSITION_STALLED AUDCLNT_SUCCESS(0x3)")