3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/*
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Core Audio audioclient definitions
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Copyright 2009 Maarten Lankhorst
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * This library is free software; you can redistribute it and/or
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * modify it under the terms of the GNU Lesser General Public
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * License as published by the Free Software Foundation; either
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * version 2.1 of the License, or (at your option) any later version.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * This library is distributed in the hope that it will be useful,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * but WITHOUT ANY WARRANTY; without even the implied warranty of
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Lesser General Public License for more details.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * You should have received a copy of the GNU Lesser General Public
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * License along with this library; if not, write to the Free Software
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync/*
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * a choice of LGPL license versions is made available with the language indicating
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * that LGPLv2 or any later version may be used, or where a choice of which version
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * of the LGPL is applied is otherwise unspecified.
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync */
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncimport "wtypes.idl";
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncimport "unknwn.idl";
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncimport "audiosessiontypes.h";
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* Forward declarations */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinterface IAudioClient;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinterface IAudioRenderClient;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinterface IAudioCaptureClient;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinterface IAudioClock;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinterface IAudioClock2;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinterface IAudioClockAdjustment;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinterface ISimpleAudioVolume;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinterface IAudioStreamVolume;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinterface IChannelAudioVolume;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#if 0")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct WAVEFORMATEX /*[hidden,restricted]*/
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync WORD wFormatTag;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync WORD nChannels;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD nSamplesPerSec;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD nAvgBytesPerSec;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync WORD nBlockAlign;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync WORD wBitsPerSample;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync WORD cbSize;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} WAVEFORMATEX;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#else")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#include <mmreg.h>")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#endif")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#if 0")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef LONGLONG /*[hidden,restricted]*/ REFERENCE_TIME;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#else")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define _IKsControl_")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#include <ks.h>")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#include <ksmedia.h>")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#endif")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncenum _AUDCLNT_BUFFERFLAGS
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync AUDCLNT_BUFFERFLAGS_DATA_DISCONTINUITY = 0x1,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync AUDCLNT_BUFFERFLAGS_SILENT = 0x2,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync AUDCLNT_BUFFERFLAGS_TIMESTAMP_ERROR = 0x4
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync};
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync[
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync local,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pointer_default(unique),
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync uuid(1cb9ad4c-dbfa-4c32-b178-c2f568a703b2),
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync object,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync]
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinterface IAudioClient : IUnknown
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT Initialize(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] AUDCLNT_SHAREMODE ShareMode,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] DWORD StreamFlags,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] REFERENCE_TIME hnsBufferDuration,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] REFERENCE_TIME hnsPeriodicity,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] const WAVEFORMATEX *pFormat,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] LPCGUID AudioSessionGuid
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT GetBufferSize(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] UINT32 *pNumBufferFrames
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT GetStreamLatency(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] REFERENCE_TIME *phnsLatency
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT GetCurrentPadding(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] UINT32 *pNumPaddingFrames
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT IsFormatSupported(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] AUDCLNT_SHAREMODE ShareMode,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] const WAVEFORMATEX *pFormat,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out,unique] WAVEFORMATEX **ppClosestMatch
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT GetMixFormat(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] WAVEFORMATEX **ppDeviceFormat
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT GetDevicePeriod(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] REFERENCE_TIME *phnsDefaultDevicePeriod,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] REFERENCE_TIME *phnsMinimumDevicePeriod
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT Start(void);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT Stop(void);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT Reset(void);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT SetEventHandle([in] HANDLE eventHandle);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT GetService(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] REFIID riid,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [iid_is(riid),out] void **ppv
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync[
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync local,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pointer_default(unique),
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync uuid(f294acfc-3146-4483-a7bf-addca7c260e2),
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync object,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync]
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinterface IAudioRenderClient : IUnknown
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT GetBuffer(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] UINT32 NumFramesRequested,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] BYTE **ppData
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT ReleaseBuffer(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] UINT32 NumFramesWritten,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] DWORD dwFlags
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync[
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync local,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pointer_default(unique),
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync uuid(c8adbd64-e71e-48a0-a4de-185c395cd317),
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync object,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync]
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinterface IAudioCaptureClient : IUnknown
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT GetBuffer(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] BYTE **ppData,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] UINT32 *pNumFramesToRead,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] DWORD *pdwFlags,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [unique,out] UINT64 *pu64DevicePosition,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [unique,out] UINT64 *pu64QPCPosition
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT ReleaseBuffer(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] UINT32 NumFramesRead
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT GetNextPacketSize(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] UINT32 *pNumFramesInNextPacket
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDIOCLOCK_CHARACTERISTIC_FIXED_FREQ 0x00000001")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync[
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync local,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pointer_default(unique),
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync uuid("cd63314f-3fba-4a1b-812c-ef96358728e7"),
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync object,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync]
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinterface IAudioClock : IUnknown
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT GetFrequency(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] UINT64 *pu64Frequency
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT GetPosition(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] UINT64 *pu64Position,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out,unique] UINT64 *pu64QPCPosition
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT GetCharacteristics(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] DWORD *pdwCharacteristics
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync[
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync local,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pointer_default(unique),
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync uuid("6f49ff73-6727-49ac-a008-d98cf5e70048"),
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync object,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync]
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinterface IAudioClock2 : IUnknown
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT GetPosition(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] UINT64 *DevicePosition,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out,unique] UINT64 *QPCPosition
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync[
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync local,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pointer_default(unique),
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync uuid("f6e4c0a0-46d9-4fb9-be21-57a3ef2b626c"),
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync object,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync]
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinterface IAudioClockAdjustment : IUnknown
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT SetSampleRate(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] float flSampleRate
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync[
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync local,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pointer_default(unique),
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync uuid("87ce5498-68d6-44e5-9215-6da47ef883d8"),
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync object,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync]
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinterface ISimpleAudioVolume : IUnknown
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT SetMasterVolume(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] float fLevel,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [unique,in] LPCGUID EventContext
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT GetMasterVolume(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] float *pfLevel
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT SetMute(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] const BOOL bMute,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [unique,in] LPCGUID EventContext
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT GetMute(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] BOOL *pbMute
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync[
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync local,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pointer_default(unique),
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync uuid("93014887-242d-4068-8a15-cf5e93b90fe3"),
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync object,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync]
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinterface IAudioStreamVolume : IUnknown
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT GetChannelCount(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] UINT32 *pdwCount
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT SetChannelVolume(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] UINT32 dwIndex,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] const float fLevel
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT GetChannelVolume(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] UINT32 dwIndex,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] float *pfLevel
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT SetAllVolumes(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] UINT32 dwCount,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [size_is(dwCount),in] const float *pfVolumes
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT GetAllVolumes(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] UINT32 dwCount,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [size_is(dwCount),out] float *pfVolumes
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync[
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync local,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pointer_default(unique),
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync uuid("1c158861-b533-4b30-b1cf-e853e51c59b8"),
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync object,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync]
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinterface IChannelAudioVolume : IUnknown
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT GetChannelCount(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] UINT32 *pdwCount
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT SetChannelVolume(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] UINT32 dwIndex,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] const float fLevel,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [unique,in] LPCGUID EventContext
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT GetChannelVolume(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] UINT32 dwIndex,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] float *pfLevel
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT SetAllVolumes(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] UINT32 dwCount,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [size_is(dwCount),in] const float *pfVolumes,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [unique,in] LPCGUID EventContext
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT GetAllVolumes(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] UINT32 dwCount,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [size_is(dwCount),out] float *pfVolumes
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define FACILIY_AUDCLNT 0x889")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_ERR(n) MAKE_HRESULT(SEVERITY_ERROR, FACILIY_AUDCLNT, n)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_SUCCESS(n) MAKE_SCODE(SEVERITY_SUCCESS, FACILIY_AUDCLNT, n)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_E_NOT_INITIALIZED AUDCLNT_ERR(1)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_E_ALREADY_INITIALIZED AUDCLNT_ERR(2)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_E_WRONG_ENDPOINT_TYPE AUDCLNT_ERR(3)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_E_DEVICE_INVALIDATED AUDCLNT_ERR(4)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_E_NOT_STOPPED AUDCLNT_ERR(5)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_E_BUFFER_TOO_LARGE AUDCLNT_ERR(6)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_E_OUT_OF_ORDER AUDCLNT_ERR(7)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_E_UNSUPPORTED_FORMAT AUDCLNT_ERR(8)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_E_INVALID_SIZE AUDCLNT_ERR(9)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_E_DEVICE_IN_USE AUDCLNT_ERR(0x0a)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_E_BUFFER_OPERATION_PENDING AUDCLNT_ERR(0x0b)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_E_THREAD_NOT_REGISTERED AUDCLNT_ERR(0x0c)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* Not defined? cpp_quote("#define AUDCLNT_E_UNKNOWN_XXX1 AUDCLNT_ERR(0x0d)") */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_E_EXCLUSIVE_MODE_NOT_ALLOWED AUDCLNT_ERR(0x0e)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_E_ENDPOINT_CREATE_FAILED AUDCLNT_ERR(0x0f)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_E_SERVICE_NOT_RUNNING AUDCLNT_ERR(0x10)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_E_EVENTHANDLE_NOT_EXPECTED AUDCLNT_ERR(0x11)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_E_EXCLUSIVE_MODE_ONLY AUDCLNT_ERR(0x12)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_E_BUFDURATION_PERIOD_NOT_EQUAL AUDCLNT_ERR(0x13)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_E_EVENTHANDLE_NOT_SET AUDCLNT_ERR(0x14)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_E_INCORRECT_BUFFER_SIZE AUDCLNT_ERR(0x15)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_E_BUFFER_SIZE_ERROR AUDCLNT_ERR(0x16)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_E_CPUUSAGE_EXCEEDED AUDCLNT_ERR(0x17)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_E_BUFFER_ERROR AUDCLNT_ERR(0x18)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_E_BUFFER_SIZE_NOT_ALIGNED AUDCLNT_ERR(0x19)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* Hex fail */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_E_INVALID_DEVICE_PERIOD AUDCLNT_ERR(0x20)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_E_INVALID_STREAM_FLAG AUDCLNT_ERR(0x021)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_E_ENDPOINT_OFFLOAD_NOT_CAPABLE AUDCLNT_ERR(0x022)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_E_OUT_OF_OFFLOAD_RESOURCES AUDCLNT_ERR(0x023)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_E_OFFLOAD_MODE_ONLY AUDCLNT_ERR(0x024)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_E_NONOFFLOAD_MODE_ONLY AUDCLNT_ERR(0x025)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_E_RESOURCES_INVALIDATED AUDCLNT_ERR(0x026)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_S_BUFFER_EMPTY AUDCLNT_SUCCESS(0x1)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_S_THREAD_ALREADY_REGISTERED AUDCLNT_SUCCESS(0x2)")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define AUDCLNT_S_POSITION_STALLED AUDCLNT_SUCCESS(0x3)")