/*
 * Declarations for MultiMedia-REGistration
 *
 * Copyright (C) 1999 Eric Pouech
 *
 * 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
 */

#ifndef __WIDL__

#ifndef __WINE_MMREG_H
#define __WINE_MMREG_H

#include <pshpack1.h>

/***********************************************************************
 * Defines/Enums
 */

#ifndef _ACM_WAVEFILTER
#define _ACM_WAVEFILTER

#define WAVE_FILTER_UNKNOWN     0x0000
#define WAVE_FILTER_DEVELOPMENT 0xFFFF

typedef struct _WAVEFILTER {
  DWORD   cbStruct;
  DWORD   dwFilterTag;
  DWORD   fdwFilter;
  DWORD   dwReserved[5];
} WAVEFILTER, *PWAVEFILTER, *NPWAVEFILTER, *LPWAVEFILTER;
#endif /* _ACM_WAVEFILTER */

#ifndef WAVE_FILTER_VOLUME
#define WAVE_FILTER_VOLUME      0x0001

typedef struct _WAVEFILTER_VOLUME {
   WAVEFILTER      wfltr;
   DWORD           dwVolume;
} VOLUMEWAVEFILTER, *PVOLUMEWAVEFILTER, *NPVOLUMEWAVEFILTER, *LPVOLUMEWAVEFILTER;
#endif  /* WAVE_FILTER_VOLUME */

#ifndef WAVE_FILTER_ECHO
#define WAVE_FILTER_ECHO        0x0002

typedef struct WAVEFILTER_ECHO {
   WAVEFILTER      wfltr;
   DWORD           dwVolume;
   DWORD           dwDelay;
} ECHOWAVEFILTER, *PECHOWAVEFILTER, *NPECHOWAVEFILTER, *LPECHOWAVEFILTER;
#endif  /* WAVEFILTER_ECHO */

#ifndef _WAVEFORMATEX_
#define _WAVEFORMATEX_
typedef struct _WAVEFORMATEX {
  WORD   wFormatTag;
  WORD   nChannels;
  DWORD  nSamplesPerSec;
  DWORD  nAvgBytesPerSec;
  WORD   nBlockAlign;
  WORD   wBitsPerSample;
  WORD   cbSize;
} WAVEFORMATEX, *PWAVEFORMATEX, *NPWAVEFORMATEX, *LPWAVEFORMATEX;
#endif /* _WAVEFORMATEX_ */

#ifndef  WAVE_FORMAT_PCM
typedef struct waveformat_tag {
  WORD    wFormatTag;
  WORD    nChannels;
  DWORD   nSamplesPerSec;
  DWORD   nAvgBytesPerSec;
  WORD    nBlockAlign;
} WAVEFORMAT, *PWAVEFORMAT, *NPWAVEFORMAT, *LPWAVEFORMAT;

typedef struct pcmwaveformat_tag {
  WAVEFORMAT  wf;
  WORD        wBitsPerSample;
} PCMWAVEFORMAT, *PPCMWAVEFORMAT, *NPPCMWAVEFORMAT, *LPPCMWAVEFORMAT;
#endif /* WAVE_FORMAT_PCM */

/* WAVE form wFormatTag IDs */
#define  WAVE_FORMAT_UNKNOWN			0x0000	/*  Microsoft Corporation  */
#ifndef  WAVE_FORMAT_PCM
#define  WAVE_FORMAT_PCM			0x0001
#endif
#define  WAVE_FORMAT_ADPCM			0x0002	/*  Microsoft Corporation  */
#define  WAVE_FORMAT_IEEE_FLOAT			0x0003	/*  Microsoft Corporation  */
#define  WAVE_FORMAT_VSELP			0x0004
#define  WAVE_FORMAT_IBM_CVSD			0x0005	/*  IBM Corporation  */
#define  WAVE_FORMAT_ALAW			0x0006	/*  Microsoft Corporation  */
#define  WAVE_FORMAT_MULAW			0x0007	/*  Microsoft Corporation  */
#define  WAVE_FORMAT_DTS			0x0008
#define  WAVE_FORMAT_DRM			0x0009
#define  WAVE_FORMAT_WMAVOICE9			0x000a
#define  WAVE_FORMAT_OKI_ADPCM			0x0010	/*  OKI  */
#define  WAVE_FORMAT_DVI_ADPCM			0x0011	/*  Intel Corporation  */
#define  WAVE_FORMAT_IMA_ADPCM			(WAVE_FORMAT_DVI_ADPCM)	/*  Intel Corporation  */
#define  WAVE_FORMAT_MEDIASPACE_ADPCM		0x0012	/*  Videologic  */
#define  WAVE_FORMAT_SIERRA_ADPCM		0x0013	/*  Sierra Semiconductor Corp  */
#define  WAVE_FORMAT_G723_ADPCM			0x0014	/*  Antex Electronics Corporation  */
#define  WAVE_FORMAT_DIGISTD			0x0015	/*  DSP Solutions, Inc.  */
#define  WAVE_FORMAT_DIGIFIX			0x0016	/*  DSP Solutions, Inc.  */
#define  WAVE_FORMAT_DIALOGIC_OKI_ADPCM		0x0017	/*  Dialogic Corporation  */
#define  WAVE_FORMAT_MEDIAVISION_ADPCM		0x0018
#define  WAVE_FORMAT_CU_CODEC			0x0019
#define  WAVE_FORMAT_HP_DYN_VOICE		0x001a
#define  WAVE_FORMAT_YAMAHA_ADPCM		0x0020	/*  Yamaha Corporation of America  */
#define  WAVE_FORMAT_SONARC			0x0021	/*  Speech Compression  */
#define  WAVE_FORMAT_DSPGROUP_TRUESPEECH	0x0022	/*  DSP Group, Inc  */
#define  WAVE_FORMAT_ECHOSC1			0x0023	/*  Echo Speech Corporation  */
#define  WAVE_FORMAT_AUDIOFILE_AF36		0x0024	/*    */
#define  WAVE_FORMAT_APTX			0x0025	/*  Audio Processing Technology  */
#define  WAVE_FORMAT_AUDIOFILE_AF10		0x0026	/*    */
#define  WAVE_FORMAT_PROSODY_1612		0x0027
#define  WAVE_FORMAT_LRC			0x0028
#define  WAVE_FORMAT_DOLBY_AC2			0x0030	/*  Dolby Laboratories  */
#define  WAVE_FORMAT_GSM610			0x0031	/*  Microsoft Corporation  */
#define  WAVE_FORMAT_MSNAUDIO			0x0032
#define  WAVE_FORMAT_ANTEX_ADPCME		0x0033	/*  Antex Electronics Corporation  */
#define  WAVE_FORMAT_CONTROL_RES_VQLPC		0x0034	/*  Control Resources Limited  */
#define  WAVE_FORMAT_DIGIREAL			0x0035	/*  DSP Solutions, Inc.  */
#define  WAVE_FORMAT_DIGIADPCM			0x0036	/*  DSP Solutions, Inc.  */
#define  WAVE_FORMAT_CONTROL_RES_CR10		0x0037	/*  Control Resources Limited  */
#define  WAVE_FORMAT_NMS_VBXADPCM		0x0038	/*  Natural MicroSystems  */
#define  WAVE_FORMAT_CS_IMAADPCM		0x0039
#define  WAVE_FORMAT_ECHOSC3			0x003a
#define  WAVE_FORMAT_ROCKWELL_ADPCM		0x003b
#define  WAVE_FORMAT_ROCKWELL_DIGITALK		0x003c
#define  WAVE_FORMAT_XEBEC			0x003d
#define  WAVE_FORMAT_G721_ADPCM			0x0040	/*  Antex Electronics Corporation  */
#define  WAVE_FORMAT_G728_CELP			0x0041
#define  WAVE_FORMAT_MSG723			0x0042
#define  WAVE_FORMAT_INTEL_G723_1		0x0043
#define  WAVE_FORMAT_INTEL_G729			0x0044
#define  WAVE_FORMAT_SHARP_G726			0x0045
#define  WAVE_FORMAT_MPEG			0x0050	/*  Microsoft Corporation  */
#define  WAVE_FORMAT_RT24			0x0052
#define  WAVE_FORMAT_PAC			0x0053
#define  WAVE_FORMAT_MPEGLAYER3			0x0055
#define  WAVE_FORMAT_LUCENT_G723		0x0059
#define  WAVE_FORMAT_CIRRUS			0x0060
#define  WAVE_FORMAT_ESPCM			0x0061
#define  WAVE_FORMAT_VOXWARE			0x0062
#define  WAVE_FORMAT_CANOPUS_ATRAC		0x0063
#define  WAVE_FORMAT_G726_ADPCM			0x0064
#define  WAVE_FORMAT_G722_ADPCM			0x0065
#define  WAVE_FORMAT_DSAT			0x0066
#define  WAVE_FORMAT_DSAT_DISPLAY		0x0067
#define  WAVE_FORMAT_VOXWARE_BYTE_ALIGNED	0x0069
#define  WAVE_FORMAT_VOXWARE_AC8		0x0070
#define  WAVE_FORMAT_VOXWARE_AC10		0x0071
#define  WAVE_FORMAT_VOXWARE_AC16		0x0072
#define  WAVE_FORMAT_VOXWARE_AC20		0x0073
#define  WAVE_FORMAT_VOXWARE_RT24		0x0074
#define  WAVE_FORMAT_VOXWARE_RT29		0x0075
#define  WAVE_FORMAT_VOXWARE_RT29HW		0x0076
#define  WAVE_FORMAT_VOXWARE_VR12		0x0077
#define  WAVE_FORMAT_VOXWARE_VR18		0x0078
#define  WAVE_FORMAT_VOXWARE_TQ40		0x0079
#define  WAVE_FORMAT_VOXWARE_SC3		0x007a
#define  WAVE_FORMAT_VOXWARE_SC3_1		0x007b
#define  WAVE_FORMAT_SOFTSOUND			0x0080
#define  WAVE_FORMAT_VOXWARE_TQ60		0x0081
#define  WAVE_FORMAT_MSRT24			0x0082  /*  Microsoft Corporation */
#define  WAVE_FORMAT_G729A			0x0083
#define  WAVE_FORMAT_MVI_MVI2			0x0084
#define  WAVE_FORMAT_DF_G726			0x0085
#define  WAVE_FORMAT_DF_GSM610			0x0086
#define  WAVE_FORMAT_ISIAUDIO			0x0088
#define  WAVE_FORMAT_ONLIVE			0x0089
#define  WAVE_FORMAT_MULTITUDE_FT_SX20		0x008a
#define  WAVE_FORMAT_INFOCOM_ITS_G721_ADPCM	0x008b
#define  WAVE_FORMAT_CONVEDIA_G729		0x008c
#define  WAVE_FORMAT_CONGRUENCY			0x008d
#define  WAVE_FORMAT_SBC24			0x0091
#define  WAVE_FORMAT_DOLBY_AC3_SPDIF		0x0092
#define  WAVE_FORMAT_MEDIASONIC_G723		0x0093
#define  WAVE_FORMAT_PROSODY_8KBPS		0x0094
#define  WAVE_FORMAT_ZYXEL_ADPCM		0x0097
#define  WAVE_FORMAT_PHILIPS_LPCBB		0x0098
#define  WAVE_FORMAT_PACKED			0x0099
#define  WAVE_FORMAT_MALDEN_PHONYTALK		0x00a0
#define  WAVE_FORMAT_RACAL_RECORDER_GSM		0x00a1
#define  WAVE_FORMAT_RACAL_RECORDER_G720_A	0x00a2
#define  WAVE_FORMAT_RACAL_RECORDER_G723_1	0x00a3
#define  WAVE_FORMAT_RACAL_RECORDER_TETRA_ACELP	0x00a4
#define  WAVE_FORMAT_NEC_AAC			0x00b0
#define  WAVE_FORMAT_RAW_AAC1			0x00ff
#define  WAVE_FORMAT_RHETOREX_ADPCM		0x0100
#define  WAVE_FORMAT_IRAT			0x0101
#define  WAVE_FORMAT_VIVO_G723			0x0111
#define  WAVE_FORMAT_VIVO_SIREN			0x0112
#define  WAVE_FORMAT_PHILIPS_CELP		0x0120
#define  WAVE_FORMAT_PHILIPS_GRUNDIG		0x0121
#define  WAVE_FORMAT_DIGITAL_G723		0x0123
#define  WAVE_FORMAT_SANYO_LD_ADPCM		0x0125
#define  WAVE_FORMAT_SIPROLAB_ACEPLNET		0x0130
#define  WAVE_FORMAT_SIPROLAB_ACELP4800		0x0131
#define  WAVE_FORMAT_SIPROLAB_ACELP8V3		0x0132
#define  WAVE_FORMAT_SIPROLAB_G729		0x0133
#define  WAVE_FORMAT_SIPROLAB_G729A		0x0134
#define  WAVE_FORMAT_SIPROLAB_KELVIN		0x0135
#define  WAVE_FORMAT_VOICEAGE_AMR		0x0136
#define  WAVE_FORMAT_G726ADPCM			0x0140
#define  WAVE_FORMAT_DICTAPHONE_CELP68		0x0141
#define  WAVE_FORMAT_DICTAPHONE_CELP54		0x0142
#define  WAVE_FORMAT_QUALCOMM_PUREVOICE		0x0150
#define  WAVE_FORMAT_QUALCOMM_HALFRATE		0x0151
#define  WAVE_FORMAT_TUBGSM			0x0155
#define  WAVE_FORMAT_MSAUDIO1			0x0160
#define  WAVE_FORMAT_WMAUDIO2			0x0161
#define  WAVE_FORMAT_WMAUDIO3			0x0162
#define  WAVE_FORMAT_WMAUDIO_LOSSLESS		0x0163
#define  WAVE_FORMAT_WMASPDIF			0x0164
#define  WAVE_FORMAT_UNISYS_NAP_ADPCM		0x0170
#define  WAVE_FORMAT_UNISYS_NAP_ULAW		0x0171
#define  WAVE_FORMAT_UNISYS_NAP_ALAW		0x0172
#define  WAVE_FORMAT_UNISYS_NAP_16K		0x0173
#define  WAVE_FORMAT_SYCOM_ACM_SYC008		0x0174
#define  WAVE_FORMAT_SYCOM_ACM_SYC701_G726L	0x0175
#define  WAVE_FORMAT_SYCOM_ACM_SYC701_CELP54	0x0176
#define  WAVE_FORMAT_SYCOM_ACM_SYC701_CELP68	0x0177
#define  WAVE_FORMAT_KNOWLEDGE_ADVENTURE_ADPCM	0x0178
#define  WAVE_FORMAT_FRAUNHOFER_IIS_MPEG2_AAC	0x0180
#define  WAVE_FORMAT_DTS_DS			0x0190
#define  WAVE_FORMAT_CREATIVE_ADPCM		0x0200	/*  Creative Labs, Inc  */
#define  WAVE_FORMAT_CREATIVE_FASTSPEECH8	0x0202	/*  Creative Labs, Inc  */
#define  WAVE_FORMAT_CREATIVE_FASTSPEECH10	0x0203	/*  Creative Labs, Inc  */
#define  WAVE_FORMAT_UHER_ADPCM			0x0210
#define  WAVE_FORMAT_ULEAD_DV_AUDIO		0x0215
#define  WAVE_FORMAT_ULEAD_DV_AUDIO_1		0x0216
#define  WAVE_FORMAT_QUARTERDECK		0x0220
#define  WAVE_FORMAT_ILINK_VC			0x0230
#define  WAVE_FORMAT_RAW_SPORT			0x0240
#define  WAVE_FORMAT_ESST_AC3			0x0241
#define  WAVE_FORMAT_GENERIC_PASSTHRU		0x0249
#define  WAVE_FORMAT_IPI_HSX			0x0250
#define  WAVE_FORMAT_IPI_RPELP			0x0251
#define  WAVE_FORMAT_CS2			0x0260
#define  WAVE_FORMAT_SONY_SCX			0x0270
#define  WAVE_FORMAT_SONY_SCY			0x0271
#define  WAVE_FORMAT_SONY_ATRAC3		0x0272
#define  WAVE_FORMAT_SONY_SPC			0x0273
#define  WAVE_FORMAT_TELUM_AUDIO		0x0280
#define  WAVE_FORMAT_TELUM_IA_AUDIO		0x0281
#define  WAVE_FORMAT_NORCOM_VOICE_SYSTEMS_ADPCM	0x0285
#define  WAVE_FORMAT_FM_TOWNS_SND		0x0300	/*  Fujitsu Corp.  */
#define  WAVE_FORMAT_MICRONAS			0x0350
#define  WAVE_FORMAT_MICRONAS_CELP833		0x0351
#define  WAVE_FORMAT_BTV_DIGITAL		0x0400
#define  WAVE_FORMAT_INTEL_MUSIC_CODER		0x0401
#define  WAVE_FORMAT_INDEO_AUDIO		0x0402
#define  WAVE_FORMAT_QDESIGN_MUSIC		0x0450
#define  WAVE_FORMAT_ON2_VP7_AUDIO		0x0500
#define  WAVE_FORMAT_ON2_VP6_AUDIO		0x0501
#define  WAVE_FORMAT_VME_VMPCM			0x0680
#define  WAVE_FORMAT_TPC			0x0681
#define  WAVE_FORMAT_LIGHTWAVE_LOSSLESS		0x08ae
#define  WAVE_FORMAT_OLIGSM			0x1000	/*  Ing C. Olivetti & C., S.p.A.  */
#define  WAVE_FORMAT_OLIADPCM			0x1001	/*  Ing C. Olivetti & C., S.p.A.  */
#define  WAVE_FORMAT_OLICELP			0x1002	/*  Ing C. Olivetti & C., S.p.A.  */
#define  WAVE_FORMAT_OLISBC			0x1003	/*  Ing C. Olivetti & C., S.p.A.  */
#define  WAVE_FORMAT_OLIOPR			0x1004	/*  Ing C. Olivetti & C., S.p.A.  */
#define  WAVE_FORMAT_LH_CODEC			0x1100
#define  WAVE_FORMAT_LH_CODEC_CELP		0x1101
#define  WAVE_FORMAT_LH_CODEC_SBC8		0x1102
#define  WAVE_FORMAT_LH_CODEC_SBC12		0x1103
#define  WAVE_FORMAT_LH_CODEC_SBC16		0x1104
#define  WAVE_FORMAT_NORRIS			0x1400
#define  WAVE_FORMAT_ISIAUDIO_2			0x1401
#define  WAVE_FORMAT_SOUNDSPACE_MUSICOMPRESS	0x1500
#define  WAVE_FORMAT_MPEG_ADTS_AAC		0x1600
#define  WAVE_FORMAT_MPEG_RAW_AAC		0x1601
#define  WAVE_FORMAT_MPEG_LOAS			0x1602
#define  WAVE_FORMAT_NOKIA_MPEG_ADTS_AAC	0x1608
#define  WAVE_FORMAT_NOKIA_MPEG_RAW_AAC		0x1609
#define  WAVE_FORMAT_VODAFONE_MPEG_ADTS_AAC	0x160a
#define  WAVE_FORMAT_VODAFONE_MPEG_RAW_AAC	0x160b
#define  WAVE_FORMAT_MPEG_HEAAC			0x1610
#define  WAVE_FORMAT_VOXWARE_RT24_SPEECH	0x181c
#define  WAVE_FORMAT_SONICFOUNDRY_LOSSLESS	0x1971
#define  WAVE_FORMAT_INNINGS_TELECOM_ADPCM	0x1979
#define  WAVE_FORMAT_LUCENT_SX8300P		0x1c07
#define  WAVE_FORMAT_LUCENT_SX5363S		0x1c0c
#define  WAVE_FORMAT_CUSEEME			0x1f03
#define  WAVE_FORMAT_NTCSOFT_ALF2CM_ACM		0x1fc4
#define  WAVE_FORMAT_DVM			0x2000
#define  WAVE_FORMAT_DTS2			0x2001
#define  WAVE_FORMAT_MAKEAVIS			0x3313
#define  WAVE_FORMAT_DIVIO_MPEG4_AAC		0x4143
#define  WAVE_FORMAT_NOKIA_ADAPTIVE_MULTIRATE	0x4201
#define  WAVE_FORMAT_DIVIO_G726			0x4243
#define  WAVE_FORMAT_LEAD_SPEECH		0x434c
#define  WAVE_FORMAT_LEAD_VORBIS		0x564c
#define  WAVE_FORMAT_WAVPACK_AUDIO		0x5756
#define  WAVE_FORMAT_ALAC			0x6c61
#define  WAVE_FORMAT_OGG_VORBIS_MODE_1		0x674f
#define  WAVE_FORMAT_OGG_VORBIS_MODE_2		0x6750
#define  WAVE_FORMAT_OGG_VORBIS_MODE_3		0x6751
#define  WAVE_FORMAT_OGG_VORBIS_MODE_1_PLUS	0x676f
#define  WAVE_FORMAT_OGG_VORBIS_MODE_2_PLUS	0x6770
#define  WAVE_FORMAT_OGG_VORBIS_MODE_3_PLUS	0x6771
#define  WAVE_FORMAT_3COM_NBX			0x7000
#define  WAVE_FORMAT_OPUS			0x704f
#define  WAVE_FORMAT_FAAD_AAC			0x706d
#define  WAVE_FORMAT_AMR_NB			0x7361
#define  WAVE_FORMAT_AMR_WB			0x7362
#define  WAVE_FORMAT_AMR_WP			0x7363
#define  WAVE_FORMAT_GSM_AMR_CBR		0x7a21
#define  WAVE_FORMAT_GSM_AMR_VBR_SID		0x7a22
#define  WAVE_FORMAT_COMVERSE_INFOSYS_G723_1	0xa100
#define  WAVE_FORMAT_COMVERSE_INFOSYS_AVQSBC	0xa101
#define  WAVE_FORMAT_COMVERSE_INFOSYS_SBC	0xa102
#define  WAVE_FORMAT_SYMBOL_G729_A		0xa103
#define  WAVE_FORMAT_VOICEAGE_AMR_WB		0xa104
#define  WAVE_FORMAT_INGENIENT_G726		0xa105
#define  WAVE_FORMAT_MPEG4_AAC			0xa106
#define  WAVE_FORMAT_ENCORE_G726		0xa107
#define  WAVE_FORMAT_ZOLL_ASAO			0xa108
#define  WAVE_FORMAT_SPEEX_VOICE		0xa109
#define  WAVE_FORMAT_VIANIX_MASC		0xa10a
#define  WAVE_FORMAT_WM9_SPECTRUM_ANALYZER	0xa10b
#define  WAVE_FORMAT_WMF_SPECTRUM_ANAYZER	0xa10c
#define  WAVE_FORMAT_GSM_610			0xa10d
#define  WAVE_FORMAT_GSM_620			0xa10e
#define  WAVE_FORMAT_GSM_660			0xa10f
#define  WAVE_FORMAT_GSM_690			0xa110
#define  WAVE_FORMAT_GSM_ADAPTIVE_MULTIRATE_WB	0xa111
#define  WAVE_FORMAT_POLYCOM_G722		0xa112
#define  WAVE_FORMAT_POLYCOM_G728		0xa113
#define  WAVE_FORMAT_POLYCOM_G729_A		0xa114
#define  WAVE_FORMAT_POLYCOM_SIREN		0xa115
#define  WAVE_FORMAT_GLOBAL_IP_ILBC		0xa116
#define  WAVE_FORMAT_RADIOTIME_TIME_SHIFT_RADIO	0xa117
#define  WAVE_FORMAT_NICE_ACA			0xa118
#define  WAVE_FORMAT_NICE_ADPCM			0xa119
#define  WAVE_FORMAT_VOCORD_G721		0xa11a
#define  WAVE_FORMAT_VOCORD_G726		0xa11b
#define  WAVE_FORMAT_VOCORD_G722_1		0xa11c
#define  WAVE_FORMAT_VOCORD_G728		0xa11d
#define  WAVE_FORMAT_VOCORD_G729		0xa11e
#define  WAVE_FORMAT_VOCORD_G729_A		0xa11f
#define  WAVE_FORMAT_VOCORD_G723_1		0xa120
#define  WAVE_FORMAT_VOCORD_LBC			0xa121
#define  WAVE_FORMAT_NICE_G728			0xa122
#define  WAVE_FORMAT_FRACE_TELECOM_G729		0xa123
#define  WAVE_FORMAT_CODIAN			0xa124
#define  WAVE_FORMAT_FLAC			0xf1ac
#if !defined(WAVE_FORMAT_EXTENSIBLE)
#define  WAVE_FORMAT_EXTENSIBLE			0xfffe  /* Microsoft */
#endif
#define WAVE_FORMAT_DEVELOPMENT			(0xffff)


#ifndef MM_MICROSOFT
#define MM_MICROSOFT 0x01
#endif
#define MM_MSFT_ACM_MSADPCM 0x21
#define MM_MSFT_ACM_IMAADPCM 0x22
#define MM_MSFT_ACM_GSM610 0x24
#define MM_MSFT_ACM_G711 0x25
#define MM_MSFT_ACM_PCM 0x26
#define MM_MSFT_ACM_WMAUDIO 39
#define MM_MSFT_ACM_MSAUDIO1 39
#define MM_MSFT_ACM_WMAUDIO2 101

#define MM_FRAUNHOFER_IIS 0xAC
#define MM_FHGIIS_MPEGLAYER3_DECODE 0x09
#define MM_FHGIIS_MPEGLAYER3_PROFESSIONAL 0x0d

typedef struct adpcmcoef_tag {
	short   iCoef1;
	short   iCoef2;
} ADPCMCOEFSET;
typedef ADPCMCOEFSET *PADPCMCOEFSET,
	*NPADPCMCOEFSET, *LPADPCMCOEFSET;

typedef struct adpcmwaveformat_tag {
	WAVEFORMATEX    wfx;
	WORD            wSamplesPerBlock;
	WORD            wNumCoef;
	/* FIXME: this should be aCoef[0] */
	ADPCMCOEFSET    aCoef[1];
} ADPCMWAVEFORMAT;
typedef ADPCMWAVEFORMAT *PADPCMWAVEFORMAT,
	*NPADPCMWAVEFORMAT, *LPADPCMWAVEFORMAT;

typedef struct drmwaveformat_tag {
	WAVEFORMATEX    wfx;
	WORD            wReserved;
	ULONG           ulContentId;
	WAVEFORMATEX    wfxSecure;
} DRMWAVEFORMAT;
typedef DRMWAVEFORMAT *PDRMWAVEFORMAT, *NPDRMWAVEFORMAT,
	*LPDRMWAVEFORMAT;

typedef struct dvi_adpcmwaveformat_tag {
	WAVEFORMATEX    wfx;
	WORD            wSamplesPerBlock;
} DVIADPCMWAVEFORMAT;
typedef DVIADPCMWAVEFORMAT *PDVIADPCMWAVEFORMAT,
	*NPDVIADPCMWAVEFORMAT, *LPDVIADPCMWAVEFORMAT;

typedef struct ima_adpcmwaveformat_tag {
	WAVEFORMATEX    wfx;
	WORD            wSamplesPerBlock;
} IMAADPCMWAVEFORMAT;
typedef IMAADPCMWAVEFORMAT *PIMAADPCMWAVEFORMAT, *NPIMAADPCMWAVEFORMAT,
	*LPIMAADPCMWAVEFORMAT;

typedef struct mediaspace_adpcmwaveformat_tag {
	WAVEFORMATEX    wfx;
	WORD            wRevision;
} MEDIASPACEADPCMWAVEFORMAT;
typedef MEDIASPACEADPCMWAVEFORMAT *PMEDIASPACEADPCMWAVEFORMAT,
	*NPMEDIASPACEADPCMWAVEFORMAT, *LPMEDIASPACEADPCMWAVEFORMAT;

