Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
152
Src/Plugins/Input/in_cdda/MCI.Cpp
Normal file
152
Src/Plugins/Input/in_cdda/MCI.Cpp
Normal file
|
@ -0,0 +1,152 @@
|
|||
#include "main.h"
|
||||
|
||||
MCIERROR MCISendCommand(MCIDEVICEID IDDevice, UINT uMsg, DWORD fdwCommand, DWORD_PTR dwParam)
|
||||
{
|
||||
MCIERROR nErr = mciSendCommand(IDDevice, uMsg, fdwCommand, dwParam);
|
||||
#if 0
|
||||
if (nErr)
|
||||
{
|
||||
wchar_t szError[256] = {0};
|
||||
mciGetErrorString(nErr, szError, 256);
|
||||
MessageBox(NULL,szError,L"MCI CD Error",MB_OK);
|
||||
}
|
||||
#endif
|
||||
return nErr;
|
||||
}
|
||||
|
||||
int isMediaPresent(MCIDEVICEID wDeviceID)
|
||||
{
|
||||
MCI_STATUS_PARMS p;
|
||||
p.dwItem=MCI_STATUS_MEDIA_PRESENT;
|
||||
if (MCISendCommand(wDeviceID,MCI_STATUS,MCI_STATUS_ITEM,(DWORD_PTR)&p)) return 1;
|
||||
return p.dwReturn?1:0;
|
||||
}
|
||||
|
||||
BOOL CDOpen(MCIDEVICEID* lpDeviceID, int device, const wchar_t *alias)
|
||||
{
|
||||
//OutputDebugString("Calling cdopen()\n");
|
||||
MCI_OPEN_PARMS sMCIOpen;
|
||||
MCI_SET_PARMS sMCISet;
|
||||
wchar_t zDevice[3]={(wchar_t)device,':',0};
|
||||
DWORD nErr;
|
||||
|
||||
sMCIOpen.dwCallback = 0;
|
||||
sMCIOpen.wDeviceID = 0;
|
||||
sMCIOpen.lpstrAlias = alias;
|
||||
sMCIOpen.lpstrDeviceType = (LPCTSTR) MCI_DEVTYPE_CD_AUDIO;
|
||||
sMCIOpen.lpstrElementName = zDevice;
|
||||
nErr = MCISendCommand(0, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_SHAREABLE |
|
||||
MCI_OPEN_TYPE_ID | MCI_OPEN_ELEMENT |
|
||||
(alias ? MCI_OPEN_ALIAS : 0), (DWORD_PTR) &sMCIOpen);
|
||||
if (nErr)
|
||||
{
|
||||
nErr = MCISendCommand(0, MCI_OPEN, MCI_OPEN_TYPE |
|
||||
MCI_OPEN_TYPE_ID | MCI_OPEN_ELEMENT |
|
||||
(alias ? MCI_OPEN_ALIAS : 0), (DWORD_PTR) &sMCIOpen);
|
||||
if (nErr)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
sMCISet.dwTimeFormat = MCI_FORMAT_TMSF;
|
||||
MCISendCommand (sMCIOpen.wDeviceID, MCI_SET, MCI_SET_TIME_FORMAT, (DWORD_PTR) &sMCISet);
|
||||
|
||||
*lpDeviceID = sMCIOpen.wDeviceID;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void CDClose(MCIDEVICEID* lpDeviceID)
|
||||
{
|
||||
MCI_GENERIC_PARMS sMCIGeneric;
|
||||
|
||||
sMCIGeneric.dwCallback = (DWORD_PTR) line.hMainWindow;
|
||||
MCISendCommand(*lpDeviceID, MCI_CLOSE, MCI_WAIT, (DWORD_PTR) &sMCIGeneric);
|
||||
|
||||
*lpDeviceID = 0;
|
||||
}
|
||||
|
||||
void CDEject(MCIDEVICEID wDeviceID)
|
||||
{
|
||||
MCI_SET_PARMS mciset;
|
||||
MCISendCommand (wDeviceID, MCI_SET, MCI_SET_DOOR_OPEN,(DWORD_PTR) &mciset);
|
||||
}
|
||||
|
||||
unsigned int CDGetTracks(MCIDEVICEID wDeviceID)
|
||||
{
|
||||
MCI_STATUS_PARMS sMCIStatus;
|
||||
sMCIStatus.dwItem = MCI_STATUS_NUMBER_OF_TRACKS;
|
||||
if (MCISendCommand (wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_WAIT,(DWORD_PTR) &sMCIStatus)) return -1;
|
||||
return sMCIStatus.dwReturn;
|
||||
}
|
||||
|
||||
unsigned int CDGetCurrTrack(MCIDEVICEID wDeviceID)
|
||||
{
|
||||
MCI_STATUS_PARMS sMCIStatus;
|
||||
|
||||
sMCIStatus.dwItem = MCI_STATUS_POSITION;
|
||||
MCISendCommand (wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_WAIT,(DWORD_PTR) &sMCIStatus);
|
||||
|
||||
return ((int) MCI_TMSF_TRACK (sMCIStatus.dwReturn));
|
||||
}
|
||||
|
||||
int CDPlay(MCIDEVICEID wDeviceID, unsigned int nTrack, BOOL bResume, unsigned int nMin, unsigned int nSec, unsigned int endms)
|
||||
{
|
||||
MCI_PLAY_PARMS sMCIPlay;
|
||||
unsigned int nActualTrack = nTrack;
|
||||
|
||||
sMCIPlay.dwFrom = MCI_MAKE_TMSF (nActualTrack, nMin, nSec, 0);
|
||||
sMCIPlay.dwTo = MCI_MAKE_TMSF (nActualTrack, endms/60000, (endms/1000)%60,0);
|
||||
if (!bResume)
|
||||
{
|
||||
return MCISendCommand (wDeviceID, MCI_PLAY, MCI_FROM | MCI_TO ,(DWORD_PTR) &sMCIPlay);
|
||||
}
|
||||
else
|
||||
{
|
||||
return MCISendCommand (wDeviceID, MCI_PLAY, MCI_FROM | MCI_TO, (DWORD_PTR) (LPVOID) &sMCIPlay);
|
||||
}
|
||||
}
|
||||
|
||||
void CDStop(MCIDEVICEID wDeviceID)
|
||||
{
|
||||
MCISendCommand(wDeviceID, MCI_STOP, 0, 0);
|
||||
}
|
||||
|
||||
void CDPause(MCIDEVICEID wDeviceID)
|
||||
{
|
||||
MCISendCommand(wDeviceID, MCI_PAUSE, 0,0);
|
||||
}
|
||||
|
||||
unsigned int CDGetTrackLength(MCIDEVICEID wDeviceID, unsigned int nTrack)
|
||||
{
|
||||
MCI_STATUS_PARMS sMCIStatus;
|
||||
int r;
|
||||
|
||||
sMCIStatus.dwItem = MCI_STATUS_POSITION ;
|
||||
sMCIStatus.dwTrack = nTrack+1;
|
||||
if (MCISendCommand (wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_TRACK | MCI_WAIT,(DWORD_PTR) &sMCIStatus)) // if error than last track
|
||||
{
|
||||
sMCIStatus.dwItem = MCI_STATUS_LENGTH;
|
||||
sMCIStatus.dwTrack = nTrack;
|
||||
if (MCISendCommand (wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_TRACK | MCI_WAIT,(DWORD_PTR) &sMCIStatus)) return -1000;
|
||||
return sMCIStatus.dwReturn;
|
||||
}
|
||||
|
||||
r=sMCIStatus.dwReturn;
|
||||
sMCIStatus.dwItem = MCI_STATUS_POSITION ;
|
||||
sMCIStatus.dwTrack = nTrack;
|
||||
if (MCISendCommand (wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_TRACK | MCI_WAIT,(DWORD_PTR) &sMCIStatus)) return -1000;
|
||||
return r-sMCIStatus.dwReturn;
|
||||
}
|
||||
|
||||
BOOL CDID(MCIDEVICEID wDeviceID, wchar_t *id, size_t len)
|
||||
{
|
||||
MCI_INFO_PARMS sMCIInfo;
|
||||
sMCIInfo.dwCallback=0;
|
||||
sMCIInfo.dwRetSize=len;
|
||||
sMCIInfo.lpstrReturn=id;
|
||||
DWORD nErr= MCISendCommand(wDeviceID, MCI_INFO, MCI_INFO_MEDIA_IDENTITY, (DWORD_PTR)&sMCIInfo);
|
||||
|
||||
return !nErr;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue