| /* | 
 |  *      MSACM library | 
 |  * | 
 |  *      Copyright 1998  Patrik Stridvall | 
 |  * | 
 |  * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA | 
 |  */ | 
 |  | 
 | #include <stdarg.h> | 
 |  | 
 | #include "windef.h" | 
 | #include "winbase.h" | 
 | #include "winerror.h" | 
 | #include "mmsystem.h" | 
 | #define NOBITMAP | 
 | #include "mmreg.h" | 
 | #include "msacm.h" | 
 | #include "msacmdrv.h" | 
 | #include "wineacm.h" | 
 | #include "wine/debug.h" | 
 |  | 
 | WINE_DEFAULT_DEBUG_CHANNEL(msacm); | 
 |  | 
 | /************************************************************************** | 
 |  *		DllEntryPoint (MSACM.3) | 
 |  * | 
 |  * MSACM DLL entry point | 
 |  * | 
 |  */ | 
 | BOOL WINAPI MSACM_DllEntryPoint(DWORD fdwReason, HINSTANCE16 hinstDLL, WORD ds, | 
 | 				WORD wHeapSize, DWORD dwReserved1, WORD wReserved2) | 
 | { | 
 |     return TRUE; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  *		acmGetVersion (MSACM.7) | 
 |  */ | 
 | DWORD WINAPI acmGetVersion16(void) | 
 | { | 
 |   return acmGetVersion(); | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  *		acmMetrics (MSACM.8) | 
 |  */ | 
 |  | 
 | MMRESULT16 WINAPI acmMetrics16( | 
 |   HACMOBJ16 hao, UINT16 uMetric, LPVOID pMetric) | 
 | { | 
 |   FIXME("(0x%04x, %d, %p): semi-stub\n", hao, uMetric, pMetric); | 
 |  | 
 |   if(!hao) return acmMetrics(0, uMetric, pMetric); | 
 |   SetLastError(ERROR_CALL_NOT_IMPLEMENTED); | 
 |   return MMSYSERR_ERROR; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  *		acmDriverEnum (MSACM.10) | 
 |  */ | 
 | MMRESULT16 WINAPI acmDriverEnum16( | 
 |   ACMDRIVERENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum) | 
 | { | 
 |   FIXME("(%p, %ld, %ld): stub\n", | 
 |     fnCallback, dwInstance, fdwEnum | 
 |   ); | 
 |   SetLastError(ERROR_CALL_NOT_IMPLEMENTED); | 
 |   return MMSYSERR_ERROR; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  * 		acmDriverDetails (MSACM.11) | 
 |  */ | 
 |  | 
 | MMRESULT16 WINAPI acmDriverDetails16( | 
 |   HACMDRIVERID16 hadid, LPACMDRIVERDETAILS16 padd, DWORD fdwDetails) | 
 | { | 
 |   FIXME("(0x%04x, %p, %ld): stub\n", hadid, padd, fdwDetails); | 
 |   SetLastError(ERROR_CALL_NOT_IMPLEMENTED); | 
 |   return MMSYSERR_ERROR; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  * 		acmDriverAdd (MSACM.12) | 
 |  */ | 
 | MMRESULT16 WINAPI acmDriverAdd16( | 
 |   LPHACMDRIVERID16 phadid, HINSTANCE16 hinstModule, | 
 |   LPARAM lParam, DWORD dwPriority, DWORD fdwAdd) | 
 | { | 
 |   FIXME("(%p, 0x%04x, %ld, %ld, %ld): stub\n", | 
 |     phadid, hinstModule, lParam, dwPriority, fdwAdd | 
 |   ); | 
 |   SetLastError(ERROR_CALL_NOT_IMPLEMENTED); | 
 |   return MMSYSERR_ERROR; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  * 		acmDriverRemove (MSACM.13) | 
 |  */ | 
 | MMRESULT16 WINAPI acmDriverRemove16( | 
 |   HACMDRIVERID16 hadid, DWORD fdwRemove) | 
 | { | 
 |   FIXME("(0x%04x, %ld): stub\n", hadid, fdwRemove); | 
 |   SetLastError(ERROR_CALL_NOT_IMPLEMENTED); | 
 |   return MMSYSERR_ERROR; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  * 		acmDriverOpen (MSACM.14) | 
 |  */ | 
 | MMRESULT16 WINAPI acmDriverOpen16( | 
 |   LPHACMDRIVER16 phad, HACMDRIVERID16 hadid, DWORD fdwOpen) | 
 | { | 
 |   FIXME("(%p, 0x%04x, %ld): stub\n", phad, hadid, fdwOpen); | 
 |   SetLastError(ERROR_CALL_NOT_IMPLEMENTED); | 
 |   return MMSYSERR_ERROR; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  * 		acmDriverClose (MSACM.15) | 
 |  */ | 
 | MMRESULT16 WINAPI acmDriverClose16( | 
 |   HACMDRIVER16 had, DWORD fdwClose) | 
 | { | 
 |   FIXME("(0x%04x, %ld): stub\n", had, fdwClose); | 
 |   SetLastError(ERROR_CALL_NOT_IMPLEMENTED); | 
 |   return MMSYSERR_ERROR; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  * 		acmDriverMessage (MSACM.16) | 
 |  */ | 
 | LRESULT WINAPI acmDriverMessage16( | 
 |   HACMDRIVER16 had, UINT16 uMsg, LPARAM lParam1, LPARAM lParam2) | 
 | { | 
 |   FIXME("(0x%04x, %d, %ld, %ld): stub\n", | 
 |     had, uMsg, lParam1, lParam2 | 
 |   ); | 
 |   SetLastError(ERROR_CALL_NOT_IMPLEMENTED); | 
 |   return 0; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  * 		acmDriverID (MSACM.17) | 
 |  */ | 
 | MMRESULT16 WINAPI acmDriverID16( | 
 |   HACMOBJ16 hao, LPHACMDRIVERID16 phadid, DWORD fdwDriverID) | 
 | { | 
 |   FIXME("(0x%04x, %p, %ld): stub\n", hao, phadid, fdwDriverID); | 
 |   SetLastError(ERROR_CALL_NOT_IMPLEMENTED); | 
 |   return MMSYSERR_ERROR; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  * 		acmDriverPriority (MSACM.18) | 
 |  */ | 
 | MMRESULT16 WINAPI acmDriverPriority16( | 
 |  HACMDRIVERID16 hadid, DWORD dwPriority, DWORD fdwPriority) | 
 | { | 
 |   FIXME("(0x%04x, %ld, %ld): stub\n", | 
 |     hadid, dwPriority, fdwPriority | 
 |   ); | 
 |   SetLastError(ERROR_CALL_NOT_IMPLEMENTED); | 
 |   return MMSYSERR_ERROR; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  * 		acmFormatTagDetails (MSACM.30) | 
 |  */ | 
 | MMRESULT16 WINAPI acmFormatTagDetails16( | 
 |   HACMDRIVER16 had, LPACMFORMATTAGDETAILS16 paftd, DWORD fdwDetails) | 
 | { | 
 |   FIXME("(0x%04x, %p, %ld): stub\n", had, paftd, fdwDetails); | 
 |   SetLastError(ERROR_CALL_NOT_IMPLEMENTED); | 
 |   return MMSYSERR_ERROR; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  * 		acmFormatTagEnum (MSACM.31) | 
 |  */ | 
 | MMRESULT16 WINAPI acmFormatTagEnum16( | 
 |   HACMDRIVER16 had, LPACMFORMATTAGDETAILS16 paftd, | 
 |   ACMFORMATTAGENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum) | 
 | { | 
 |   FIXME("(0x%04x, %p, %p, %ld, %ld): stub\n", | 
 |     had, paftd, fnCallback, dwInstance, fdwEnum | 
 |   ); | 
 |   SetLastError(ERROR_CALL_NOT_IMPLEMENTED); | 
 |   return MMSYSERR_ERROR; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  * 		acmFormatChoose (MSACM.40) | 
 |  */ | 
 | MMRESULT16 WINAPI acmFormatChoose16( | 
 |   LPACMFORMATCHOOSE16 pafmtc) | 
 | { | 
 |   FIXME("(%p): stub\n", pafmtc); | 
 |   SetLastError(ERROR_CALL_NOT_IMPLEMENTED); | 
 |   return MMSYSERR_ERROR; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  * 		acmFormatDetails (MSACM.41) | 
 |  */ | 
 | MMRESULT16 WINAPI acmFormatDetails16( | 
 |   HACMDRIVER16 had, LPACMFORMATDETAILS16 pafd, DWORD fdwDetails) | 
 | { | 
 |   FIXME("(0x%04x, %p, %ld): stub\n", had, pafd, fdwDetails); | 
 |   SetLastError(ERROR_CALL_NOT_IMPLEMENTED); | 
 |   return MMSYSERR_ERROR; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  * 		acmFormatEnum (MSACM.42) | 
 |  */ | 
 | MMRESULT16 WINAPI acmFormatEnum16( | 
 |   HACMDRIVER16 had, LPACMFORMATDETAILS16 pafd, | 
 |   ACMFORMATENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum) | 
 | { | 
 |   FIXME("(0x%04x, %p, %p, %ld, %ld): stub\n", | 
 |     had, pafd, fnCallback, dwInstance, fdwEnum | 
 |   ); | 
 |   SetLastError(ERROR_CALL_NOT_IMPLEMENTED); | 
 |   return MMSYSERR_ERROR; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  * 		acmFormatSuggest (MSACM.45) | 
 |  */ | 
 | MMRESULT16 WINAPI acmFormatSuggest16( | 
 |   HACMDRIVER16 had, LPWAVEFORMATEX pwfxSrc, | 
 |   LPWAVEFORMATEX pwfxDst, DWORD cbwfxDst, DWORD fdwSuggest) | 
 | { | 
 |   FIXME("(0x%04x, %p, %p, %ld, %ld): stub\n", | 
 |     had, pwfxSrc, pwfxDst, cbwfxDst, fdwSuggest | 
 |   ); | 
 |   SetLastError(ERROR_CALL_NOT_IMPLEMENTED); | 
 |   return MMSYSERR_ERROR; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  * 		acmFilterTagDetails (MSACM.50) | 
 |  */ | 
 | MMRESULT16 WINAPI acmFilterTagDetails16( | 
 |   HACMDRIVER16 had, LPACMFILTERTAGDETAILS16 paftd, DWORD fdwDetails) | 
 | { | 
 |   FIXME("(0x%04x, %p, %ld): stub\n", had, paftd, fdwDetails); | 
 |   SetLastError(ERROR_CALL_NOT_IMPLEMENTED); | 
 |   return MMSYSERR_ERROR; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  * 		acmFilterTagEnum (MSACM.51) | 
 |  */ | 
 | MMRESULT16 WINAPI acmFilterTagEnum16( | 
 |   HACMDRIVER16 had, LPACMFILTERTAGDETAILS16 paftd, | 
 |   ACMFILTERTAGENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum) | 
 | { | 
 |   FIXME("(0x%04x, %p, %p, %ld, %ld): stub\n", | 
 |     had, paftd, fnCallback, dwInstance, fdwEnum | 
 |   ); | 
 |   SetLastError(ERROR_CALL_NOT_IMPLEMENTED); | 
 |   return MMSYSERR_ERROR; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  * 		acmFilterChoose (MSACM.60) | 
 |  */ | 
 | MMRESULT16 WINAPI acmFilterChoose16( | 
 |   LPACMFILTERCHOOSE16 pafltrc) | 
 | { | 
 |   FIXME("(%p): stub\n", pafltrc); | 
 |   SetLastError(ERROR_CALL_NOT_IMPLEMENTED); | 
 |   return MMSYSERR_ERROR; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  * 		acmFilterDetails (MSACM.61) | 
 |  */ | 
 | MMRESULT16 WINAPI acmFilterDetails16( | 
 |   HACMDRIVER16 had, LPACMFILTERDETAILS16 pafd, DWORD fdwDetails) | 
 | { | 
 |   FIXME("(0x%04x, %p, %ld): stub\n", had, pafd, fdwDetails); | 
 |   SetLastError(ERROR_CALL_NOT_IMPLEMENTED); | 
 |   return MMSYSERR_ERROR; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  * 		acmFilterEnum (MSACM.62) | 
 |  */ | 
 | MMRESULT16 WINAPI acmFilterEnum16( | 
 |   HACMDRIVER16 had, LPACMFILTERDETAILS16 pafd, | 
 |   ACMFILTERENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum) | 
 | { | 
 |   FIXME("(0x%04x, %p, %p, %ld, %ld): stub\n", | 
 |     had, pafd, fnCallback, dwInstance, fdwEnum | 
 |   ); | 
 |   SetLastError(ERROR_CALL_NOT_IMPLEMENTED); | 
 |   return MMSYSERR_ERROR; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  * 		acmStreamOpen (MSACM.70) | 
 |  */ | 
 | MMRESULT16 WINAPI acmStreamOpen16( | 
 |   LPHACMSTREAM16 phas, HACMDRIVER16 had, | 
 |   LPWAVEFORMATEX pwfxSrc, LPWAVEFORMATEX pwfxDst, | 
 |   LPWAVEFILTER pwfltr, DWORD dwCallback, | 
 |   DWORD dwInstance, DWORD fdwOpen) | 
 | { | 
 |   FIXME("(%p, 0x%04x, %p, %p, %p, %ld, %ld, %ld): stub\n", | 
 |     phas, had, pwfxSrc, pwfxDst, pwfltr, | 
 |     dwCallback, dwInstance, fdwOpen | 
 |   ); | 
 |   SetLastError(ERROR_CALL_NOT_IMPLEMENTED); | 
 |   return MMSYSERR_ERROR; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  * 		acmStreamClose (MSACM.71) | 
 |  */ | 
 | MMRESULT16 WINAPI acmStreamClose16( | 
 |   HACMSTREAM16 has, DWORD fdwClose) | 
 | { | 
 |   FIXME("(0x%04x, %ld): stub\n", has, fdwClose); | 
 |   SetLastError(ERROR_CALL_NOT_IMPLEMENTED); | 
 |   return MMSYSERR_ERROR; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  * 		acmStreamSize (MSACM.72) | 
 |  */ | 
 | MMRESULT16 WINAPI acmStreamSize16( | 
 |   HACMSTREAM16 has, DWORD cbInput, | 
 |   LPDWORD pdwOutputBytes, DWORD fdwSize) | 
 | { | 
 |   FIXME("(0x%04x, %ld, %p, %ld): stub\n", | 
 |     has, cbInput, pdwOutputBytes, fdwSize | 
 |   ); | 
 |   SetLastError(ERROR_CALL_NOT_IMPLEMENTED); | 
 |   return MMSYSERR_ERROR; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  * 		acmStreamConvert (MSACM.75) | 
 |  */ | 
 | MMRESULT16 WINAPI acmStreamConvert16( | 
 |   HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwConvert) | 
 | { | 
 |   FIXME("(0x%04x, %p, %ld): stub\n", has, pash, fdwConvert); | 
 |   SetLastError(ERROR_CALL_NOT_IMPLEMENTED); | 
 |   return MMSYSERR_ERROR; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  * 		acmStreamReset (MSACM.76) | 
 |  */ | 
 | MMRESULT16 WINAPI acmStreamReset16( | 
 |   HACMSTREAM16 has, DWORD fdwReset) | 
 | { | 
 |   FIXME("(0x%04x, %ld): stub\n", has, fdwReset); | 
 |   SetLastError(ERROR_CALL_NOT_IMPLEMENTED); | 
 |   return MMSYSERR_ERROR; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  * 		acmStreamPrepareHeader (MSACM.77) | 
 |  */ | 
 | MMRESULT16 WINAPI acmStreamPrepareHeader16( | 
 |   HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwPrepare) | 
 | { | 
 |   FIXME("(0x%04x, %p, %ld): stub\n", has, pash, fdwPrepare); | 
 |   SetLastError(ERROR_CALL_NOT_IMPLEMENTED); | 
 |   return MMSYSERR_ERROR; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  * 		acmStreamUnprepareHeader (MSACM.78) | 
 |  */ | 
 | MMRESULT16 WINAPI acmStreamUnprepareHeader16( | 
 |   HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwUnprepare) | 
 | { | 
 |   FIXME("(0x%04x, %p, %ld): stub\n", | 
 |     has, pash, fdwUnprepare | 
 |   ); | 
 |   SetLastError(ERROR_CALL_NOT_IMPLEMENTED); | 
 |   return MMSYSERR_ERROR; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  *		ACMAPPLICATIONEXIT (MSACM.150) | 
 |  * FIXME | 
 |  *   No documentation found. | 
 |  */ | 
 |  | 
 | /*********************************************************************** | 
 |  *		ACMHUGEPAGELOCK (MSACM.175) | 
 |  *FIXME | 
 |  *   No documentation found. | 
 |  */ | 
 |  | 
 | /*********************************************************************** | 
 |  *		ACMHUGEPAGEUNLOCK (MSACM.176) | 
 |  * FIXME | 
 |  *   No documentation found. | 
 |  */ | 
 |  | 
 | /*********************************************************************** | 
 |  *		ACMOPENCONVERSION (MSACM.200) | 
 |  * FIXME | 
 |  *   No documentation found. | 
 |  */ | 
 |  | 
 | /*********************************************************************** | 
 |  *		ACMCLOSECONVERSION (MSACM.201) | 
 |  * FIXME | 
 |  *   No documentation found. | 
 |  */ | 
 |  | 
 | /*********************************************************************** | 
 |  *		ACMCONVERT (MSACM.202) | 
 |  * FIXME | 
 |  *   No documentation found. | 
 |  */ | 
 |  | 
 | /*********************************************************************** | 
 |  *		ACMCHOOSEFORMAT (MSACM.203) | 
 |  * FIXME | 
 |  *   No documentation found. | 
 |  */ |