Browse Source

Retracted some winmm changes

Vincent Billet 3 months ago
parent
commit
1ed05c2498
1 changed files with 0 additions and 209 deletions
  1. 0 209
      core/sys/windows/winmm.odin

+ 0 - 209
core/sys/windows/winmm.odin

@@ -614,128 +614,6 @@ WAVEFORMATEXTENSIBLE :: struct {
 	SubFormat:     GUID,
 }
 
-MPEGLAYER3_WFX_EXTRA_BYTES :: 12
-// MPEG Layer3 WAVEFORMATEX structure
-MPEGLAYER3WAVEFORMAT :: struct {
-	using wfx:       WAVEFORMATEX,
-	wID:             WORD,
-	fdwFlags:        DWORD,
-	nBlockSize:      WORD,
-	nFramesPerBlock: WORD,
-	nCodecDelay:     WORD,
-}
-LPMPEGLAYER3WAVEFORMAT :: ^MPEGLAYER3WAVEFORMAT
-
-MPEGLAYER3_ID_UNKNOWN           :: 0
-MPEGLAYER3_ID_MPEG              :: 1
-MPEGLAYER3_ID_CONSTANTFRAMESIZE :: 2
-
-MPEGLAYER3_FLAG_PADDING_ISO     :: 0x00000000
-MPEGLAYER3_FLAG_PADDING_ON      :: 0x00000001
-MPEGLAYER3_FLAG_PADDING_OFF     :: 0x00000002
-
-/*
- "MPEG-2" in the comments below refers to ISO/IEC 13818-7 (MPEG-2 AAC spec).
- "MPEG-4" in the comments below refers to ISO/IEC 14496-3 (MPEG-4 Audio spec).
-
- The following defines the format block to be used for MPEG-2 AAC or MPEG-4 HE-AAC v1/v2 streams.
- When setting media type attributes in Media Foundation (MF) objects, this will appear in conjunction with major type MFMediaType_Audio and sub type MFAudioFormat_AAC (=MEDIASUBTYPE_MPEG_HEAAC).
- The format block structure HEAACWAVEFORMAT is defined below.  It starts with the structure HEAACWAVEINFO (which is an extension of WAVEFORMATEX), followed by AudioSpecificConfig() as defined by ISO/IEC 14496-3 (MPEG-4 audio).
- Since the length of AudioSpecificConfig() may vary from one stream to another, this is a variable size format block.
-
- The WAVEFORMATEX fields describe the properties of the core AAC stream, without SBR/PS extensions (if exists). This is the description of the WAVEFORMATEX fields:
-
- wfx.wFormatTag - Set this to WAVE_FORMAT_MPEG_HEAAC (0x1610).
-
- wfx.nChannels - Total number of channels in core AAC stream (including LFE if exists).
- This might be different than the decoded number of channels if the MPEG-4 Parametric Stereo (PS) tool exists. If unknown, set to zero.
-
- wfx.nSamplesPerSec - Sampling rate of core AAC stream. This will be one of the 12 supported sampling rate between 8000 and 96000 Hz, as defined in MPEG-2.
- This might be different than the decoded sampling rate if the MPEG-4 Spectral Band Replication (SBR) tool exists.
- If not know in advance, the sampling rate can be extracted from:
- - the 4-bit sampling_frequency_index field in adts_fixed_header(), or
- - program_config_element() in adif_header for MPEG-2 streams, or
- - the 4-bit samplingFrequencyIndex field in AudioSpecificConfig() for MPEG-4 streams.
-
- wfx.nAvgBytesPerSec - The average bytes per second calculated based on the average bit rate of the compressed stream.
- This value may be used by parsers to seek into a particular time offset in the stream. It may also be used by applications to determine roughly how much buffer length to allocate.
- If this is not known in advance, this value can be estimated by parsing some (or all) of the compressed HE-AAC frames and calculating bit rate based on average compressed frame size.
- If unknown, set to zero.
-
- wfx.nBlockAlign - Set this to 1.
-
- wfx.wBitsPerSample - Desired bit depth of the decoded PCM. If unknown, set to zero.
-
- wfx.cbSize - Set this to 12 (=sizeof(HEAACWAVEINFO)-sizeof(WAVEFORMATEX)) plus the size of AudioSpecificConfig() in bytes.
-
- ===================================
-
-How do we parse this format block? assume pbBuff is the address of the first byte in the format block. We do the following:
-
-pwfInfo := cast(^HEAACWAVEINFO)pbBuff
-
-if pwfInfo.wStructType == 0 {
-	pwf := cast(^HEAACWAVEFORMAT)pbBuff
-
-	// All HEAACWAVEFORMAT fields can now be accessed through pwf
-	// To parse AudioSpecificConfig(), write a function such as
-	// ParseAudioSpecificConfig :: proc(pbASC: ^BYTE, dwASCLen: DWORD),
-	// and call:
-
-	dwASCLen: DWORD = pwf.wfInfo.wfx.cbSize - size_of(HEAACWAVEINFO) + size_of(WAVEFORMATEX)
-
-	ParseAudioSpecificConfig(pwf.pbAudioSpecificConfig, dwASCLen)
-} else {
-	// Reserved
-}
-*/
-
-// This structure has a size of 30 bytes
-HEAACWAVEINFO :: struct {
-	// Defines core AAC properties. See description above. WAVEFORMATEX is of size 18 bytes.
-	using wfx: WAVEFORMATEX,
-
-	// Defines the payload type
-	// 0-RAW.  The stream contains raw_data_block() elements only.
-	// 1-ADTS. The stream contains an adts_sequence(), as defined by MPEG-2.
-	// 2-ADIF. The stream contains an adif_sequence(), as defined by MPEG-2.
-	// 3-LOAS. The stream contains an MPEG-4 audio transport stream with a synchronization layer LOAS and a multiplex layer LATM.
-	// All other codes are reserved.
-	wPayloadType: WORD,
-
-	// This is the 8-bit field audioProfileLevelIndication available in the MPEG-4 object descriptor.
-	// It is an indication (as defined in MPEG-4 audio) of the audio profile and level required to process the content associated with this stream.
-	// For example values 0x28-0x2B correspond to AAC Profile, values 0x2C-0x2F correspond to HE-AAC profile and 0x30-0x33 for HE-AAC v2 profile.
-	// If unknown, set to zero or 0xFE ("no audio profile specified").
-	wAudioProfileLevelIndication: WORD,
-
-	// Defines the data that follows this structure. Currently only one data type is supported:
-	// 0- AudioSpecificConfig() (as defined by MPEG-4 Audio, ISO/IEC 14496-3) will follow this structure.
-	//    wfx.cbSize will indicate the total length including AudioSpecificConfig().
-	//    Use HEAACWAVEFORMAT to gain easy access to the address of the first byte of AudioSpecificConfig() for parsing.
-	//    Typical values for the size of AudioSpecificConfig (ASC) are:
-	//    - 2 bytes for AAC or HE-AAC v1/v2 with implicit signaling of SBR,
-	//    - 5 bytes for HE-AAC v1 with explicit signaling of SBR,
-	//    - 7 bytes for HE-AAC v2 with explicit signaling of SBR and PS.
-	//    The size may be longer than 7 bytes if the 4-bit channelConfiguration field in ASC is zero, which means program_config_element() is present in ASC.
-	// All other codes are reserved.
-	wStructType: WORD,
-
-	// Set these to zero
-	wReserved1:  WORD,
-	dwReserved2: DWORD,
-}
-LPHEAACWAVEINFO :: ^HEAACWAVEINFO
-
-// This structure describes the format block for wStructType=0
-// This structure has a size of 31 bytes
-HEAACWAVEFORMAT :: struct {
-	using wfInfo:          HEAACWAVEINFO,
-	pbAudioSpecificConfig: [1]BYTE,  // First byte of AudioSpecificConfig()
-}
-LPHEAACWAVEFORMAT :: ^HEAACWAVEFORMAT
-
-
 WAVEHDR :: struct {
 	lpData:          LPSTR, /* pointer to locked data buffer */
 	dwBufferLength:  DWORD, /* length of data buffer */
@@ -824,90 +702,3 @@ CALLBACK_TASK     :: 0x00020000    /* dwCallback is a HTASK */
 CALLBACK_FUNCTION :: 0x00030000    /* dwCallback is a FARPROC */
 CALLBACK_THREAD   :: CALLBACK_TASK /* thread ID replaces 16 bit task */
 CALLBACK_EVENT    :: 0x00050000    /* dwCallback is an EVENT Handle */
-
-
-// Description: Type definitions used by the audio session manager RPC/COM interfaces
-
-//-------------------------------------------------------------------------
-// Description: AudioClient share mode
-//     SHARED -    The device will be opened in shared mode and use the WAS format.
-//     EXCLUSIVE - The device will be opened in exclusive mode and use the application specified format.
-AUDCLNT_SHAREMODE :: enum i32 {
-	SHARED,
-	EXCLUSIVE,
-}
-
-//-------------------------------------------------------------------------
-// Description: Audio stream categories
-// ForegroundOnlyMedia     - (deprecated for Win10) Music, Streaming audio
-// BackgroundCapableMedia  - (deprecated for Win10) Video with audio
-// Communications          - VOIP, chat, phone call
-// Alerts                  - Alarm, Ring tones
-// SoundEffects            - Sound effects, clicks, dings
-// GameEffects             - Game sound effects
-// GameMedia               - Background audio for games
-// GameChat                - In game player chat
-// Speech                  - Speech recognition
-// Media                   - Music, Streaming audio
-// Movie                   - Video with audio
-// FarFieldSpeech          - Capture of far field speech
-// UniformSpeech           - Uniform, device agnostic speech processing
-// VoiceTyping             - Dictation, typing by voice
-// Other                   - All other streams (default)
-AUDIO_STREAM_CATEGORY :: enum i32 {
-	//ForegroundOnlyMedia = 1,
-	//BackgroundCapableMedia = 2,
-	Communications = 3,
-	Alerts         = 4,
-	SoundEffects   = 5,
-	GameEffects    = 6,
-	GameMedia      = 7,
-	GameChat       = 8,
-	Speech         = 9,
-	Movie          = 10,
-	Media          = 11,
-	FarFieldSpeech = 12,
-	UniformSpeech  = 13,
-	VoiceTyping    = 14,
-	Other          = 0,
-}
-
-//-------------------------------------------------------------------------
-// Description: AudioClient stream flags
-// Can be a combination of AUDCLNT_STREAMFLAGS and AUDCLNT_SYSFXFLAGS:
-// AUDCLNT_STREAMFLAGS (this group of flags uses the high word, w/exception of high-bit which is reserved, 0x7FFF0000):
-//     AUDCLNT_STREAMFLAGS_CROSSPROCESS -             Audio policy control for this stream will be shared with with other process sessions that use the same audio session GUID.
-//     AUDCLNT_STREAMFLAGS_LOOPBACK -                 Initializes a renderer endpoint for a loopback audio application. In this mode, a capture stream will be opened on the specified renderer endpoint. Shared mode and a renderer endpoint is required.
-//                                                    Otherwise the IAudioClient.Initialize call will fail. If the initialize is successful, a capture stream will be available from the IAudioClient object.
-//     AUDCLNT_STREAMFLAGS_EVENTCALLBACK -            An exclusive mode client will supply an event handle that will be signaled when an IRP completes (or a waveRT buffer completes) telling it to fill the next buffer
-//     AUDCLNT_STREAMFLAGS_NOPERSIST -                Session state will not be persisted
-//     AUDCLNT_STREAMFLAGS_RATEADJUST -               The sample rate of the stream is adjusted to a rate specified by an application.
-//     AUDCLNT_STREAMFLAGS_SRC_DEFAULT_QUALITY -      When used with AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM, a sample rate converter with better quality than the default conversion but with a higher performance cost is used.
-//                                                    This should be used if the audio is ultimately intended to be heard by humans as opposed to other scenarios such as pumping silence or populating a meter.
-//     AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM -           A channel matrixer and a sample rate converter are inserted as necessary to convert between the uncompressed format supplied to IAudioClient.Initialize and the audio engine mix format.
-//     AUDCLNT_SESSIONFLAGS_EXPIREWHENUNOWNED -       Session expires when there are no streams and no owning session controls.
-//     AUDCLNT_SESSIONFLAGS_DISPLAY_HIDE -            Don't show volume control in the Volume Mixer.
-//     AUDCLNT_SESSIONFLAGS_DISPLAY_HIDEWHENEXPIRED - Don't show volume control in the Volume Mixer after the session expires.
-// AUDCLNT_SYSFXFLAGS (these flags use low word 0x0000FFFF):
-//     none defined currently
-AUDCLNT_STREAMFLAGS_CROSSPROCESS             :: 0x00010000
-AUDCLNT_STREAMFLAGS_LOOPBACK                 :: 0x00020000
-AUDCLNT_STREAMFLAGS_EVENTCALLBACK            :: 0x00040000
-AUDCLNT_STREAMFLAGS_NOPERSIST                :: 0x00080000
-AUDCLNT_STREAMFLAGS_RATEADJUST               :: 0x00100000
-AUDCLNT_STREAMFLAGS_SRC_DEFAULT_QUALITY      :: 0x08000000
-AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM           :: 0x80000000
-AUDCLNT_SESSIONFLAGS_EXPIREWHENUNOWNED       :: 0x10000000
-AUDCLNT_SESSIONFLAGS_DISPLAY_HIDE            :: 0x20000000
-AUDCLNT_SESSIONFLAGS_DISPLAY_HIDEWHENEXPIRED :: 0x40000000
-
-//-------------------------------------------------------------------------
-// Description: AudioSession State.
-//      AudioSessionStateInactive - The session has no active audio streams.
-//      AudioSessionStateActive - The session has active audio streams.
-//      AudioSessionStateExpired - The session is dormant.
-AudioSessionState :: enum i32 {
-	Inactive = 0,
-	Active   = 1,
-	Expired  = 2,
-}