[MSACM32] Sync with Wine Staging 4.0. CORE-15682

This commit is contained in:
Amine Khaldi 2019-01-26 13:18:13 +01:00
parent 127d443593
commit 3ea8528909
6 changed files with 30 additions and 31 deletions

View file

@ -1,4 +1,5 @@
add_definitions(-D__WINESRC__)
include_directories(${REACTOS_SOURCE_DIR}/sdk/include/reactos/wine) include_directories(${REACTOS_SOURCE_DIR}/sdk/include/reactos/wine)
spec2def(msacm32.dll msacm32.spec ADD_IMPORTLIB) spec2def(msacm32.dll msacm32.spec ADD_IMPORTLIB)

View file

@ -361,8 +361,8 @@ MMRESULT WINAPI acmFilterTagDetailsW(HACMDRIVER had, PACMFILTERTAGDETAILSW paftd
if (mmr == MMSYSERR_NOERROR && if (mmr == MMSYSERR_NOERROR &&
paftd->dwFilterTag == WAVE_FORMAT_PCM && paftd->szFilterTag[0] == 0) paftd->dwFilterTag == WAVE_FORMAT_PCM && paftd->szFilterTag[0] == 0)
MultiByteToWideChar( CP_ACP, 0, "PCM", -1, paftd->szFilterTag, MultiByteToWideChar(CP_ACP, 0, "PCM", -1, paftd->szFilterTag,
sizeof(paftd->szFilterTag)/sizeof(WCHAR) ); ARRAY_SIZE(paftd->szFilterTag));
return mmr; return mmr;
} }

View file

