From da4793738bc086a4162f36d1839b5b9ea70b3592 Mon Sep 17 00:00:00 2001
From: Biswapriyo Nath <nathbap...@gmail.com>
Date: Tue, 15 Dec 2020 12:01:11 +0530
Subject: [PATCH] headers: Add IAudioClient3 and IAudioAmbisonicsControl in 
AudioClient.idl.

Signed-off-by: Biswapriyo Nath <nathbap...@gmail.com>
---
 mingw-w64-headers/include/audioclient.idl | 51 ++++++++++++++++++++++-
 1 file changed, 50 insertions(+), 1 deletion(-)

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 @@ enum _AUDCLNT_BUFFERFLAGS {
  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 @@ typedef struct AudioClientProperties {
   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 @@ interface IAudioClient2 : IAudioClient {
   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 @@ interface IAudioStreamVolume : IUnknown {
   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_OUT_OF_OFFLOAD_RESOURCES 
AUDCLNT_ERR(0x23)")
 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)")
-- 
2.29.2

_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to