msacm32: acmFormatEnum: Implement ACM_FORMATENUMF_SUGGEST.
This commit is contained in:
parent
e1413faeb7
commit
3a54e89ff8
@ -443,6 +443,49 @@ static BOOL MSACM_FormatEnumHelper(PWINE_ACMDRIVERID padid, HACMDRIVER had,
|
|||||||
ACMFORMATTAGDETAILSW aftd;
|
ACMFORMATTAGDETAILSW aftd;
|
||||||
unsigned int i, j;
|
unsigned int i, j;
|
||||||
|
|
||||||
|
if (fdwEnum & ACM_FORMATENUMF_SUGGEST) {
|
||||||
|
HDRVR hdrvr;
|
||||||
|
ACMDRVFORMATSUGGEST adfs;
|
||||||
|
pafd->dwFormatIndex = 0;
|
||||||
|
memset(&aftd, 0, sizeof(aftd));
|
||||||
|
aftd.cbStruct = sizeof(aftd);
|
||||||
|
memset(&adfs, 0, sizeof(adfs));
|
||||||
|
adfs.cbStruct = sizeof(adfs);
|
||||||
|
|
||||||
|
for (i = 0; i < padid->cFormatTags; i++) {
|
||||||
|
aftd.dwFormatTag = i;
|
||||||
|
pafd->dwFormatTag = aftd.dwFormatTag;
|
||||||
|
pafd->pwfx->wFormatTag = pafd->dwFormatTag;
|
||||||
|
|
||||||
|
if (acmFormatTagDetailsW(had, &aftd, ACM_FORMATTAGDETAILSF_INDEX) != MMSYSERR_NOERROR)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
adfs.cbwfxSrc = aftd.cbFormatSize;
|
||||||
|
adfs.cbwfxDst = aftd.cbFormatSize;
|
||||||
|
adfs.pwfxSrc = pwfxRef;
|
||||||
|
adfs.pwfxDst = pafd->pwfx;
|
||||||
|
pafd->fdwSupport = padid->fdwSupport;
|
||||||
|
|
||||||
|
if ((fdwEnum & ACM_FORMATENUMF_WFORMATTAG) &&
|
||||||
|
aftd.dwFormatTag != pwfxRef->wFormatTag)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if ((fdwEnum & ACM_FORMATENUMF_HARDWARE) &&
|
||||||
|
!(pafd->fdwSupport & ACMDRIVERDETAILS_SUPPORTF_HARDWARE))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
hdrvr = OpenDriver(padid->pszFileName,0,0);
|
||||||
|
SendDriverMessage(hdrvr,ACMDM_FORMAT_SUGGEST,(DWORD)&adfs,(fdwEnum & 0x000000FFL));
|
||||||
|
|
||||||
|
if (acmFormatDetailsW(had, pafd, ACM_FORMATDETAILSF_FORMAT) != MMSYSERR_NOERROR)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
pafd->cbwfx = sizeof(*(pafd->pwfx));
|
||||||
|
|
||||||
|
if (!(fnCallback)((HACMDRIVERID)padid, pafd, dwInstance, padid->fdwSupport))
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
for (i = 0; i < padid->cFormatTags; i++) {
|
for (i = 0; i < padid->cFormatTags; i++) {
|
||||||
memset(&aftd, 0, sizeof(aftd));
|
memset(&aftd, 0, sizeof(aftd));
|
||||||
aftd.cbStruct = sizeof(aftd);
|
aftd.cbStruct = sizeof(aftd);
|
||||||
@ -479,6 +522,7 @@ static BOOL MSACM_FormatEnumHelper(PWINE_ACMDRIVERID padid, HACMDRIVER had,
|
|||||||
}
|
}
|
||||||
/* the "formats" used by the filters are also reported */
|
/* the "formats" used by the filters are also reported */
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -514,8 +558,7 @@ MMRESULT WINAPI acmFormatEnumW(HACMDRIVER had, PACMFORMATDETAILSW pafd,
|
|||||||
(pafd->dwFormatTag != pafd->pwfx->wFormatTag))
|
(pafd->dwFormatTag != pafd->pwfx->wFormatTag))
|
||||||
return MMSYSERR_INVALPARAM;
|
return MMSYSERR_INVALPARAM;
|
||||||
|
|
||||||
if (fdwEnum & (ACM_FORMATENUMF_CONVERT|ACM_FORMATENUMF_SUGGEST|
|
if (fdwEnum & (ACM_FORMATENUMF_CONVERT|ACM_FORMATENUMF_INPUT|ACM_FORMATENUMF_OUTPUT))
|
||||||
ACM_FORMATENUMF_INPUT|ACM_FORMATENUMF_OUTPUT))
|
|
||||||
FIXME("Unsupported fdwEnum values %08x\n", fdwEnum);
|
FIXME("Unsupported fdwEnum values %08x\n", fdwEnum);
|
||||||
|
|
||||||
if (had) {
|
if (had) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user