2 * PROJECT: ReactOS Sound System "MME Buddy" Library
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: lib/drivers/sound/mmebuddy/header.c
6 * PURPOSE: Wave header preparation routines
8 * PROGRAMMERS: Andrew Greenwood (silverblade@reactos.org)
19 IN PSOUND_DEVICE_INSTANCE SoundDeviceInstance
,
23 PSOUND_DEVICE SoundDevice
;
24 PMMFUNCTION_TABLE FunctionTable
;
26 VALIDATE_MMSYS_PARAMETER( IsValidSoundDeviceInstance(SoundDeviceInstance
) );
27 VALIDATE_MMSYS_PARAMETER( Header
);
29 SND_TRACE(L
"Preparing wave header\n");
31 Result
= GetSoundDeviceFromInstance(SoundDeviceInstance
, &SoundDevice
);
32 if ( ! MMSUCCESS(Result
) )
33 return TranslateInternalMmResult(Result
);
35 Result
= GetSoundDeviceFunctionTable(SoundDevice
, &FunctionTable
);
36 if ( ! MMSUCCESS(Result
) )
37 return TranslateInternalMmResult(Result
);
39 if ( ! FunctionTable
->PrepareWaveHeader
)
40 return MMSYSERR_NOTSUPPORTED
;
42 return FunctionTable
->PrepareWaveHeader(SoundDeviceInstance
, Header
);
47 IN PSOUND_DEVICE_INSTANCE SoundDeviceInstance
,
51 PSOUND_DEVICE SoundDevice
;
52 PMMFUNCTION_TABLE FunctionTable
;
54 VALIDATE_MMSYS_PARAMETER( IsValidSoundDeviceInstance(SoundDeviceInstance
) );
55 VALIDATE_MMSYS_PARAMETER( Header
);
57 SND_TRACE(L
"Un-preparing wave header\n");
59 Result
= GetSoundDeviceFromInstance(SoundDeviceInstance
, &SoundDevice
);
60 if ( ! MMSUCCESS(Result
) )
61 return TranslateInternalMmResult(Result
);
63 Result
= GetSoundDeviceFunctionTable(SoundDevice
, &FunctionTable
);
64 if ( ! MMSUCCESS(Result
) )
65 return TranslateInternalMmResult(Result
);
67 if ( ! FunctionTable
->UnprepareWaveHeader
)
68 return MMSYSERR_NOTSUPPORTED
;
70 return FunctionTable
->UnprepareWaveHeader(SoundDeviceInstance
, Header
);
75 IN PSOUND_DEVICE_INSTANCE SoundDeviceInstance
,
79 PSOUND_DEVICE SoundDevice
;
80 PMMFUNCTION_TABLE FunctionTable
;
82 VALIDATE_MMSYS_PARAMETER( IsValidSoundDeviceInstance(SoundDeviceInstance
) );
83 VALIDATE_MMSYS_PARAMETER( Header
);
85 SND_TRACE(L
"Submitting wave header\n");
87 Result
= GetSoundDeviceFromInstance(SoundDeviceInstance
, &SoundDevice
);
88 if ( ! MMSUCCESS(Result
) )
89 return TranslateInternalMmResult(Result
);
91 Result
= GetSoundDeviceFunctionTable(SoundDevice
, &FunctionTable
);
92 if ( ! MMSUCCESS(Result
) )
93 return TranslateInternalMmResult(Result
);
95 if ( ! FunctionTable
->SubmitWaveHeader
)
96 return MMSYSERR_NOTSUPPORTED
;
98 return FunctionTable
->SubmitWaveHeader(SoundDeviceInstance
, Header
);