Implemented most of '*Format*' API.
Improved internal object and messages handling.
Started some '*Filter*' functions.
Fixed standard headers for Winelib.
Fixed acmMetrics.
diff --git a/dlls/msacm/filter.c b/dlls/msacm/filter.c
index e12e194..fc64de0 100644
--- a/dlls/msacm/filter.c
+++ b/dlls/msacm/filter.c
@@ -1,3 +1,5 @@
+/* -*- tab-width: 8; c-basic-offset: 4 -*- */
+
/*
* MSACM32 library
*
@@ -9,148 +11,162 @@
#include "mmsystem.h"
#include "msacm.h"
#include "msacmdrv.h"
+#include "wineacm.h"
#include "debugtools.h"
-DEFAULT_DEBUG_CHANNEL(msacm)
+DEFAULT_DEBUG_CHANNEL(msacm);
/***********************************************************************
* acmFilterChooseA (MSACM32.13)
*/
-MMRESULT WINAPI acmFilterChooseA(
- PACMFILTERCHOOSEA pafltrc)
+MMRESULT WINAPI acmFilterChooseA(PACMFILTERCHOOSEA pafltrc)
{
- FIXME("(%p): stub\n", pafltrc);
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return MMSYSERR_ERROR;
+ FIXME("(%p): stub\n", pafltrc);
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return MMSYSERR_ERROR;
}
/***********************************************************************
* acmFilterChooseW (MSACM32.14)
*/
-MMRESULT WINAPI acmFilterChooseW(
- PACMFILTERCHOOSEW pafltrc)
+MMRESULT WINAPI acmFilterChooseW(PACMFILTERCHOOSEW pafltrc)
{
- FIXME("(%p): stub\n", pafltrc);
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return MMSYSERR_ERROR;
+ FIXME("(%p): stub\n", pafltrc);
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return MMSYSERR_ERROR;
}
/***********************************************************************
* acmFilterDetailsA (MSACM32.15)
*/
-MMRESULT WINAPI acmFilterDetailsA(
- HACMDRIVER had, PACMFILTERDETAILSA pafd, DWORD fdwDetails)
+MMRESULT WINAPI acmFilterDetailsA(HACMDRIVER had, PACMFILTERDETAILSA pafd,
+ DWORD fdwDetails)
{
- if(fdwDetails & ~(ACM_FILTERDETAILSF_FILTER))
- return MMSYSERR_INVALFLAG;
+ ACMFILTERDETAILSW afdw;
+ MMRESULT mmr;
- /* FIXME
- * How does the driver know if the ANSI or
- * the UNICODE variant of PACMFILTERDETAILS is used?
- * It might check cbStruct or does it only accept ANSI.
- */
- return (MMRESULT) acmDriverMessage(
- had, ACMDM_FILTER_DETAILS,
- (LPARAM) pafd, (LPARAM) fdwDetails
- );
+ memset(&afdw, 0, sizeof(afdw));
+ afdw.cbStruct = sizeof(afdw);
+ afdw.dwFilterIndex = pafd->dwFilterIndex;
+ afdw.dwFilterTag = pafd->dwFilterTag;
+ afdw.pwfltr = pafd->pwfltr;
+ afdw.cbwfltr = pafd->cbwfltr;
+
+ mmr = acmFilterDetailsW(had, &afdw, fdwDetails);
+ if (mmr == MMSYSERR_NOERROR) {
+ pafd->dwFilterTag = afdw.dwFilterTag;
+ pafd->fdwSupport = afdw.fdwSupport;
+ lstrcpyWtoA(pafd->szFilter, afdw.szFilter);
+ }
+ return mmr;
}
/***********************************************************************
* acmFilterDetailsW (MSACM32.16)
*/
-MMRESULT WINAPI acmFilterDetailsW(
- HACMDRIVER had, PACMFILTERDETAILSW pafd, DWORD fdwDetails)
+MMRESULT WINAPI acmFilterDetailsW(HACMDRIVER had, PACMFILTERDETAILSW pafd,
+ DWORD fdwDetails)
{
- FIXME("(0x%08x, %p, %ld): stub\n", had, pafd, fdwDetails);
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return MMSYSERR_ERROR;
+ TRACE("(0x%08x, %p, %ld)\n", had, pafd, fdwDetails);
+
+ if (fdwDetails & ~(ACM_FILTERDETAILSF_FILTER))
+ return MMSYSERR_INVALFLAG;
+
+ return MSACM_Message(had, ACMDM_FILTER_DETAILS,
+ (LPARAM) pafd, (LPARAM) fdwDetails);
}
/***********************************************************************
* acmFilterEnumA (MSACM32.17)
*/
-MMRESULT WINAPI acmFilterEnumA(
- HACMDRIVER had, PACMFILTERDETAILSA pafd,
- ACMFILTERENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum)
+MMRESULT WINAPI acmFilterEnumA(HACMDRIVER had, PACMFILTERDETAILSA pafd,
+ ACMFILTERENUMCBA fnCallback, DWORD dwInstance,
+ DWORD fdwEnum)
{
- FIXME("(0x%08x, %p, %p, %ld, %ld): stub\n",
- had, pafd, fnCallback, dwInstance, fdwEnum
- );
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return MMSYSERR_ERROR;
+ FIXME("(0x%08x, %p, %p, %ld, %ld): stub\n",
+ had, pafd, fnCallback, dwInstance, fdwEnum);
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return MMSYSERR_ERROR;
}
/***********************************************************************
* acmFilterEnumW (MSACM32.18)
*/
-MMRESULT WINAPI acmFilterEnumW(
- HACMDRIVER had, PACMFILTERDETAILSW pafd,
- ACMFILTERENUMCBW fnCallback, DWORD dwInstance, DWORD fdwEnum)
+MMRESULT WINAPI acmFilterEnumW(HACMDRIVER had, PACMFILTERDETAILSW pafd,
+ ACMFILTERENUMCBW fnCallback, DWORD dwInstance,
+ DWORD fdwEnum)
{
- FIXME("(0x%08x, %p, %p, %ld, %ld): stub\n",
- had, pafd, fnCallback, dwInstance, fdwEnum
- );
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return MMSYSERR_ERROR;
+ FIXME("(0x%08x, %p, %p, %ld, %ld): stub\n",
+ had, pafd, fnCallback, dwInstance, fdwEnum);
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return MMSYSERR_ERROR;
}
/***********************************************************************
* acmFilterTagDetailsA (MSACM32.19)
*/
-MMRESULT WINAPI acmFilterTagDetailsA(
- HACMDRIVER had, PACMFILTERTAGDETAILSA paftd, DWORD fdwDetails)
+MMRESULT WINAPI acmFilterTagDetailsA(HACMDRIVER had, PACMFILTERTAGDETAILSA paftda,
+ DWORD fdwDetails)
{
- if(fdwDetails &
- ~(ACM_FILTERTAGDETAILSF_FILTERTAG|
- ACM_FILTERTAGDETAILSF_LARGESTSIZE))
- return MMSYSERR_INVALFLAG;
+ ACMFILTERTAGDETAILSW aftdw;
+ MMRESULT mmr;
- /* FIXME
- * How does the driver know if the ANSI or
- * the UNICODE variant of PACMFILTERTAGDETAILS is used?
- * It might check cbStruct or does it only accept ANSI.
- */
- return (MMRESULT) acmDriverMessage(
- had, ACMDM_FILTERTAG_DETAILS,
- (LPARAM) paftd, (LPARAM) fdwDetails
- );
+ memset(&aftdw, 0, sizeof(aftdw));
+ aftdw.cbStruct = sizeof(aftdw);
+ aftdw.dwFilterTagIndex = paftda->dwFilterTagIndex;
+ aftdw.dwFilterTag = paftda->dwFilterTag;
+
+ mmr = acmFilterTagDetailsW(had, &aftdw, fdwDetails);
+ if (mmr == MMSYSERR_NOERROR) {
+ paftda->dwFilterTag = aftdw.dwFilterTag;
+ paftda->dwFilterTagIndex = aftdw.dwFilterTagIndex;
+ paftda->cbFilterSize = aftdw.cbFilterSize;
+ paftda->fdwSupport = aftdw.fdwSupport;
+ paftda->cStandardFilters = aftdw.cStandardFilters;
+ lstrcpyWtoA(paftda->szFilterTag, aftdw.szFilterTag);
+ }
+ return mmr;
}
/***********************************************************************
* acmFilterTagDetailsW (MSACM32.20)
*/
-MMRESULT WINAPI acmFilterTagDetailsW(
- HACMDRIVER had, PACMFILTERTAGDETAILSW paftd, DWORD fdwDetails)
+MMRESULT WINAPI acmFilterTagDetailsW(HACMDRIVER had, PACMFILTERTAGDETAILSW paftd,
+ DWORD fdwDetails)
{
- FIXME("(0x%08x, %p, %ld): stub\n", had, paftd, fdwDetails);
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return MMSYSERR_ERROR;
+ TRACE("(0x%08x, %p, %ld)\n", had, paftd, fdwDetails);
+
+ if (fdwDetails &
+ ~(ACM_FILTERTAGDETAILSF_FILTERTAG|
+ ACM_FILTERTAGDETAILSF_LARGESTSIZE))
+ return MMSYSERR_INVALFLAG;
+
+ return MSACM_Message(had, ACMDM_FILTERTAG_DETAILS,
+ (LPARAM)paftd, (LPARAM)fdwDetails);
}
/***********************************************************************
* acmFilterTagEnumA (MSACM32.21)
*/
-MMRESULT WINAPI acmFilterTagEnumA(
- HACMDRIVER had, PACMFILTERTAGDETAILSA paftd,
- ACMFILTERTAGENUMCBA fnCallback, DWORD dwInstance, DWORD fdwEnum)
+MMRESULT WINAPI acmFilterTagEnumA(HACMDRIVER had, PACMFILTERTAGDETAILSA paftd,
+ ACMFILTERTAGENUMCBA fnCallback, DWORD dwInstance,
+ DWORD fdwEnum)
{
- FIXME("(0x%08x, %p, %p, %ld, %ld): stub\n",
- had, paftd, fnCallback, dwInstance, fdwEnum
- );
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return MMSYSERR_ERROR;
+ FIXME("(0x%08x, %p, %p, %ld, %ld): stub\n",
+ had, paftd, fnCallback, dwInstance, fdwEnum);
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return MMSYSERR_ERROR;
}
/***********************************************************************
* acmFilterTagEnumW (MSACM32.22)
*/
-MMRESULT WINAPI acmFilterTagEnumW(
- HACMDRIVER had, PACMFILTERTAGDETAILSW paftd,
- ACMFILTERTAGENUMCBW fnCallback, DWORD dwInstance, DWORD fdwEnum)
+MMRESULT WINAPI acmFilterTagEnumW(HACMDRIVER had, PACMFILTERTAGDETAILSW paftd,
+ ACMFILTERTAGENUMCBW fnCallback, DWORD dwInstance,
+ DWORD fdwEnum)
{
- FIXME("(0x%08x, %p, %p, %ld, %ld): stub\n",
- had, paftd, fnCallback, dwInstance, fdwEnum
- );
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return MMSYSERR_ERROR;
+ FIXME("(0x%08x, %p, %p, %ld, %ld): stub\n",
+ had, paftd, fnCallback, dwInstance, fdwEnum);
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return MMSYSERR_ERROR;
}