@ -503,9 +503,9 @@ MMRESULT WINAPI acmFormatDetailsW(HACMDRIVER had, PACMFORMATDETAILSW pafd, DWORD
wsprintfW(pafd->szFormat + lstrlenW(pafd->szFormat), fmt2, wsprintfW(pafd->szFormat + lstrlenW(pafd->szFormat), fmt2,
pafd->pwfx->wBitsPerSample); pafd->pwfx->wBitsPerSample);
} }
MultiByteToWideChar( CP_ACP, 0, (pafd->pwfx->nChannels == 1) ? "; Mono" : "; Stereo", -1, MultiByteToWideChar(CP_ACP, 0, (pafd->pwfx->nChannels == 1) ? "; Mono" : "; Stereo", -1,
pafd->szFormat + strlenW(pafd->szFormat), pafd->szFormat + strlenW(pafd->szFormat),
sizeof(pafd->szFormat)/sizeof(WCHAR) - strlenW(pafd->szFormat) ); ARRAY_SIZE(pafd->szFormat) - strlenW(pafd->szFormat));
} }
TRACE("=> %d\n", mmr); TRACE("=> %d\n", mmr);
@ -929,8 +929,8 @@ MMRESULT WINAPI acmFormatTagDetailsW(HACMDRIVER had, PACMFORMATTAGDETAILSW paftd
if (mmr == MMSYSERR_NOERROR && if (mmr == MMSYSERR_NOERROR &&
paftd->dwFormatTag == WAVE_FORMAT_PCM && paftd->szFormatTag[0] == 0) paftd->dwFormatTag == WAVE_FORMAT_PCM && paftd->szFormatTag[0] == 0)
MultiByteToWideChar( CP_ACP, 0, "PCM", -1, paftd->szFormatTag, MultiByteToWideChar(CP_ACP, 0, "PCM", -1, paftd->szFormatTag,
sizeof(paftd->szFormatTag)/sizeof(WCHAR) ); ARRAY_SIZE(paftd->szFormatTag));
return mmr; return mmr;
} }
@ -1036,8 +1036,8 @@ MMRESULT WINAPI acmFormatTagEnumW(HACMDRIVER had, PACMFORMATTAGDETAILSW paftd,
(LPARAM)paftd, ACM_FORMATTAGDETAILSF_INDEX) == MMSYSERR_NOERROR) { (LPARAM)paftd, ACM_FORMATTAGDETAILSF_INDEX) == MMSYSERR_NOERROR) {
if (paftd->dwFormatTag == WAVE_FORMAT_PCM) { if (paftd->dwFormatTag == WAVE_FORMAT_PCM) {
if (paftd->szFormatTag[0] == 0) if (paftd->szFormatTag[0] == 0)
MultiByteToWideChar( CP_ACP, 0, "PCM", -1, paftd->szFormatTag, MultiByteToWideChar(CP_ACP, 0, "PCM", -1, paftd->szFormatTag,
sizeof(paftd->szFormatTag)/sizeof(WCHAR) ); ARRAY_SIZE(paftd->szFormatTag));
/* (WS) I'm preserving this PCM hack since it seems to be /* (WS) I'm preserving this PCM hack since it seems to be
* correct. Please notice this block was borrowed from * correct. Please notice this block was borrowed from
* below. * below.
@ -1062,8 +1062,8 @@ MMRESULT WINAPI acmFormatTagEnumW(HACMDRIVER had, PACMFORMATTAGDETAILSW paftd,
(LPARAM)paftd, ACM_FORMATTAGDETAILSF_INDEX) == MMSYSERR_NOERROR) { (LPARAM)paftd, ACM_FORMATTAGDETAILSF_INDEX) == MMSYSERR_NOERROR) {
if (paftd->dwFormatTag == WAVE_FORMAT_PCM) { if (paftd->dwFormatTag == WAVE_FORMAT_PCM) {
if (paftd->szFormatTag[0] == 0) if (paftd->szFormatTag[0] == 0)
MultiByteToWideChar( CP_ACP, 0, "PCM", -1, paftd->szFormatTag, MultiByteToWideChar(CP_ACP, 0, "PCM", -1, paftd->szFormatTag,
sizeof(paftd->szFormatTag)/sizeof(WCHAR) ); ARRAY_SIZE(paftd->szFormatTag));
/* FIXME (EPP): I'm not sure this is the correct /* FIXME (EPP): I'm not sure this is the correct
* algorithm (should make more sense to apply the same * algorithm (should make more sense to apply the same
* for all already loaded formats, but this will do * for all already loaded formats, but this will do

View file

@ -72,7 +72,7 @@ PWINE_ACMDRIVERID MSACM_RegisterDriverFromRegistry(LPCWSTR pszRegEntry)
/* The requested registry entry must have the format msacm.XXXXX in order to /* The requested registry entry must have the format msacm.XXXXX in order to
be recognized in any future sessions of msacm be recognized in any future sessions of msacm
*/ */
if (0 == strncmpiW(pszRegEntry, msacmW, sizeof(msacmW)/sizeof(WCHAR))) { if (0 == strncmpiW(pszRegEntry, msacmW, ARRAY_SIZE(msacmW))) {
lRet = RegOpenKeyExW(HKEY_LOCAL_MACHINE, drvkey, 0, KEY_QUERY_VALUE, &hKey); lRet = RegOpenKeyExW(HKEY_LOCAL_MACHINE, drvkey, 0, KEY_QUERY_VALUE, &hKey);
if (lRet != ERROR_SUCCESS) { if (lRet != ERROR_SUCCESS) {
WARN("unable to open registry key - 0x%08x\n", lRet); WARN("unable to open registry key - 0x%08x\n", lRet);
@ -373,31 +373,31 @@ void MSACM_RegisterAllDrivers(void)
if (lRet == ERROR_SUCCESS) { if (lRet == ERROR_SUCCESS) {
RegQueryInfoKeyW( hKey, 0, 0, 0, &cnt, 0, 0, 0, 0, 0, 0, 0); RegQueryInfoKeyW( hKey, 0, 0, 0, &cnt, 0, 0, 0, 0, 0, 0, 0);
for (i = 0; i < cnt; i++) { for (i = 0; i < cnt; i++) {
bufLen = sizeof(buf) / sizeof(buf[0]); bufLen = ARRAY_SIZE(buf);
lRet = RegEnumKeyExW(hKey, i, buf, &bufLen, 0, 0, 0, &lastWrite); lRet = RegEnumKeyExW(hKey, i, buf, &bufLen, 0, 0, 0, &lastWrite);
if (lRet != ERROR_SUCCESS) continue; if (lRet != ERROR_SUCCESS) continue;
if (strncmpiW(buf, msacmW, sizeof(msacmW)/sizeof(msacmW[0]))) continue; if (strncmpiW(buf, msacmW, ARRAY_SIZE(msacmW))) continue;
if (!(name = strchrW(buf, '='))) continue; if (!(name = strchrW(buf, '='))) continue;
*name = 0; *name = 0;
MSACM_RegisterDriver(buf, name + 1, 0); MSACM_RegisterDriver(buf, name + 1, 0);
} }
i = 0; i = 0;
cnt = sizeof(valname) / sizeof(*valname); cnt = ARRAY_SIZE(valname);
bufLen = sizeof(buf); bufLen = sizeof(buf);
while(RegEnumValueW(hKey, i, valname, &cnt, 0, while(RegEnumValueW(hKey, i, valname, &cnt, 0,
&type, (BYTE*)buf, &bufLen) == ERROR_SUCCESS){ &type, (BYTE*)buf, &bufLen) == ERROR_SUCCESS){
if(!strncmpiW(valname, msacmW, sizeof(msacmW) / sizeof(*msacmW))) if (!strncmpiW(valname, msacmW, ARRAY_SIZE(msacmW)))
MSACM_RegisterDriver(valname, buf, 0); MSACM_RegisterDriver(valname, buf, 0);
++i; ++i;
} }
RegCloseKey( hKey ); RegCloseKey( hKey );
} }
if (GetPrivateProfileSectionW(drv32, buf, sizeof(buf)/sizeof(buf[0]), sys)) if (GetPrivateProfileSectionW(drv32, buf, ARRAY_SIZE(buf), sys))
{ {
for(s = buf; *s; s += strlenW(s) + 1) for(s = buf; *s; s += strlenW(s) + 1)
{ {
if (strncmpiW(s, msacmW, sizeof(msacmW)/sizeof(msacmW[0]))) continue; if (strncmpiW(s, msacmW, ARRAY_SIZE(msacmW))) continue;
if (!(name = strchrW(s, '='))) continue; if (!(name = strchrW(s, '='))) continue;
*name = 0; *name = 0;
MSACM_RegisterDriver(s, name + 1, 0); MSACM_RegisterDriver(s, name + 1, 0);

View file

@ -71,7 +71,6 @@ static DWORD PCM_drvClose(DWORD dwDevID)
return 1; return 1;
} }
#define NUM_PCM_FORMATS (sizeof(PCM_Formats) / sizeof(PCM_Formats[0]))
#define NUM_OF(a,b) ((a)/(b)) #define NUM_OF(a,b) ((a)/(b))
/* flags for fdwDriver */ /* flags for fdwDriver */
@ -114,7 +113,7 @@ static DWORD PCM_GetFormatIndex(LPWAVEFORMATEX wfx)
unsigned int i; unsigned int i;
TRACE("(%p)\n", wfx); TRACE("(%p)\n", wfx);
for (i = 0; i < NUM_PCM_FORMATS; i++) { for (i = 0; i < ARRAY_SIZE(PCM_Formats); i++) {
if (wfx->nChannels == PCM_Formats[i].nChannels && if (wfx->nChannels == PCM_Formats[i].nChannels &&
wfx->nSamplesPerSec == PCM_Formats[i].rate && wfx->nSamplesPerSec == PCM_Formats[i].rate &&
wfx->wBitsPerSample == PCM_Formats[i].nBits) wfx->wBitsPerSample == PCM_Formats[i].nBits)
@ -985,14 +984,13 @@ static LRESULT PCM_DriverDetails(PACMDRIVERDETAILSW add)
add->cFormatTags = 1; add->cFormatTags = 1;
add->cFilterTags = 0; add->cFilterTags = 0;
add->hicon = NULL; add->hicon = NULL;
MultiByteToWideChar( CP_ACP, 0, "MS-PCM", -1, MultiByteToWideChar(CP_ACP, 0, "MS-PCM", -1, add->szShortName, ARRAY_SIZE(add->szShortName));
add->szShortName, sizeof(add->szShortName)/sizeof(WCHAR) ); MultiByteToWideChar(CP_ACP, 0, "Wine PCM converter", -1,
MultiByteToWideChar( CP_ACP, 0, "Wine PCM converter", -1, add->szLongName, ARRAY_SIZE(add->szLongName));
add->szLongName, sizeof(add->szLongName)/sizeof(WCHAR) ); MultiByteToWideChar(CP_ACP, 0, "Brought to you by the Wine team...", -1,
MultiByteToWideChar( CP_ACP, 0, "Brought to you by the Wine team...", -1, add->szCopyright, ARRAY_SIZE(add->szCopyright));
add->szCopyright, sizeof(add->szCopyright)/sizeof(WCHAR) ); MultiByteToWideChar(CP_ACP, 0, "Refer to LICENSE file", -1,
MultiByteToWideChar( CP_ACP, 0, "Refer to LICENSE file", -1, add->szLicensing, ARRAY_SIZE(add->szLicensing) );
add->szLicensing, sizeof(add->szLicensing)/sizeof(WCHAR) );
add->szFeatures[0] = 0; add->szFeatures[0] = 0;
return MMSYSERR_NOERROR; return MMSYSERR_NOERROR;
@ -1035,7 +1033,7 @@ static LRESULT PCM_FormatTagDetails(PACMFORMATTAGDETAILSW aftd, DWORD dwQuery)
aftd->dwFormatTag = WAVE_FORMAT_PCM; aftd->dwFormatTag = WAVE_FORMAT_PCM;
aftd->cbFormatSize = sizeof(PCMWAVEFORMAT); aftd->cbFormatSize = sizeof(PCMWAVEFORMAT);
aftd->fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CONVERTER; aftd->fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CONVERTER;
aftd->cStandardFormats = NUM_PCM_FORMATS; aftd->cStandardFormats = ARRAY_SIZE(PCM_Formats);
aftd->szFormatTag[0] = 0; aftd->szFormatTag[0] = 0;
return MMSYSERR_NOERROR; return MMSYSERR_NOERROR;
@ -1057,7 +1055,7 @@ static LRESULT PCM_FormatDetails(PACMFORMATDETAILSW afd, DWORD dwQuery)
} }
break; break;
case ACM_FORMATDETAILSF_INDEX: case ACM_FORMATDETAILSF_INDEX:
assert(afd->dwFormatIndex < NUM_PCM_FORMATS); assert(afd->dwFormatIndex < ARRAY_SIZE(PCM_Formats));
afd->pwfx->wFormatTag = WAVE_FORMAT_PCM; afd->pwfx->wFormatTag = WAVE_FORMAT_PCM;
afd->pwfx->nChannels = PCM_Formats[afd->dwFormatIndex].nChannels; afd->pwfx->nChannels = PCM_Formats[afd->dwFormatIndex].nChannels;
afd->pwfx->nSamplesPerSec = PCM_Formats[afd->dwFormatIndex].rate; afd->pwfx->nSamplesPerSec = PCM_Formats[afd->dwFormatIndex].rate;

View file

@ -100,7 +100,7 @@ reactos/dll/win32/mlang # Synced to WineStaging-4.0
reactos/dll/win32/mmdevapi # Synced to WineStaging-4.0 reactos/dll/win32/mmdevapi # Synced to WineStaging-4.0
reactos/dll/win32/mpr # Synced to WineStaging-3.17 reactos/dll/win32/mpr # Synced to WineStaging-3.17
reactos/dll/win32/mprapi # Synced to WineStaging-3.3 reactos/dll/win32/mprapi # Synced to WineStaging-3.3
reactos/dll/win32/msacm32 # Synced to WineStaging-3.3 reactos/dll/win32/msacm32 # Synced to WineStaging-4.0
reactos/dll/win32/msacm32.drv # Synced to WineStaging-3.3 reactos/dll/win32/msacm32.drv # Synced to WineStaging-3.3
reactos/dll/win32/msadp32.acm # Synced to WineStaging-3.3 reactos/dll/win32/msadp32.acm # Synced to WineStaging-3.3
reactos/dll/win32/mscat32 # Synced to WineStaging-3.3 reactos/dll/win32/mscat32 # Synced to WineStaging-3.3