typedef struct sierra_adpcmwaveformat_tag {
	WAVEFORMATEX    wfx;
	WORD            wRevision;
} SIERRAADPCMWAVEFORMAT;
typedef SIERRAADPCMWAVEFORMAT *PSIERRAADPCMWAVEFORMAT,
	*NPSIERRAADPCMWAVEFORMAT, *LPSIERRAADPCMWAVEFORMAT;

typedef struct g723_adpcmwaveformat_tag {
	WAVEFORMATEX    wfx;
	WORD            cbExtraSize;
	WORD            nAuxBlockSize;
} G723_ADPCMWAVEFORMAT;
typedef G723_ADPCMWAVEFORMAT *PG723_ADPCMWAVEFORMAT,
	*NPG723_ADPCMWAVEFORMAT, *LPG723_ADPCMWAVEFORMAT;

typedef struct digistdwaveformat_tag {
	WAVEFORMATEX    wfx;
} DIGISTDWAVEFORMAT;
typedef DIGISTDWAVEFORMAT *PDIGISTDWAVEFORMAT,
	*NPDIGISTDWAVEFORMAT, *LPDIGISTDWAVEFORMAT;

typedef struct digifixwaveformat_tag {
	WAVEFORMATEX    wfx;
} DIGIFIXWAVEFORMAT;
typedef DIGIFIXWAVEFORMAT *PDIGIFIXWAVEFORMAT,
	*NPDIGIFIXWAVEFORMAT, *LPDIGIFIXWAVEFORMAT;

typedef struct creative_fastspeechformat_tag {
	WAVEFORMATEX    ewf;
} DIALOGICOKIADPCMWAVEFORMAT;
typedef DIALOGICOKIADPCMWAVEFORMAT *PDIALOGICOKIADPCMWAVEFORMAT,
	*NPDIALOGICOKIADPCMWAVEFORMAT, *LPDIALOGICOKIADPCMWAVEFORMAT;

typedef struct yamaha_adpmcwaveformat_tag {
	WAVEFORMATEX    wfx;
} YAMAHA_ADPCMWAVEFORMAT;
typedef YAMAHA_ADPCMWAVEFORMAT *PYAMAHA_ADPCMWAVEFORMAT,
	*NPYAMAHA_ADPCMWAVEFORMAT, *LPYAMAHA_ADPCMWAVEFORMAT;

typedef struct sonarcwaveformat_tag {
	WAVEFORMATEX    wfx;
	WORD            wCompType;
} SONARCWAVEFORMAT;
typedef SONARCWAVEFORMAT *PSONARCWAVEFORMAT,
	*NPSONARCWAVEFORMAT,*LPSONARCWAVEFORMAT;

typedef struct truespeechwaveformat_tag {
	WAVEFORMATEX    wfx;
	WORD            wRevision;
	WORD            nSamplesPerBlock;
	BYTE            abReserved[28];
} TRUESPEECHWAVEFORMAT;
typedef TRUESPEECHWAVEFORMAT *PTRUESPEECHWAVEFORMAT,
	*NPTRUESPEECHWAVEFORMAT, *LPTRUESPEECHWAVEFORMAT;

typedef struct echosc1waveformat_tag {
	WAVEFORMATEX    wfx;
} ECHOSC1WAVEFORMAT;
typedef ECHOSC1WAVEFORMAT *PECHOSC1WAVEFORMAT,
	*NPECHOSC1WAVEFORMAT, *LPECHOSC1WAVEFORMAT;

typedef struct audiofile_af36waveformat_tag {
	WAVEFORMATEX    wfx;
} AUDIOFILE_AF36WAVEFORMAT;
typedef AUDIOFILE_AF36WAVEFORMAT *PAUDIOFILE_AF36WAVEFORMAT,
	*NPAUDIOFILE_AF36WAVEFORMAT, *LPAUDIOFILE_AF36WAVEFORMAT;

typedef struct aptxwaveformat_tag {
	WAVEFORMATEX    wfx;
} APTXWAVEFORMAT;
typedef APTXWAVEFORMAT *PAPTXWAVEFORMAT,
	*NPAPTXWAVEFORMAT, *LPAPTXWAVEFORMAT;

typedef struct audiofile_af10waveformat_tag {
	WAVEFORMATEX    wfx;
} AUDIOFILE_AF10WAVEFORMAT;
typedef AUDIOFILE_AF10WAVEFORMAT *PAUDIOFILE_AF10WAVEFORMAT,
	*NPAUDIOFILE_AF10WAVEFORMAT,  *LPAUDIOFILE_AF10WAVEFORMAT;

typedef struct dolbyac2waveformat_tag {
	WAVEFORMATEX    wfx;
	WORD            nAuxBitsCode;
} DOLBYAC2WAVEFORMAT;

typedef struct gsm610waveformat_tag {
	WAVEFORMATEX    wfx;
	WORD            wSamplesPerBlock;
} GSM610WAVEFORMAT;
typedef GSM610WAVEFORMAT *PGSM610WAVEFORMAT,
	*NPGSM610WAVEFORMAT, *LPGSM610WAVEFORMAT;

typedef struct adpcmewaveformat_tag {
	WAVEFORMATEX    wfx;
	WORD            wSamplesPerBlock;
} ADPCMEWAVEFORMAT;
typedef ADPCMEWAVEFORMAT *PADPCMEWAVEFORMAT,
	*NPADPCMEWAVEFORMAT, *LPADPCMEWAVEFORMAT;

typedef struct contres_vqlpcwaveformat_tag {
	WAVEFORMATEX    wfx;
	WORD            wSamplesPerBlock;
} CONTRESVQLPCWAVEFORMAT;
typedef CONTRESVQLPCWAVEFORMAT *PCONTRESVQLPCWAVEFORMAT,
	*NPCONTRESVQLPCWAVEFORMAT, *LPCONTRESVQLPCWAVEFORMAT;

typedef struct digirealwaveformat_tag {
	WAVEFORMATEX    wfx;
	WORD            wSamplesPerBlock;
} DIGIREALWAVEFORMAT;
typedef DIGIREALWAVEFORMAT *PDIGIREALWAVEFORMAT,
	*NPDIGIREALWAVEFORMAT, *LPDIGIREALWAVEFORMAT;

typedef struct digiadpcmmwaveformat_tag {
	WAVEFORMATEX    wfx;
	WORD            wSamplesPerBlock;
} DIGIADPCMWAVEFORMAT;
typedef DIGIADPCMWAVEFORMAT *PDIGIADPCMWAVEFORMAT,
	*NPDIGIADPCMWAVEFORMAT, *LPDIGIADPCMWAVEFORMAT;

typedef struct contres_cr10waveformat_tag {
	WAVEFORMATEX    wfx;
	WORD            wSamplesPerBlock;
} CONTRESCR10WAVEFORMAT;
typedef CONTRESCR10WAVEFORMAT *PCONTRESCR10WAVEFORMAT,
	*NPCONTRESCR10WAVEFORMAT, *LPCONTRESCR10WAVEFORMAT;

typedef struct nms_vbxadpcmmwaveformat_tag {
	WAVEFORMATEX    wfx;
	WORD            wSamplesPerBlock;
} NMS_VBXADPCMWAVEFORMAT;
typedef NMS_VBXADPCMWAVEFORMAT *PNMS_VBXADPCMWAVEFORMAT,
	*NPNMS_VBXADPCMWAVEFORMAT, *LPNMS_VBXADPCMWAVEFORMAT;

typedef struct g721_adpcmwaveformat_tag {
	WAVEFORMATEX    wfx;
	WORD            nAuxBlockSize;
} G721_ADPCMWAVEFORMAT;
typedef G721_ADPCMWAVEFORMAT *PG721_ADPCMWAVEFORMAT,
	*NG721_ADPCMWAVEFORMAT, *LPG721_ADPCMWAVEFORMAT;

typedef struct creative_adpcmwaveformat_tag {
	WAVEFORMATEX    wfx;
	WORD            wRevision;
} CREATIVEADPCMWAVEFORMAT;
typedef CREATIVEADPCMWAVEFORMAT *PCREATIVEADPCMWAVEFORMAT,
	*NPCREATIVEADPCMWAVEFORMAT, *LPCREATIVEADPCMWAVEFORMAT;

typedef struct creative_fastspeech8format_tag {
	WAVEFORMATEX    wfx;
	WORD wRevision;
} CREATIVEFASTSPEECH8WAVEFORMAT;
typedef CREATIVEFASTSPEECH8WAVEFORMAT *PCREATIVEFASTSPEECH8WAVEFORMAT,
	*NPCREATIVEFASTSPEECH8WAVEFORMAT, *LPCREATIVEFASTSPEECH8WAVEFORMAT;

