/* finish all outstanding things */
MCIQTZ_mciClose(dwDevID, MCI_WAIT, NULL);
+ mciSetDriverData(dwDevID, 0);
HeapFree(GetProcessHeap(), 0, wma);
return 1;
}
goto err;
}
- if (!((dwFlags & MCI_OPEN_ELEMENT) && (dwFlags & MCI_OPEN_ELEMENT))) {
+ if (!(dwFlags & MCI_OPEN_ELEMENT) || (dwFlags & MCI_OPEN_ELEMENT_ID)) {
TRACE("Wrong dwFlags %x\n", dwFlags);
goto err;
}
if (!wma)
return MCIERR_INVALID_DEVICE_ID;
- if (!(dwFlags & MCI_STATUS_ITEM)) {
- WARN("No capability item specified\n");
- return MCIERR_UNRECOGNIZED_COMMAND;
- }
+ if (!(dwFlags & MCI_GETDEVCAPS_ITEM))
+ return MCIERR_MISSING_PARAMETER;
switch (lpParms->dwItem) {
case MCI_GETDEVCAPS_CAN_RECORD:
lpParms->dwReturn = MAKEMCIRESOURCE(FALSE, MCI_FALSE);
TRACE("MCI_GETDEVCAPS_CAN_SAVE = %08x\n", lpParms->dwReturn);
break;
+ case MCI_DGV_GETDEVCAPS_CAN_REVERSE:
+ lpParms->dwReturn = MAKEMCIRESOURCE(FALSE, MCI_FALSE);
+ TRACE("MCI_DGV_GETDEVCAPS_CAN_REVERSE = %08x\n", lpParms->dwReturn);
+ break;
+ case MCI_DGV_GETDEVCAPS_CAN_STRETCH:
+ lpParms->dwReturn = MAKEMCIRESOURCE(FALSE, MCI_FALSE); /* FIXME */
+ TRACE("MCI_DGV_GETDEVCAPS_CAN_STRETCH = %08x\n", lpParms->dwReturn);
+ break;
+ case MCI_DGV_GETDEVCAPS_CAN_LOCK:
+ lpParms->dwReturn = MAKEMCIRESOURCE(FALSE, MCI_FALSE);
+ TRACE("MCI_DGV_GETDEVCAPS_CAN_LOCK = %08x\n", lpParms->dwReturn);
+ break;
+ case MCI_DGV_GETDEVCAPS_CAN_FREEZE:
+ lpParms->dwReturn = MAKEMCIRESOURCE(FALSE, MCI_FALSE);
+ TRACE("MCI_DGV_GETDEVCAPS_CAN_FREEZE = %08x\n", lpParms->dwReturn);
+ break;
+ case MCI_DGV_GETDEVCAPS_CAN_STR_IN:
+ lpParms->dwReturn = MAKEMCIRESOURCE(FALSE, MCI_FALSE);
+ TRACE("MCI_DGV_GETDEVCAPS_CAN_STRETCH_INPUT = %08x\n", lpParms->dwReturn);
+ break;
+ case MCI_DGV_GETDEVCAPS_HAS_STILL:
+ lpParms->dwReturn = MAKEMCIRESOURCE(FALSE, MCI_FALSE);
+ TRACE("MCI_DGV_GETDEVCAPS_HAS_STILL = %08x\n", lpParms->dwReturn);
+ break;
+ case MCI_DGV_GETDEVCAPS_CAN_TEST:
+ lpParms->dwReturn = MAKEMCIRESOURCE(FALSE, MCI_FALSE); /* FIXME */
+ TRACE("MCI_DGV_GETDEVCAPS_CAN_TEST = %08x\n", lpParms->dwReturn);
+ break;
+ case MCI_DGV_GETDEVCAPS_MAX_WINDOWS:
+ lpParms->dwReturn = 1;
+ TRACE("MCI_DGV_GETDEVCAPS_MAX_WINDOWS = %u\n", lpParms->dwReturn);
+ return 0;
default:
- ERR("Unknown capability %08x\n", lpParms->dwItem);
- return MCIERR_UNRECOGNIZED_COMMAND;
+ WARN("Unknown capability %08x\n", lpParms->dwItem);
+ /* Fall through */
+ case MCI_DGV_GETDEVCAPS_MAXIMUM_RATE: /* unknown to w2k */
+ case MCI_DGV_GETDEVCAPS_MINIMUM_RATE: /* unknown to w2k */
+ return MCIERR_UNSUPPORTED_FUNCTION;
}
return MCI_RESOURCE_RETURNED;
}
}
- if (dwFlags & ~MCI_SET_TIME_FORMAT)
- FIXME("Flags not supported yet %08lX\n", dwFlags & ~MCI_SET_TIME_FORMAT);
+ if (dwFlags & MCI_SET_DOOR_OPEN)
+ FIXME("MCI_SET_DOOR_OPEN not implemented yet\n");
+ if (dwFlags & MCI_SET_DOOR_CLOSED)
+ FIXME("MCI_SET_DOOR_CLOSED not implemented yet\n");
+ if (dwFlags & MCI_SET_AUDIO)
+ FIXME("MCI_SET_AUDIO not implemented yet\n");
+ if (dwFlags & MCI_SET_VIDEO)
+ FIXME("MCI_SET_VIDEO not implemented yet\n");
+ if (dwFlags & MCI_SET_ON)
+ FIXME("MCI_SET_ON not implemented yet\n");
+ if (dwFlags & MCI_SET_OFF)
+ FIXME("MCI_SET_OFF not implemented yet\n");
+ if (dwFlags & MCI_SET_AUDIO_LEFT)
+ FIXME("MCI_SET_AUDIO_LEFT not implemented yet\n");
+ if (dwFlags & MCI_SET_AUDIO_RIGHT)
+ FIXME("MCI_SET_AUDIO_RIGHT not implemented yet\n");
+
+ if (dwFlags & ~0x7f03 /* All MCI_SET flags mask */)
+ ERR("Unknown flags %08x\n", dwFlags & ~0x7f03);
return 0;
}
return 0;
}
+/***************************************************************************
+ * MCIQTZ_mciSetAudio [internal]
+ */
+static DWORD MCIQTZ_mciSetAudio(UINT wDevID, DWORD dwFlags, LPMCI_DGV_SETAUDIO_PARMSW lpParms)
+{
+ WINE_MCIQTZ *wma;
+
+ FIXME("(%04x, %08x, %p) : stub\n", wDevID, dwFlags, lpParms);
+
+ if (!lpParms)
+ return MCIERR_NULL_PARAMETER_BLOCK;
+
+ wma = MCIQTZ_mciGetOpenDev(wDevID);
+ if (!wma)
+ return MCIERR_INVALID_DEVICE_ID;
+
+ MCIQTZ_mciStop(wDevID, MCI_WAIT, NULL);
+
+ return 0;
+}
+
/*======================================================================*
* MCI QTZ entry points *
*======================================================================*/
case MCI_SET: return MCIQTZ_mciSet (dwDevID, dwParam1, (LPMCI_DGV_SET_PARMS) dwParam2);
case MCI_STATUS: return MCIQTZ_mciStatus (dwDevID, dwParam1, (LPMCI_DGV_STATUS_PARMSW) dwParam2);
case MCI_WHERE: return MCIQTZ_mciWhere (dwDevID, dwParam1, (LPMCI_DGV_RECT_PARMS) dwParam2);
+ /* Digital Video specific */
+ case MCI_SETAUDIO: return MCIQTZ_mciSetAudio (dwDevID, dwParam1, (LPMCI_DGV_SETAUDIO_PARMSW) dwParam2);
case MCI_RECORD:
case MCI_PAUSE:
case MCI_RESUME:
case MCI_CAPTURE:
case MCI_MONITOR:
case MCI_RESERVE:
- case MCI_SETAUDIO:
case MCI_SIGNAL:
case MCI_SETVIDEO:
case MCI_QUALITY: