/*
 * Core Audio audioclient definitions
 *
 * Copyright 2009 Maarten Lankhorst
 *
 * 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
 *
 */

cpp_quote("#ifndef __audioclient_h__")
cpp_quote("#define __audioclient_h__")

import "wtypes.idl";
import "unknwn.idl";
import "audiosessiontypes.h";

/* Forward declarations */
interface IAudioClient;
interface IAudioRenderClient;
interface IAudioCaptureClient;
interface IAudioClock;
interface IAudioClock2;
interface IAudioClockAdjustment;
interface ISimpleAudioVolume;
interface IAudioStreamVolume;
interface IChannelAudioVolume;

cpp_quote("#if 0")
typedef struct WAVEFORMATEX /*[hidden,restricted]*/
{
    WORD wFormatTag;
    WORD nChannels;
    DWORD nSamplesPerSec;
    DWORD nAvgBytesPerSec;
    WORD nBlockAlign;
    WORD wBitsPerSample;
    WORD cbSize;
} WAVEFORMATEX;
cpp_quote("#else")
cpp_quote("#include <mmreg.h>")
cpp_quote("#endif")

cpp_quote("#if 0")
typedef LONGLONG /*[hidden,restricted]*/ REFERENCE_TIME;
cpp_quote("#else")
cpp_quote("#define _IKsControl_")
cpp_quote("#include <ks.h>")
cpp_quote("#include <ksmedia.h>")
cpp_quote("#endif")

enum _AUDCLNT_BUFFERFLAGS
{
    AUDCLNT_BUFFERFLAGS_DATA_DISCONTINUITY = 0x1,
    AUDCLNT_BUFFERFLAGS_SILENT = 0x2,
    AUDCLNT_BUFFERFLAGS_TIMESTAMP_ERROR = 0x4
};

[
    local,
    pointer_default(unique),
    uuid(1cb9ad4c-dbfa-4c32-b178-c2f568a703b2),
    object,
]
interface IAudioClient : IUnknown
{
    HRESULT Initialize(
        [in] AUDCLNT_SHAREMODE ShareMode,
        [in] DWORD StreamFlags,
        [in] REFERENCE_TIME hnsBufferDuration,
        [in] REFERENCE_TIME hnsPeriodicity,
        [in] const WAVEFORMATEX *pFormat,
        [in] LPCGUID AudioSessionGuid
    );
    HRESULT GetBufferSize(
        [out] UINT32 *pNumBufferFrames
    );
    HRESULT GetStreamLatency(
        [out] REFERENCE_TIME *phnsLatency
    );
    HRESULT GetCurrentPadding(
        [out] UINT32 *pNumPaddingFrames
    );
    HRESULT IsFormatSupported(
        [in] AUDCLNT_SHAREMODE ShareMode,
        [in] const WAVEFORMATEX *pFormat,
        [out,unique] WAVEFORMATEX **ppClosestMatch
    );
    HRESULT GetMixFormat(
        [out] WAVEFORMATEX **ppDeviceFormat
    );
    HRESULT GetDevicePeriod(
        [out] REFERENCE_TIME *phnsDefaultDevicePeriod,
        [out] REFERENCE_TIME *phnsMinimumDevicePeriod
    );
    HRESULT Start(void);
    HRESULT Stop(void);
    HRESULT Reset(void);
    HRESULT SetEventHandle([in] HANDLE eventHandle);
    HRESULT GetService(
        [in] REFIID riid,
        [iid_is(riid),out] void **ppv
    );
}

[
    local,
    pointer_default(unique),
    uuid(f294acfc-3146-4483-a7bf-addca7c260e2),
    object,
]
interface IAudioRenderClient : IUnknown
{
    HRESULT GetBuffer(
        [in] UINT32 NumFramesRequested,
        [out] BYTE **ppData
    );
    HRESULT ReleaseBuffer(
        [in] UINT32 NumFramesWritten,
        [in] DWORD dwFlags
    );
}