typedef struct creative_fastspeech10format_tag {
	WAVEFORMATEX    wfx;
	WORD wRevision;
} CREATIVEFASTSPEECH10WAVEFORMAT;
typedef CREATIVEFASTSPEECH10WAVEFORMAT *PCREATIVEFASTSPEECH10WAVEFORMAT,
	*NPCREATIVEFASTSPEECH10WAVEFORMAT, *LPCREATIVEFASTSPEECH10WAVEFORMAT;

typedef struct fmtowns_snd_waveformat_tag {
	WAVEFORMATEX    wfx;
	WORD            wRevision;
} FMTOWNS_SND_WAVEFORMAT;
typedef FMTOWNS_SND_WAVEFORMAT *PFMTOWNS_SND_WAVEFORMAT,
	*NPFMTOWNS_SND_WAVEFORMAT, *LPFMTOWNS_SND_WAVEFORMAT;

typedef struct oligsmwaveformat_tag {
	WAVEFORMATEX    wfx;
} OLIGSMWAVEFORMAT;
typedef OLIGSMWAVEFORMAT *POLIGSMWAVEFORMAT,
	*NPOLIGSMWAVEFORMAT, *LPOLIGSMWAVEFORMAT;

typedef struct oliadpcmwaveformat_tag {
	WAVEFORMATEX    wfx;
} OLIADPCMWAVEFORMAT;
typedef OLIADPCMWAVEFORMAT *POLIADPCMWAVEFORMAT,
	*NPOLIADPCMWAVEFORMAT, *LPOLIADPCMWAVEFORMAT;

typedef struct olicelpwaveformat_tag {
	WAVEFORMATEX    wfx;
} OLICELPWAVEFORMAT;
typedef OLICELPWAVEFORMAT *POLICELPWAVEFORMAT,
	*NPOLICELPWAVEFORMAT, *LPOLICELPWAVEFORMAT;

typedef struct olisbcwaveformat_tag {
	WAVEFORMATEX    wfx;
} OLISBCWAVEFORMAT;
typedef OLISBCWAVEFORMAT *POLISBCWAVEFORMAT,
	*NPOLISBCWAVEFORMAT, *LPOLISBCWAVEFORMAT;

typedef struct olioprwaveformat_tag {
	WAVEFORMATEX    wfx;
} OLIOPRWAVEFORMAT;
typedef OLIOPRWAVEFORMAT *POLIOPRWAVEFORMAT,
	*NPOLIOPRWAVEFORMAT, *LPOLIOPRWAVEFORMAT;

typedef struct csimaadpcmwaveformat_tag {
	WAVEFORMATEX    wfx;
} CSIMAADPCMWAVEFORMAT;
typedef CSIMAADPCMWAVEFORMAT *PCSIMAADPCMWAVEFORMAT,
	*NPCSIMAADPCMWAVEFORMAT, *LPCSIMAADPCMWAVEFORMAT;

typedef struct mpeg1waveformat_tag {
	WAVEFORMATEX	wfx;
	WORD		fwHeadLayer;
	DWORD		dwHeadBitrate;
	WORD		fwHeadMode;
	WORD		fwHeadModeExt;
	WORD		wHeadEmphasis;
	WORD		fwHeadFlags;
	DWORD		dwPTSLow;
	DWORD		dwPTSHigh;
} MPEG1WAVEFORMAT;
typedef MPEG1WAVEFORMAT *PMPEG1WAVEFORMAT,
	*NPMPEG1WAVEFORMAT, *LPMPEG1WAVEFORMAT;

#define	ACM_MPEG_LAYER1		0x0001
#define	ACM_MPEG_LAYER2		0x0002
#define	ACM_MPEG_LAYER3		0x0004

#define	ACM_MPEG_STEREO		0x0001
#define	ACM_MPEG_JOINTSTEREO	0x0002
#define	ACM_MPEG_DUALCHANNEL	0x0004
#define	ACM_MPEG_SINGLECHANNEL	0x0008
#define	ACM_MPEG_PRIVATEBIT	0x0001
#define	ACM_MPEG_COPYRIGHT	0x0002
#define	ACM_MPEG_ORIGINALHOME	0x0004
#define	ACM_MPEG_PROTECTIONBIT	0x0008
#define	ACM_MPEG_ID_MPEG1	0x0010

typedef struct mpeglayer3waveformat_tag {
	WAVEFORMATEX	wfx;
	WORD		wID;
	DWORD		fdwFlags;
	WORD		nBlockSize;
	WORD		nFramesPerBlock;
	WORD		nCodecDelay;
} MPEGLAYER3WAVEFORMAT;
typedef MPEGLAYER3WAVEFORMAT *PMPEGLAYER3WAVEFORMAT,
	*NPMPEGLAYER3WAVEFORMAT, *LPMPEGLAYER3WAVEFORMAT;

#define MPEGLAYER3_WFX_EXTRA_BYTES   12

#define MPEGLAYER3_ID_UNKNOWN           0
#define MPEGLAYER3_ID_MPEG		1
#define MPEGLAYER3_ID_CONSTANTFRAMESIZE	2

#define MPEGLAYER3_FLAG_PADDING_ISO	0x00000000
#define MPEGLAYER3_FLAG_PADDING_ON	0x00000001
#define MPEGLAYER3_FLAG_PADDING_OFF	0x00000002

typedef struct msaudio1waveformat_tag {
	WAVEFORMATEX wfx;
	WORD         wSamplesPerBlock;
	WORD         wEncodeOptions;
} MSAUDIO1WAVEFORMAT, *LPMSAUDIO1WAVEFORMAT;

#define WMAUDIO_BITS_PER_SAMPLE 16
#define WMAUDIO_MAX_CHANNELS     2

#define MSAUDIO1_BITS_PER_SAMPLE     WMAUDIO_BITS_PER_SAMPLE
#define MSAUDIO1_MAX_CHANNELS        WMAUDIO_MAX_CHANNELS
#define MSAUDIO1_WFX_EXTRA_BYTES     (sizeof(MSAUDIO1WAVEFORMAT) - sizeof(WAVEFORMATEX))

