#pragma once

#include <initguid.h>

// missing from MinGW
#ifndef AUDCLNT_STREAMFLAGS_SRC_DEFAULT_QUALITY
#define AUDCLNT_STREAMFLAGS_SRC_DEFAULT_QUALITY 0x08000000
#endif
#ifndef AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM
#define AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM 0x80000000
#endif

// defined starting with Windows 10, version 1803
// https://docs.microsoft.com/en-us/windows/win32/coreaudio/audclnt-streamflags-xxx-constants
#ifndef AUDCLNT_STREAMFLAGS_PREVENT_LOOPBACK_CAPTURE
#define AUDCLNT_STREAMFLAGS_PREVENT_LOOPBACK_CAPTURE 0x01000000
#endif

DEFINE_GUID(GUID_KSDATAFORMAT_SUBTYPE_PCM,
    0x00000001, 0x0000, 0x0010,
    0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);

DEFINE_GUID(GUID_KSDATAFORMAT_SUBTYPE_IEEE_FLOAT,
    0x00000003, 0x0000, 0x0010,
    0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);

#ifdef _MSC_VER
DEFINE_GUID(IID_IAudioClient,
    0x1cb9ad4c, 0xdbfa, 0x4c32,
    0xb1, 0x78, 0xc2, 0xf5, 0x68, 0xa7, 0x03, 0xb2);

DEFINE_GUID(IID_IAudioClock,
    0xcd63314f, 0x3fba, 0x4a1b,
    0x81, 0x2c, 0xef, 0x96, 0x35, 0x87, 0x28, 0xe7);

DEFINE_GUID(IID_IAudioClock2,
    0x6f49ff73, 0x6727, 0x49ac,
    0xa0, 0x08, 0xd9, 0x8c, 0xf5, 0xe7, 0x00, 0x48);

DEFINE_GUID(IID_IAudioClockAdjustment,
    0xf6e4c0a0, 0x46d9, 0x4fb8,
    0xbe, 0x21, 0x57, 0xa3, 0xef, 0x2b, 0x62, 0x6c);

DEFINE_GUID(IID_IAudioRenderClient,
    0xf294acfc, 0x3146, 0x4483,
    0xa7, 0xbf, 0xad, 0xdc, 0xa7, 0xc2, 0x60, 0xe2);

DEFINE_GUID(IID_IAudioSessionControl,
    0xf4b1a599, 0x7266, 0x4319,
    0xa8, 0xca, 0xe7, 0x0a, 0xcb, 0x11, 0xe8, 0xcd);
#endif