[
    local,
    pointer_default(unique),
    uuid(c8adbd64-e71e-48a0-a4de-185c395cd317),
    object,
]
interface IAudioCaptureClient : IUnknown
{
    HRESULT GetBuffer(
        [out] BYTE **ppData,
        [out] UINT32 *pNumFramesToRead,
        [out] DWORD *pdwFlags,
        [unique,out] UINT64 *pu64DevicePosition,
        [unique,out] UINT64 *pu64QPCPosition
    );
    HRESULT ReleaseBuffer(
        [in] UINT32 NumFramesRead
    );
    HRESULT GetNextPacketSize(
        [out] UINT32 *pNumFramesInNextPacket
    );
}

cpp_quote("#define AUDIOCLOCK_CHARACTERISTIC_FIXED_FREQ 0x00000001")

[
    local,
    pointer_default(unique),
    uuid("cd63314f-3fba-4a1b-812c-ef96358728e7"),
    object,
]
interface IAudioClock : IUnknown
{
    HRESULT GetFrequency(
        [out] UINT64 *pu64Frequency
    );
    HRESULT GetPosition(
        [out] UINT64 *pu64Position,
        [out,unique] UINT64 *pu64QPCPosition
    );
    HRESULT GetCharacteristics(
        [out] DWORD *pdwCharacteristics
    );
}

[
    local,
    pointer_default(unique),
    uuid("6f49ff73-6727-49ac-a008-d98cf5e70048"),
    object,
]
interface IAudioClock2 : IUnknown
{
    HRESULT GetPosition(
        [out] UINT64 *DevicePosition,
        [out,unique] UINT64 *QPCPosition
    );
}

[
    local,
    pointer_default(unique),
    uuid("f6e4c0a0-46d9-4fb9-be21-57a3ef2b626c"),
    object,
]
interface IAudioClockAdjustment : IUnknown
{
    HRESULT SetSampleRate(
        [in] float flSampleRate
    );
}

[
    local,
    pointer_default(unique),
    uuid("87ce5498-68d6-44e5-9215-6da47ef883d8"),
    object,
]
interface ISimpleAudioVolume : IUnknown
{
    HRESULT SetMasterVolume(
        [in] float fLevel,
        [unique,in] LPCGUID EventContext
    );
    HRESULT GetMasterVolume(
        [out] float *pfLevel
    );
    HRESULT SetMute(
        [in] const BOOL bMute,
        [unique,in] LPCGUID EventContext
    );
    HRESULT GetMute(
        [out] BOOL *pbMute
    );
}

[
    local,
    pointer_default(unique),
    uuid("93014887-242d-4068-8a15-cf5e93b90fe3"),
    object,
]
interface IAudioStreamVolume : IUnknown
{
    HRESULT GetChannelCount(
        [out] UINT32 *pdwCount
    );
    HRESULT SetChannelVolume(
        [in] UINT32 dwIndex,
        [in] const float fLevel
    );
    HRESULT GetChannelVolume(
        [in] UINT32 dwIndex,
        [out] float *pfLevel
    );
    HRESULT SetAllVolumes(
        [in] UINT32 dwCount,
        [size_is(dwCount),in] const float *pfVolumes
    );
    HRESULT GetAllVolumes(
        [in] UINT32 dwCount,
        [size_is(dwCount),out] float *pfVolumes
    );
}

[
    local,
    pointer_default(unique),
    uuid("1c158861-b533-4b30-b1cf-e853e51c59b8"),
    object,
]
interface IChannelAudioVolume : IUnknown
{
    HRESULT GetChannelCount(
        [out] UINT32 *pdwCount
    );
    HRESULT SetChannelVolume(
        [in] UINT32 dwIndex,
        [in] const float fLevel,
        [unique,in] LPCGUID EventContext
    );
    HRESULT GetChannelVolume(
        [in] UINT32 dwIndex,
        [out] float *pfLevel
    );
    HRESULT SetAllVolumes(
        [in] UINT32 dwCount,
        [size_is(dwCount),in] const float *pfVolumes,
        [unique,in] LPCGUID EventContext
    );
    HRESULT GetAllVolumes(
        [in] UINT32 dwCount,
        [size_is(dwCount),out] float *pfVolumes
    );
}