typedef struct wmaudio2waveformat_tag {
	WAVEFORMATEX wfx;
	DWORD        dwSamplesPerBlock;
	WORD         wEncodeOptions;
	DWORD        dwSuperBlockAlign;
} WMAUDIO2WAVEFORMAT, *LPWMAUDIO2WAVEFORMAT;

#define WMAUDIO2_BITS_PER_SAMPLE     WMAUDIO_BITS_PER_SAMPLE
#define WMAUDIO2_MAX_CHANNELS        WMAUDIO_MAX_CHANNELS
#define WMAUDIO2_WFX_EXTRA_BYTES     (sizeof(WMAUDIO2WAVEFORMAT) - sizeof(WAVEFORMATEX))

typedef struct wmaudio3waveformat_tag {
	WAVEFORMATEX wfx;
	WORD         wValidBitsPerSample;
	DWORD        dwChannelMask;
	DWORD        dwReserved1;
	DWORD        dwReserved2;
	WORD         wEncodeOptions;
	WORD         wReserved3;
} WMAUDIO3WAVEFORMAT, *LPWMAUDIO3WAVEFORMAT;

#define WMAUDIO3_WFX_EXTRA_BYTES     (sizeof(WMAUDIO3WAVEFORMAT) - sizeof(WAVEFORMATEX))

#ifdef GUID_DEFINED

#ifndef _WAVEFORMATEXTENSIBLE_
#define _WAVEFORMATEXTENSIBLE_
typedef struct {
    WAVEFORMATEX    Format;
    union {
        WORD        wValidBitsPerSample;
        WORD        wSamplesPerBlock;
        WORD        wReserved;
    } Samples;
    DWORD           dwChannelMask;
    GUID            SubFormat;
} WAVEFORMATEXTENSIBLE, *PWAVEFORMATEXTENSIBLE;
#endif /* _WAVEFORMATEXTENSIBLE_ */

#endif /* GUID_DEFINED */

typedef WAVEFORMATEXTENSIBLE    WAVEFORMATPCMEX;
typedef WAVEFORMATPCMEX*        PWAVEFORMATPCMEX;
typedef WAVEFORMATPCMEX*        NPWAVEFORMATPCMEX;
typedef WAVEFORMATPCMEX*        LPWAVEFORMATPCMEX;

typedef WAVEFORMATEXTENSIBLE    WAVEFORMATIEEEFLOATEX;
typedef WAVEFORMATIEEEFLOATEX*  PWAVEFORMATIEEEFLOATEX;
typedef WAVEFORMATIEEEFLOATEX*  NPWAVEFORMATIEEEFLOATEX;
typedef WAVEFORMATIEEEFLOATEX*  LPWAVEFORMATIEEEFLOATEX;

#ifndef _SPEAKER_POSITIONS_
#define _SPEAKER_POSITIONS_

#define SPEAKER_FRONT_LEFT              0x00000001
#define SPEAKER_FRONT_RIGHT             0x00000002
#define SPEAKER_FRONT_CENTER            0x00000004
#define SPEAKER_LOW_FREQUENCY           0x00000008
#define SPEAKER_BACK_LEFT               0x00000010
#define SPEAKER_BACK_RIGHT              0x00000020
#define SPEAKER_FRONT_LEFT_OF_CENTER    0x00000040
#define SPEAKER_FRONT_RIGHT_OF_CENTER   0x00000080
#define SPEAKER_BACK_CENTER             0x00000100
#define SPEAKER_SIDE_LEFT               0x00000200
#define SPEAKER_SIDE_RIGHT              0x00000400
#define SPEAKER_TOP_CENTER              0x00000800
#define SPEAKER_TOP_FRONT_LEFT          0x00001000
#define SPEAKER_TOP_FRONT_CENTER        0x00002000
#define SPEAKER_TOP_FRONT_RIGHT         0x00004000
#define SPEAKER_TOP_BACK_LEFT           0x00008000
#define SPEAKER_TOP_BACK_CENTER         0x00010000
#define SPEAKER_TOP_BACK_RIGHT          0x00020000
#define SPEAKER_RESERVED                0x7FFC0000
#define SPEAKER_ALL                     0x80000000

#endif /* _SPEAKER_POSITIONS_ */

/* DIB stuff */

#ifndef BI_BITFIELDS
#define BI_BITFIELDS     3
#endif

#ifndef QUERYDIBSUPPORT
#define	QUERYDIBSUPPORT		3073
#define	QDI_SETDIBITS		1
#define	QDI_GETDIBITS		2
#define	QDI_DIBTOSCREEN		4
#define	QDI_STRETCHDIB		8
#endif

#ifndef NOBITMAP
typedef struct tagEXBMINFOHEADER {
    BITMAPINFOHEADER bmi;
    DWORD biExtDataOffset;
} EXBMINFOHEADER;
#endif


/* Video stuff */

#ifndef NONEWIC

#ifndef ICTYPE_VIDEO
#define ICTYPE_VIDEO		mmioFOURCC('v', 'i', 'd', 'c')
#define ICTYPE_AUDIO		mmioFOURCC('a', 'u', 'd', 'c')
#endif

#endif

#include <poppack.h>

#endif /* __WINE_MMREG_H */

#else /* __WIDL__ */

cpp_quote("#if 0")
#pragma pack(push, 1)

typedef struct tWAVEFORMATEX {
    WORD wFormatTag;
    WORD nChannels;
    DWORD nSamplesPerSec;
    DWORD nAvgBytesPerSec;
    WORD nBlockAlign;
    WORD wBitsPerSample;
    WORD cbSize;
    [size_is(cbSize)] BYTE pExtraBytes[];
} WAVEFORMATEX, *PWAVEFORMATEX, *NPWAVEFORMATEX, *LPWAVEFORMATEX;

typedef struct {
    WORD wFormatTag;
    WORD nChannels;
    DWORD nSamplesPerSec;
    DWORD nAvgBytesPerSec;
    WORD nBlockAlign;
    WORD wBitsPerSample;
    WORD cbSize;
    WORD wValidBitsPerSample;
    DWORD dwChannelMask;
    GUID SubFormat;
} WAVEFORMATEXTENSIBLE, *PWAVEFORMATEXTENSIBLE;

#pragma pack(pop)
cpp_quote("#endif")

#endif /* __WIDL__ */
