// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0 > or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT >, at your option.
// All files in the project carrying such notice may not be copied, modified, or distributed
// except according to those terms.
//! DSound procedure declarations, constant definitions and macros
use shared::guiddef::{GUID, LPCGUID, LPGUID};
use shared::minwindef::{DWORD, LPDWORD, LPLONG, LPVOID};
use shared::windef::HWND;
use shared::winerror::{E_FAIL, S_OK};
use um::mmsystem::{LPCWAVEFORMATEX, LPWAVEFORMATEX};
use um::unknwnbase::{IUnknown, IUnknownVtbl, LPUNKNOWN};
use um::winnt::{HRESULT, LONG};
DEFINE_GUID!{CLSID_DirectSound,
0 x47d4d946,
0 x62e8,
0 x11cf,
0 x93,
0 xbc,
0 x44,
0 x45,
0 x53,
0 x54,
0 x00,
0 x00}
DEFINE_GUID!{CLSID_DirectSound8,
0 x3901cc3f,
0 x84b5,
0 x4fa4,
0 xba,
0 x35,
0 xaa,
0 x81,
0 x72,
0 xb8,
0 xa0,
0 x9b}
DEFINE_GUID!{CLSID_DirectSoundCapture,
0 xb0210780,
0 x89cd,
0 x11d0,
0 xaf,
0 x08,
0 x00,
0 xa0,
0 xc9,
0 x25,
0 xcd,
0 x16}
DEFINE_GUID!{CLSID_DirectSoundCapture8,
0 xe4bcac13,
0 x7f99,
0 x4908,
0 x9a,
0 x8e,
0 x74,
0 xe3,
0 xbf,
0 x24,
0 xb6,
0 xe1}
DEFINE_GUID!{CLSID_DirectSoundFullDuplex,
0 xfea4300c,
0 x7959,
0 x4147,
0 xb2,
0 x6a,
0 x23,
0 x77,
0 xb9,
0 xe7,
0 xa9,
0 x1d}
DEFINE_GUID!{DSDEVID_DefaultPlayback,
0 xdef00000,
0 x9c6d,
0 x47ed,
0 xaa,
0 xf1,
0 x4d,
0 xda,
0 x8f,
0 x2b,
0 x5c,
0 x03}
DEFINE_GUID!{DSDEVID_DefaultCapture,
0 xdef00001,
0 x9c6d,
0 x47ed,
0 xaa,
0 xf1,
0 x4d,
0 xda,
0 x8f,
0 x2b,
0 x5c,
0 x03}
DEFINE_GUID!{DSDEVID_DefaultVoicePlayback,
0 xdef00002,
0 x9c6d,
0 x47ed,
0 xaa,
0 xf1,
0 x4d,
0 xda,
0 x8f,
0 x2b,
0 x5c,
0 x03}
DEFINE_GUID!{DSDEVID_DefaultVoiceCapture,
0 xdef00003,
0 x9c6d,
0 x47ed,
0 xaa,
0 xf1,
0 x4d,
0 xda,
0 x8f,
0 x2b,
0 x5c,
0 x03}
STRUCT !{
struct DSCAPS {
dwSize: DWORD,
dwFlags: DWORD,
dwMinSecondarySampleRate: DWORD,
dwMaxSecondarySampleRate: DWORD,
dwPrimaryBuffers: DWORD,
dwMaxHwMixingAllBuffers: DWORD,
dwMaxHwMixingStaticBuffers: DWORD,
dwMaxHwMixingStreamingBuffers: DWORD,
dwFreeHwMixingAllBuffers: DWORD,
dwFreeHwMixingStaticBuffers: DWORD,
dwFreeHwMixingStreamingBuffers: DWORD,
dwMaxHw3DAllBuffers: DWORD,
dwMaxHw3DStaticBuffers: DWORD,
dwMaxHw3DStreamingBuffers: DWORD,
dwFreeHw3DAllBuffers: DWORD,
dwFreeHw3DStaticBuffers: DWORD,
dwFreeHw3DStreamingBuffers: DWORD,
dwTotalHwMemBytes: DWORD,
dwFreeHwMemBytes: DWORD,
dwMaxContigFreeHwMemBytes: DWORD,
dwUnlockTransferRateHwBuffers: DWORD,
dwPlayCpuOverheadSwBuffers: DWORD,
dwReserved1: DWORD,
dwReserved2: DWORD,
}}
pub type LPDSCAPS = *
mut DSCAPS;
STRUCT !{
struct DSBCAPS {
dwSize: DWORD,
dwFlags: DWORD,
dwBufferBytes: DWORD,
dwUnlockTransferRate: DWORD,
dwPlayCpuOverhead: DWORD,
}}
pub type LPDSBCAPS = *
mut DSBCAPS;
STRUCT !{
struct DSBUFFERDESC {
dwSize: DWORD,
dwFlags: DWORD,
dwBufferBytes: DWORD,
dwReserved: DWORD,
lpwfxFormat: LPWAVEFORMATEX,
guid3DAlgorithm: GUID,
}}
pub type LPCDSBUFFERDESC = *
const DSBUFFERDESC;
RIDL!{
#[ uuid(
0 x279afa85,
0 x4981,
0 x11ce,
0 xa5,
0 x21,
0 x00,
0 x20,
0 xaf,
0 x0b,
0 xe5,
0 x60)]
interface IDirectSoundBuffer(IDirectSoundBufferVtbl): IUnknown(IUnknownVtbl) {
fn GetCaps(
pDSBufferCaps: LPDSBCAPS,
) -> HRESULT,
fn GetCurrentPosition(
pdwCurrentPlayCursor: LPDWORD,
pdwCurrentWriteCursor: LPDWORD,
) -> HRESULT,
fn GetFormat(
pwfxFormat: LPWAVEFORMATEX,
dwSizeAllocated: DWORD,
pdwSizeWritten: LPDWORD,
) -> HRESULT,
fn GetVolume(
plVolume: LPLONG,
) -> HRESULT,
fn GetPan(
plPan: LPLONG,
) -> HRESULT,
fn GetFrequency(
pdwFrequency: LPDWORD,
) -> HRESULT,
fn GetStatus(
pdwStatus: LPDWORD,
) -> HRESULT,
fn Initialize(
pDirectSound: LPDIRECTSOUND,
pcDSBufferDesc: LPCDSBUFFERDESC,
) -> HRESULT,
fn Lock(
dwOffset: DWORD,
dwBytes: DWORD,
ppvAudioPtr1: *
mut LPVOID,
pdwAudioBytes1: LPDWORD,
ppvAudioPtr2: *
mut LPVOID,
pdwAudioBytes2: LPDWORD,
dwFlags: DWORD,
) -> HRESULT,
fn Play(
dwReserved1: DWORD,
dwPriority: DWORD,
dwFlags: DWORD,
) -> HRESULT,
fn SetCurrentPosition(
dwNewPosition: DWORD,
) -> HRESULT,
fn SetFormat(
pcfxFormat: LPCWAVEFORMATEX,
) -> HRESULT,
fn SetVolume(
lVolume: LONG,
) -> HRESULT,
fn SetPan(
lPan: LONG,
) -> HRESULT,
fn SetFrequency(
dwFrequency: DWORD,
) -> HRESULT,
fn Stop() -> HRESULT,
fn Unlock(
pvAudioPtr1: LPVOID,
dwAudioBytes1: DWORD,
pvAudioPtr2: LPVOID,
dwAudioBytes2: DWORD,
) -> HRESULT,
fn Restore() -> HRESULT,
}}
pub type LPDIRECTSOUNDBUFFER = *
mut IDirectSoundBuffer;
DEFINE_GUID!{IID_IReferenceClock,
0 x56a86897,
0 x0ad4,
0 x11ce,
0 xb0,
0 x3a,
0 x00,
0 x20,
0 xaf,
0 x0b,
0 xa7,
0 x70}
DEFINE_GUID!{IID_IDirectSound,
0 x279afa83,
0 x4981,
0 x11ce,
0 xa5,
0 x21,
0 x00,
0 x20,
0 xaf,
0 x0b,
0 xe5,
0 x60}
RIDL!{
#[ uuid(
0 x279afa83,
0 x4981,
0 x11ce,
0 xa5,
0 x21,
0 x00,
0 x20,
0 xaf,
0 x0b,
0 xe5,
0 x60)]
interface IDirectSound(IDirectSoundVtbl): IUnknown(IUnknownVtbl) {
fn CreateSoundBuffer(
pcDSBufferDesc: LPCDSBUFFERDESC,
ppDSBuffer: *
mut LPDIRECTSOUNDBUFFER,
pUnkOuter: LPUNKNOWN,
) -> HRESULT,
fn GetCaps(
pDSCaps: LPDSCAPS,
) -> HRESULT,
fn DuplicateSoundBuffer(
pDSBufferOriginal: LPDIRECTSOUNDBUFFER,
ppDSBufferDuplicate: *
mut LPDIRECTSOUNDBUFFER,
) -> HRESULT,
fn SetCooperativeLevel(
hWnd: HWND,
dwLevel: DWORD,
) -> HRESULT,
fn Compact() -> HRESULT,
fn GetSpeakerConfig(
pdwSpeakerConfig: LPDWORD,
) -> HRESULT,
fn SetSpeakerConfig(
dwSpeakerConfig: DWORD,
) -> HRESULT,
fn Initialize(
pcGuidDevice: LPCGUID,
) -> HRESULT,
}}
pub type LPDIRECTSOUND = *
mut IDirectSound;
DEFINE_GUID!{IID_IDirectSound8,
0 xc50a7e93,
0 xf395,
0 x4834,
0 x9e,
0 xf6,
0 x7f,
0 xa9,
0 x9d,
0 xe5,
0 x09,
0 x66}
DEFINE_GUID!{IID_IDirectSoundBuffer,
0 x279afa85,
0 x4981,
0 x11ce,
0 xa5,
0 x21,
0 x00,
0 x20,
0 xaf,
0 x0b,
0 xe5,
0 x60}
DEFINE_GUID!{IID_IDirectSoundBuffer8,
0 x6825a449,
0 x7524,
0 x4d82,
0 x92,
0 x0f,
0 x50,
0 xe3,
0 x6a,
0 xb3,
0 xab,
0 x1e}
DEFINE_GUID!{GUID_All_Objects,
0 xaa114de5,
0 xc262,
0 x4169,
0 xa1,
0 xc8,
0 x23,
0 xd6,
0 x98,
0 xcc,
0 x73,
0 xb5}
DEFINE_GUID!{IID_IDirectSound3DListener,
0 x279afa84,
0 x4981,
0 x11ce,
0 xa5,
0 x21,
0 x00,
0 x20,
0 xaf,
0 x0b,
0 xe5,
0 x60}
DEFINE_GUID!{IID_IDirectSound3DBuffer,
0 x279afa86,
0 x4981,
0 x11ce,
0 xa5,
0 x21,
0 x00,
0 x20,
0 xaf,
0 x0b,
0 xe5,
0 x60}
DEFINE_GUID!{IID_IDirectSoundCapture,
0 xb0210781,
0 x89cd,
0 x11d0,
0 xaf,
0 x08,
0 x00,
0 xa0,
0 xc9,
0 x25,
0 xcd,
0 x16}
DEFINE_GUID!{IID_IDirectSoundCaptureBuffer,
0 xb0210782,
0 x89cd,
0 x11d0,
0 xaf,
0 x08,
0 x00,
0 xa0,
0 xc9,
0 x25,
0 xcd,
0 x16}
DEFINE_GUID!{IID_IDirectSoundCaptureBuffer8,
0 x00990df4,
0 x0dbb,
0 x4872,
0 x83,
0 x3e,
0 x6d,
0 x30,
0 x3e,
0 x80,
0 xae,
0 xb6}
DEFINE_GUID!{IID_IDirectSoundNotify,
0 xb0210783,
0 x89cd,
0 x11d0,
0 xaf,
0 x08,
0 x00,
0 xa0,
0 xc9,
0 x25,
0 xcd,
0 x16}
DEFINE_GUID!{IID_IKsPropertySet,
0 x31efac30,
0 x515c,
0 x11d0,
0 xa9,
0 xaa,
0 x00,
0 xaa,
0 x00,
0 x61,
0 xbe,
0 x93}
DEFINE_GUID!{IID_IDirectSoundFXGargle,
0 xd616f352,
0 xd622,
0 x11ce,
0 xaa,
0 xc5,
0 x00,
0 x20,
0 xaf,
0 x0b,
0 x99,
0 xa3}
DEFINE_GUID!{IID_IDirectSoundFXChorus,
0 x880842e3,
0 x145f,
0 x43e6,
0 xa9,
0 x34,
0 xa7,
0 x18,
0 x06,
0 xe5,
0 x05,
0 x47}
DEFINE_GUID!{IID_IDirectSoundFXFlanger,
0 x903e9878,
0 x2c92,
0 x4072,
0 x9b,
0 x2c,
0 xea,
0 x68,
0 xf5,
0 x39,
0 x67,
0 x83}
DEFINE_GUID!{IID_IDirectSoundFXEcho,
0 x8bd28edf,
0 x50db,
0 x4e92,
0 xa2,
0 xbd,
0 x44,
0 x54,
0 x88,
0 xd1,
0 xed,
0 x42}
DEFINE_GUID!{IID_IDirectSoundFXDistortion,
0 x8ecf4326,
0 x455f,
0 x4d8b,
0 xbd,
0 xa9,
0 x8d,
0 x5d,
0 x3e,
0 x9e,
0 x3e,
0 x0b}
DEFINE_GUID!{IID_IDirectSoundFXCompressor,
0 x4bbd1154,
0 x62f6,
0 x4e2c,
0 xa1,
0 x5c,
0 xd3,
0 xb6,
0 xc4,
0 x17,
0 xf7,
0 xa0}
DEFINE_GUID!{IID_IDirectSoundFXParamEq,
0 xc03ca9fe,
0 xfe90,
0 x4204,
0 x80,
0 x78,
0 x82,
0 x33,
0 x4c,
0 xd1,
0 x77,
0 xda}
DEFINE_GUID!{IID_IDirectSoundFXI3DL2Reverb,
0 x4b166a6a,
0 x0d66,
0 x43f3,
0 x80,
0 xe3,
0 xee,
0 x62,
0 x80,
0 xde,
0 xe1,
0 xa4}
DEFINE_GUID!{IID_IDirectSoundFXWavesReverb,
0 x46858c3a,
0 x0dc6,
0 x45e3,
0 xb7,
0 x60,
0 xd4,
0 xee,
0 xf1,
0 x6c,
0 xb3,
0 x25}
DEFINE_GUID!{IID_IDirectSoundCaptureFXAec,
0 xad74143d,
0 x903d,
0 x4ab7,
0 x80,
0 x66,
0 x28,
0 xd3,
0 x63,
0 x03,
0 x6d,
0 x65}
DEFINE_GUID!{IID_IDirectSoundCaptureFXNoiseSuppress,
0 xed311e41,
0 xfbae,
0 x4175,
0 x96,
0 x25,
0 xcd,
0 x08,
0 x54,
0 xf6,
0 x93,
0 xca}
DEFINE_GUID!{IID_IDirectSoundFullDuplex,
0 xedcb4c7a,
0 xdaab,
0 x4216,
0 xa4,
0 x2e,
0 x6c,
0 x50,
0 x59,
0 x6d,
0 xdc,
0 x1d}
pub const DS_OK: HRESULT = S_OK;
pub const DSERR_GENERIC: HRESULT = E_FAIL;
pub const DSSCL_NORMAL: DWORD =
0 x00000001;
pub const DSSCL_PRIORITY: DWORD =
0 x00000002;
pub const DSSCL_EXCLUSIVE: DWORD =
0 x00000003;
pub const DSSCL_WRITEPRIMARY: DWORD =
0 x00000004;
pub const DSBCAPS_PRIMARYBUFFER: DWORD =
0 x00000001;
pub const DSBCAPS_STATIC: DWORD =
0 x00000002;
pub const DSBCAPS_LOCHARDWARE: DWORD =
0 x00000004;
pub const DSBCAPS_LOCSOFTWARE: DWORD =
0 x00000008;
pub const DSBCAPS_CTRL3D: DWORD =
0 x00000010;
pub const DSBCAPS_CTRLFREQUENCY: DWORD =
0 x00000020;
pub const DSBCAPS_CTRLPAN: DWORD =
0 x00000040;
pub const DSBCAPS_CTRLVOLUME: DWORD =
0 x00000080;
pub const DSBCAPS_CTRLPOSITIONNOTIFY: DWORD =
0 x00000100;
pub const DSBCAPS_CTRLFX: DWORD =
0 x00000200;
pub const DSBCAPS_STICKYFOCUS: DWORD =
0 x00004000;
pub const DSBCAPS_GLOBALFOCUS: DWORD =
0 x00008000;
pub const DSBCAPS_GETCURRENTPOSITION2: DWORD =
0 x00010000;
pub const DSBCAPS_MUTE3DATMAXDISTANCE: DWORD =
0 x00020000;
pub const DSBCAPS_LOCDEFER: DWORD =
0 x00040000;
pub const DSBCAPS_TRUEPLAYPOSITION: DWORD =
0 x00080000;
pub const DSBPLAY_LOOPING: DWORD =
0 x00000001;
pub const DSBPLAY_LOCHARDWARE: DWORD =
0 x00000002;
pub const DSBPLAY_LOCSOFTWARE: DWORD =
0 x00000004;
pub const DSBPLAY_TERMINATEBY_TIME: DWORD =
0 x00000008;
pub const DSBPLAY_TERMINATEBY_DISTANCE: DWORD =
0 x000000010;
pub const DSBPLAY_TERMINATEBY_PRIORITY: DWORD =
0 x000000020;
extern "system" {
pub fn DirectSoundCreate(
pcGuidDevice: LPCGUID,
ppDS: *
mut LPDIRECTSOUND,
pUnkOuter: LPUNKNOWN,
) -> HRESULT;
// pub fn DirectSoundEnumerateA(
// pDSEnumCallback: LPDSENUMCALLBACKA,
// pContext: LPVOID,
// ) -> HRESULT;
// pub fn DirectSoundEnumerateW(
// pDSEnumCallback: LPDSENUMCALLBACKW,
// pContext: LPVOID,
// ) -> HRESULT;
// pub fn DirectSoundCaptureCreate(
// pcGuidDevice: LPCGUID,
// ppDSC: *mut LPDIRECTSOUNDCAPTURE,
// pUnkOuter: LPUNKNOWN,
// ) -> HRESULT;
// pub fn DirectSoundCaptureEnumerateA(
// pDSEnumCallback: LPDSENUMCALLBACKA,
// pContext: LPVOID,
// ) -> HRESULT;
// pub fn DirectSoundCaptureEnumerateW(
// pDSEnumCallback: LPDSENUMCALLBACKW,
// pContext: LPVOID,
// ) -> HRESULT;
// pub fn DirectSoundCreate8(
// pcGuidDevice: LPCGUID,
// ppDS8: *mut LPDIRECTSOUND8,
// pUnkOuter: LPUNKNOWN,
// ) -> HRESULT;
// pub fn DirectSoundCaptureCreate8(
// pcGuidDevice: LPCGUID,
// ppDSC8: *mut LPDIRECTSOUNDCAPTURE8,
// pUnkOuter: LPUNKNOWN,
// ) -> HRESULT;
// pub fn DirectSoundFullDuplexCreate(
// pcGuidCaptureDevice: LPCGUID,
// pcGuidRenderDevice: LPCGUID,
// pcDSCBufferDesc: LPCDSCBUFFERDESC,
// pcDSBufferDesc: LPCDSBUFFERDESC,
// hWnd: HWND,
// dwLevel: DWORD,
// ppDSFD: *mut LPDIRECTSOUNDFULLDUPLEX,
// ppDSCBuffer8: *mut LPDIRECTSOUNDCAPTUREBUFFER8,
// ppDSBuffer8: *mut LPDIRECTSOUNDBUFFER8,
// pUnkOuter: LPUNKNOWN,
// ) -> HRESULT;
pub fn GetDeviceID(
pGuidSrc: LPCGUID,
pGuidDest: LPGUID,
) -> HRESULT;
}
DEFINE_GUID!{DS3DALG_NO_VIRTUALIZATION,
0 xc241333f,
0 x1c1b,
0 x11d2,
0 x94,
0 xf5,
0 x00,
0 xc0,
0 x4f,
0 xc2,
0 x8a,
0 xca}
DEFINE_GUID!{DS3DALG_HRTF_FULL,
0 xc2413340,
0 x1c1b,
0 x11d2,
0 x94,
0 xf5,
0 x00,
0 xc0,
0 x4f,
0 xc2,
0 x8a,
0 xca}
DEFINE_GUID!{DS3DALG_HRTF_LIGHT,
0 xc2413342,
0 x1c1b,
0 x11d2,
0 x94,
0 xf5,
0 x00,
0 xc0,
0 x4f,
0 xc2,
0 x8a,
0 xca}
DEFINE_GUID!{GUID_DSFX_STANDARD_GARGLE,
0 xdafd8210,
0 x5711,
0 x4b91,
0 x9f,
0 xe3,
0 xf7,
0 x5b,
0 x7a,
0 xe2,
0 x79,
0 xbf}
DEFINE_GUID!{GUID_DSFX_STANDARD_CHORUS,
0 xefe6629c,
0 x81f7,
0 x4281,
0 xbd,
0 x91,
0 xc9,
0 xd6,
0 x04,
0 xa9,
0 x5a,
0 xf6}
DEFINE_GUID!{GUID_DSFX_STANDARD_FLANGER,
0 xefca3d92,
0 xdfd8,
0 x4672,
0 xa6,
0 x03,
0 x74,
0 x20,
0 x89,
0 x4b,
0 xad,
0 x98}
DEFINE_GUID!{GUID_DSFX_STANDARD_ECHO,
0 xef3e932c,
0 xd40b,
0 x4f51,
0 x8c,
0 xcf,
0 x3f,
0 x98,
0 xf1,
0 xb2,
0 x9d,
0 x5d}
DEFINE_GUID!{GUID_DSFX_STANDARD_DISTORTION,
0 xef114c90,
0 xcd1d,
0 x484e,
0 x96,
0 xe5,
0 x09,
0 xcf,
0 xaf,
0 x91,
0 x2a,
0 x21}
DEFINE_GUID!{GUID_DSFX_STANDARD_COMPRESSOR,
0 xef011f79,
0 x4000,
0 x406d,
0 x87,
0 xaf,
0 xbf,
0 xfb,
0 x3f,
0 xc3,
0 x9d,
0 x57}
DEFINE_GUID!{GUID_DSFX_STANDARD_PARAMEQ,
0 x120ced89,
0 x3bf4,
0 x4173,
0 xa1,
0 x32,
0 x3c,
0 xb4,
0 x06,
0 xcf,
0 x32,
0 x31}
DEFINE_GUID!{GUID_DSFX_STANDARD_I3DL2REVERB,
0 xef985e71,
0 xd5c7,
0 x42d4,
0 xba,
0 x4d,
0 x2d,
0 x07,
0 x3e,
0 x2e,
0 x96,
0 xf4}
DEFINE_GUID!{GUID_DSFX_WAVES_REVERB,
0 x87fc0268,
0 x9a55,
0 x4360,
0 x95,
0 xaa,
0 x00,
0 x4a,
0 x1d,
0 x9d,
0 xe2,
0 x6c}
DEFINE_GUID!{GUID_DSCFX_CLASS_AEC,
0 xbf963d80,
0 xc559,
0 x11d0,
0 x8a,
0 x2b,
0 x00,
0 xa0,
0 xc9,
0 x25,
0 x5a,
0 xc1}
DEFINE_GUID!{GUID_DSCFX_MS_AEC,
0 xcdebb919,
0 x379a,
0 x488a,
0 x87,
0 x65,
0 xf5,
0 x3c,
0 xfd,
0 x36,
0 xde,
0 x40}
DEFINE_GUID!{GUID_DSCFX_SYSTEM_AEC,
0 x1c22c56d,
0 x9879,
0 x4f5b,
0 xa3,
0 x89,
0 x27,
0 x99,
0 x6d,
0 xdc,
0 x28,
0 x10}
DEFINE_GUID!{GUID_DSCFX_CLASS_NS,
0 xe07f903f,
0 x62fd,
0 x4e60,
0 x8c,
0 xdd,
0 xde,
0 xa7,
0 x23,
0 x66,
0 x65,
0 xb5}
DEFINE_GUID!{GUID_DSCFX_MS_NS,
0 x11c5c73b,
0 x66e9,
0 x4ba1,
0 xa0,
0 xba,
0 xe8,
0 x14,
0 xc6,
0 xee,
0 xd9,
0 x2d}
DEFINE_GUID!{GUID_DSCFX_SYSTEM_NS,
0 x5ab0882e,
0 x7274,
0 x4516,
0 x87,
0 x7d,
0 x4e,
0 xee,
0 x99,
0 xba,
0 x4f,
0 xd0}
Messung V0.5 in Prozent C=97 H=100 G=98
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-06-18)
¤
*© Formatika GbR, Deutschland