cpp_quote("#define FACILIY_AUDCLNT 0x889")
cpp_quote("#define AUDCLNT_ERR(n) MAKE_HRESULT(SEVERITY_ERROR, FACILIY_AUDCLNT, n)")
cpp_quote("#define AUDCLNT_SUCCESS(n) MAKE_SCODE(SEVERITY_SUCCESS, FACILIY_AUDCLNT, n)")
cpp_quote("#define AUDCLNT_E_NOT_INITIALIZED AUDCLNT_ERR(1)")
cpp_quote("#define AUDCLNT_E_ALREADY_INITIALIZED AUDCLNT_ERR(2)")
cpp_quote("#define AUDCLNT_E_WRONG_ENDPOINT_TYPE AUDCLNT_ERR(3)")
cpp_quote("#define AUDCLNT_E_DEVICE_INVALIDATED AUDCLNT_ERR(4)")
cpp_quote("#define AUDCLNT_E_NOT_STOPPED AUDCLNT_ERR(5)")
cpp_quote("#define AUDCLNT_E_BUFFER_TOO_LARGE AUDCLNT_ERR(6)")
cpp_quote("#define AUDCLNT_E_OUT_OF_ORDER AUDCLNT_ERR(7)")
cpp_quote("#define AUDCLNT_E_UNSUPPORTED_FORMAT AUDCLNT_ERR(8)")
cpp_quote("#define AUDCLNT_E_INVALID_SIZE AUDCLNT_ERR(9)")
cpp_quote("#define AUDCLNT_E_DEVICE_IN_USE AUDCLNT_ERR(0x0a)")
cpp_quote("#define AUDCLNT_E_BUFFER_OPERATION_PENDING AUDCLNT_ERR(0x0b)")
cpp_quote("#define AUDCLNT_E_THREAD_NOT_REGISTERED AUDCLNT_ERR(0x0c)")
/* Not defined? cpp_quote("#define AUDCLNT_E_UNKNOWN_XXX1 AUDCLNT_ERR(0x0d)") */
cpp_quote("#define AUDCLNT_E_EXCLUSIVE_MODE_NOT_ALLOWED AUDCLNT_ERR(0x0e)")
cpp_quote("#define AUDCLNT_E_ENDPOINT_CREATE_FAILED AUDCLNT_ERR(0x0f)")
cpp_quote("#define AUDCLNT_E_SERVICE_NOT_RUNNING AUDCLNT_ERR(0x10)")
cpp_quote("#define AUDCLNT_E_EVENTHANDLE_NOT_EXPECTED AUDCLNT_ERR(0x11)")
cpp_quote("#define AUDCLNT_E_EXCLUSIVE_MODE_ONLY AUDCLNT_ERR(0x12)")
cpp_quote("#define AUDCLNT_E_BUFDURATION_PERIOD_NOT_EQUAL AUDCLNT_ERR(0x13)")
cpp_quote("#define AUDCLNT_E_EVENTHANDLE_NOT_SET AUDCLNT_ERR(0x14)")
cpp_quote("#define AUDCLNT_E_INCORRECT_BUFFER_SIZE AUDCLNT_ERR(0x15)")
cpp_quote("#define AUDCLNT_E_BUFFER_SIZE_ERROR AUDCLNT_ERR(0x16)")
cpp_quote("#define AUDCLNT_E_CPUUSAGE_EXCEEDED AUDCLNT_ERR(0x17)")
cpp_quote("#define AUDCLNT_E_BUFFER_ERROR AUDCLNT_ERR(0x18)")
cpp_quote("#define AUDCLNT_E_BUFFER_SIZE_NOT_ALIGNED AUDCLNT_ERR(0x19)")
/* Hex fail */
cpp_quote("#define AUDCLNT_E_INVALID_DEVICE_PERIOD AUDCLNT_ERR(0x20)")

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)")

cpp_quote("#endif /*__audioclient_h__*/")
