Changeset 5272 for trunk/src/winmm/wavein.cpp
- Timestamp:
- Feb 27, 2001, 10:14:00 PM (24 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/winmm/wavein.cpp
r2812 r5272 1 /* $Id: wavein.cpp,v 1. 5 2000-02-17 14:09:32sandervl Exp $ */1 /* $Id: wavein.cpp,v 1.6 2001-02-27 21:13:59 sandervl Exp $ */ 2 2 3 3 /* … … 25 25 26 26 #include "winmm.h" 27 28 #define DBG_LOCALLOG DBG_wavein 27 #include "dwavein.h" 28 29 #define DBG_LOCALLOG DBG_wavein 29 30 #include "dbglocal.h" 30 31 … … 32 33 ODINDEBUGCHANNEL(WINMM-WAVEIN) 33 34 34 // All stubs for now 35 ODINFUNCTION3(MMRESULT, waveInAddBuffer, 36 HWAVEIN, hwi, 37 LPWAVEHDR, pwh, 38 UINT, cbwh) 39 { 40 dprintf(("WINMM:waveInAddBuffer - stub\n")); 41 return MMSYSERR_INVALHANDLE; 42 } 43 44 ODINFUNCTION1(MMRESULT, waveInClose, 45 HWAVEIN, hwi) 46 { 47 dprintf(("WINMM:waveInClose - stub\n")); 48 return MMSYSERR_INVALHANDLE; 49 } 50 51 ODINFUNCTION3(MMRESULT, waveInGetDevCapsA, 52 UINT, uDeviceID, 53 LPWAVEINCAPSA, pwic, 54 UINT, cbwic) 55 { 56 dprintf(("WINMM:waveInGetDevCapsA(%d) - stub\n", uDeviceID )); 57 return MMSYSERR_BADDEVICEID; 58 } 59 60 ODINFUNCTION3(MMRESULT, waveInGetDevCapsW, 61 UINT, uDeviceID, 62 LPWAVEINCAPSW, pwic, 63 UINT, cbwic) 64 { 65 dprintf(("WINMM:waveInGetDevCapsW(%d) - stub\n", uDeviceID )); 66 return MMSYSERR_BADDEVICEID; 67 } 68 69 ODINFUNCTION3(MMRESULT, waveInGetErrorTextA, 70 MMRESULT, wError, 71 LPSTR, lpText, 72 UINT, cchText) 73 { 74 dprintf(("WINMM:waveInGetErrorTextA(%d)\n", wError )); 75 char * theMsg = getWinmmMsg( wError ); 76 if ( theMsg ) 77 strncpy( lpText, theMsg, cchText ); 78 else 79 { 80 char errMsg[100]; 81 sprintf( errMsg, "Unknown error number %d", wError ); 82 strncpy( lpText, errMsg, cchText ); 83 } 84 return MMSYSERR_NOERROR; 85 } 86 87 ODINFUNCTION3(MMRESULT, waveInGetErrorTextW, 88 MMRESULT, wError, 89 LPWSTR, lpText, 90 UINT, cchText) 91 { 92 dprintf(("WINMM:waveInGetErrorTextW(%d) - stub\n", wError )); 93 char * theMsg = getWinmmMsg( wError ); 94 if ( theMsg ) 95 AsciiToUnicode( theMsg, lpText ); 96 else 97 { 98 char errMsg[100]; 99 sprintf( errMsg, "Unknown error number %d", wError ); 100 AsciiToUnicode( errMsg, lpText ); 101 } 102 return MMSYSERR_NOERROR; 103 } 104 105 ODINFUNCTION2(MMRESULT, waveInGetID, 106 HWAVEIN, hwi, 107 LPUINT, puDeviceID) 108 { 109 dprintf(("WINMM:waveInGetID - stub\n")); 110 return MMSYSERR_INVALHANDLE; 111 } 112 113 ODINFUNCTION0(UINT, waveInGetNumDevs) 114 { 115 dprintf(("WINMM:waveInGetNumDevs - stub\n")); 116 return 0; 117 } 118 119 ODINFUNCTION3(MMRESULT, waveInGetPosition, 120 HWAVEIN, hwi, 121 LPMMTIME, pmmt, 122 UINT, cbmmt) 123 { 124 dprintf(("WINMM:waveInGetPosition - stub\n")); 125 return MMSYSERR_INVALHANDLE; 126 } 127 128 ODINFUNCTION4(MMRESULT, waveInMessage, 129 HWAVEIN, hwi, 130 UINT, uMsg, 131 DWORD, dw1, 132 DWORD, dw2) 133 { 134 dprintf(("WINMM:waveInMessage - stub\n")); 135 return MMSYSERR_INVALHANDLE; 136 } 137 138 35 /******************************************************************************/ 36 /******************************************************************************/ 139 37 ODINFUNCTION6(MMRESULT, waveInOpen, 140 38 LPHWAVEIN, phwi, … … 145 43 DWORD, fdwOpen) 146 44 { 147 dprintf(("WINMM:waveInOpen - stub\n")); 148 return MMSYSERR_BADDEVICEID; 149 } 150 151 ODINFUNCTION3(MMRESULT, waveInPrepareHeader, 45 MMRESULT rc; 46 47 if(pwfx == NULL) 48 return(WAVERR_BADFORMAT); 49 50 if(fdwOpen == WAVE_FORMAT_QUERY) { 51 if(DartWaveIn::queryFormat(pwfx->wFormatTag, pwfx->nChannels, pwfx->nSamplesPerSec, 52 pwfx->wBitsPerSample) == TRUE) { 53 return(MMSYSERR_NOERROR); 54 } 55 else return(WAVERR_BADFORMAT); 56 } 57 58 if(phwi == NULL) 59 return(MMSYSERR_INVALPARAM); 60 61 if(fdwOpen == CALLBACK_WINDOW) { 62 *phwi = (HWAVEOUT)new DartWaveIn(pwfx, (HWND)dwCallback); 63 } 64 else 65 if(fdwOpen == CALLBACK_FUNCTION) 66 { 67 //@@@PH 1999/12/28 save valid FS: to win32 TIB 68 *phwi = (HWAVEOUT)new DartWaveIn(pwfx, dwCallback, dwInstance, GetFS()); 69 } 70 else *phwi = (HWAVEOUT)new DartWaveIn(pwfx); 71 72 if(*phwi == NULL) { 73 return(MMSYSERR_NODRIVER); 74 } 75 76 rc = ((DartWaveIn *)*phwi)->getError(); 77 if(rc != MMSYSERR_NOERROR) { 78 delete (DartWaveIn *)*phwi; 79 return(rc); 80 } 81 return(MMSYSERR_NOERROR); 82 } 83 /******************************************************************************/ 84 /******************************************************************************/ 85 ODINFUNCTION1(MMRESULT, waveInClose, 86 HWAVEIN, hwi) 87 { 88 DartWaveIn *dwave = (DartWaveIn *)hwi; 89 90 if(DartWaveIn::find(dwave) == TRUE) 91 { 92 if(dwave->getState() == STATE_RECORDING) 93 return(WAVERR_STILLPLAYING); 94 95 delete dwave; 96 return(MMSYSERR_NOERROR); 97 } 98 else return(MMSYSERR_INVALHANDLE); 99 } 100 /******************************************************************************/ 101 /******************************************************************************/ 102 ODINFUNCTION1(MMRESULT, waveInReset, 103 HWAVEIN, hwi) 104 { 105 DartWaveIn *dwave = (DartWaveIn *)hwi; 106 107 if(DartWaveIn::find(dwave) == TRUE) 108 return(dwave->reset()); 109 else return(MMSYSERR_INVALHANDLE); 110 } 111 /******************************************************************************/ 112 /******************************************************************************/ 113 ODINFUNCTION1(MMRESULT, waveInStart, 114 HWAVEIN, hwi) 115 { 116 DartWaveIn *dwave = (DartWaveIn *)hwi; 117 118 if(DartWaveIn::find(dwave) == TRUE) 119 return(dwave->start()); 120 else return(MMSYSERR_INVALHANDLE); 121 } 122 /******************************************************************************/ 123 /******************************************************************************/ 124 ODINFUNCTION1(MMRESULT, waveInStop, 125 HWAVEIN, hwi) 126 { 127 DartWaveIn *dwave = (DartWaveIn *)hwi; 128 129 if(DartWaveIn::find(dwave) == TRUE) 130 return(dwave->stop()); 131 else return(MMSYSERR_INVALHANDLE); 132 } 133 /******************************************************************************/ 134 /******************************************************************************/ 135 ODINFUNCTION3(MMRESULT, waveInGetPosition, 136 HWAVEIN, hwi, 137 LPMMTIME, pmmt, 138 UINT, cbmmt) 139 { 140 DartWaveIn *dwave = (DartWaveIn *)hwi; 141 142 if(pmmt == NULL) 143 return MMSYSERR_INVALPARAM; 144 145 if(DartWaveIn::find(dwave) == TRUE) 146 { 147 ULONG position; 148 149 position = dwave->getPosition(); 150 if(position == -1) { 151 return MMSYSERR_HANDLEBUSY; //todo correct error value 152 } 153 switch (pmmt->wType) { 154 case TIME_BYTES: 155 pmmt->u.cb = position; 156 break; 157 case TIME_SAMPLES: 158 pmmt->u.sample = position * 8 / dwave->getBitsPerSample(); 159 break; 160 case TIME_SMPTE: 161 { 162 ULONG timeval = position / (dwave->getAvgBytesPerSecond() / 1000); 163 pmmt->u.smpte.hour = timeval / 108000; 164 timeval -= pmmt->u.smpte.hour * 108000; 165 pmmt->u.smpte.min = timeval / 1800; 166 timeval -= pmmt->u.smpte.min * 1800; 167 pmmt->u.smpte.sec = timeval / 30; 168 timeval -= pmmt->u.smpte.sec * 30; 169 pmmt->u.smpte.frame = timeval; 170 pmmt->u.smpte.fps = 30; 171 break; 172 } 173 default: 174 dprintf(("waveInGetPosition: Format %d not supported ! use TIME_MS !\n", pmmt->wType)); 175 pmmt->wType = TIME_MS; 176 case TIME_MS: 177 pmmt->u.ms = position / (dwave->getAvgBytesPerSecond() / 1000); 178 dprintf(("WINMM:waveInGetPosition: TIME_MS pos=%d ms=%d time=%d", position, pmmt->u.ms, GetCurrentTime())); 179 break; 180 } 181 return MMSYSERR_NOERROR; 182 } 183 else return(MMSYSERR_INVALHANDLE); 184 } 185 /******************************************************************************/ 186 /******************************************************************************/ 187 ODINFUNCTION3(MMRESULT, waveInAddBuffer, 152 188 HWAVEIN, hwi, 153 189 LPWAVEHDR, pwh, 154 190 UINT, cbwh) 155 191 { 156 dprintf(("WINMM:waveInPrepareHeader - stub\n")); 157 return MMSYSERR_INVALHANDLE; 158 } 159 160 ODINFUNCTION1(MMRESULT, waveInReset, 161 HWAVEIN, hwi) 162 { 163 dprintf(("WINMM:waveInReset - stub\n")); 164 return MMSYSERR_INVALHANDLE; 165 } 166 167 ODINFUNCTION1(MMRESULT, waveInStart, 168 HWAVEIN, hwi) 169 { 170 dprintf(("WINMM:waveInStart - stub\n")); 171 return MMSYSERR_INVALHANDLE; 172 } 173 174 ODINFUNCTION1(MMRESULT, waveInStop, 175 HWAVEIN, hwi) 176 { 177 dprintf(("WINMM:waveInStop - stub\n")); 178 return MMSYSERR_INVALHANDLE; 179 } 180 181 ODINFUNCTION3(MMRESULT, waveInUnprepareHeader, 192 DartWaveIn *dwave = (DartWaveIn *)hwi; 193 194 if(DartWaveIn::find(dwave) == TRUE) 195 { 196 if(!(pwh->dwFlags & WHDR_PREPARED) || pwh->lpData == NULL) 197 return WAVERR_UNPREPARED; 198 199 if(pwh->dwFlags & WHDR_INQUEUE) 200 return WAVERR_STILLPLAYING; 201 202 pwh->dwFlags |= WHDR_INQUEUE; 203 pwh->dwFlags &= ~WHDR_DONE; 204 205 dprintf(("waveInAddBuffer %x %d %x", pwh->lpData, pwh->dwBufferLength, pwh->dwFlags)); 206 return(dwave->addBuffer(pwh, cbwh)); 207 } 208 else return(MMSYSERR_INVALHANDLE); 209 } 210 /******************************************************************************/ 211 /******************************************************************************/ 212 ODINFUNCTION3(MMRESULT, waveInPrepareHeader, 182 213 HWAVEIN, hwi, 183 214 LPWAVEHDR, pwh, 184 215 UINT, cbwh) 185 216 { 186 dprintf(("WINMM:waveInUnprepareHeader - stub\n")); 187 return MMSYSERR_INVALHANDLE; 188 } 189 190 217 DartWaveIn *dwave = (DartWaveIn *)hwi; 218 219 if(DartWaveIn::find(dwave) == TRUE) 220 { 221 if(pwh->dwFlags & WHDR_INQUEUE) 222 return WAVERR_STILLPLAYING; 223 224 pwh->dwFlags |= WHDR_PREPARED; 225 pwh->dwFlags &= ~WHDR_DONE; 226 pwh->lpNext = NULL; 227 return(MMSYSERR_NOERROR); 228 } 229 else return(MMSYSERR_INVALHANDLE); 230 } 231 /******************************************************************************/ 232 /******************************************************************************/ 233 ODINFUNCTION3(MMRESULT, waveInUnprepareHeader, 234 HWAVEIN, hwi, 235 LPWAVEHDR, pwh, 236 UINT, cbwh) 237 { 238 DartWaveIn *dwave = (DartWaveIn *)hwi; 239 240 if(DartWaveIn::find(dwave) == TRUE) 241 { 242 if(pwh->dwFlags & WHDR_INQUEUE) 243 return WAVERR_STILLPLAYING; 244 245 pwh->dwFlags &= ~WHDR_PREPARED; 246 pwh->dwFlags |= WHDR_DONE; 247 return(MMSYSERR_NOERROR); 248 } 249 else return(MMSYSERR_INVALHANDLE); 250 } 251 /******************************************************************************/ 252 /******************************************************************************/ 253 ODINFUNCTION3(MMRESULT, waveInGetDevCapsA, 254 UINT, uDeviceID, 255 LPWAVEINCAPSA, pwic, 256 UINT, cbwic) 257 { 258 if(DartWaveIn::getNumDevices() == 0) { 259 memset(pwic, 0, sizeof(*pwic)); 260 return MMSYSERR_NODRIVER; 261 } 262 263 // we have to fill in this thing 264 pwic->wMid = 0; /* manufacturer ID */ 265 pwic->wPid = 0; /* product ID */ 266 pwic->vDriverVersion = 0x0001; /* version of the driver */ 267 strcpy( pwic->szPname, "OS/2 DART Wave In" ); /* product name */ 268 pwic->dwFormats = WAVE_FORMAT_1M08 | WAVE_FORMAT_1S08 | 269 WAVE_FORMAT_1M16 | WAVE_FORMAT_1S16 | 270 WAVE_FORMAT_2M08 | WAVE_FORMAT_2S08 | 271 WAVE_FORMAT_2M16 | WAVE_FORMAT_2S16 | 272 WAVE_FORMAT_4M08 | WAVE_FORMAT_4S08 | 273 WAVE_FORMAT_4M16 | WAVE_FORMAT_4S16; 274 275 pwic->wChannels = 2; /* number of sources supported */ 276 pwic->wReserved1 = 0; /* packing */ 277 278 return MMSYSERR_NOERROR; 279 } 280 /******************************************************************************/ 281 /******************************************************************************/ 282 ODINFUNCTION3(MMRESULT, waveInGetDevCapsW, 283 UINT, uDeviceID, 284 LPWAVEINCAPSW, pwic, 285 UINT, cbwic) 286 { 287 if(DartWaveIn::getNumDevices() == 0) { 288 memset(pwic, 0, sizeof(*pwic)); 289 return MMSYSERR_NODRIVER; 290 } 291 // we have to fill in this thing 292 pwic->wMid = 0; /* manufacturer ID */ 293 pwic->wPid = 0; /* product ID */ 294 pwic->vDriverVersion = 0x0001; /* version of the driver */ 295 lstrcpyW(pwic->szPname, (LPCWSTR)L"OS/2 DART Wave In"); /* product name */ 296 pwic->dwFormats = WAVE_FORMAT_1M08 | WAVE_FORMAT_1S08 | 297 WAVE_FORMAT_1M16 | WAVE_FORMAT_1S16 | 298 WAVE_FORMAT_2M08 | WAVE_FORMAT_2S08 | 299 WAVE_FORMAT_2M16 | WAVE_FORMAT_2S16 | 300 WAVE_FORMAT_4M08 | WAVE_FORMAT_4S08 | 301 WAVE_FORMAT_4M16 | WAVE_FORMAT_4S16; 302 303 pwic->wChannels = 2; /* number of sources supported */ 304 pwic->wReserved1 = 0; /* packing */ 305 306 return MMSYSERR_NOERROR; 307 } 308 /******************************************************************************/ 309 /******************************************************************************/ 310 ODINFUNCTION3(MMRESULT, waveInGetErrorTextA, 311 MMRESULT, wError, 312 LPSTR, lpText, 313 UINT, cchText) 314 { 315 dprintf(("WINMM:waveInGetErrorTextA(%d)\n", wError )); 316 char * theMsg = getWinmmMsg( wError ); 317 if ( theMsg ) 318 strncpy( lpText, theMsg, cchText ); 319 else 320 { 321 char errMsg[100]; 322 sprintf( errMsg, "Unknown error number %d", wError ); 323 strncpy( lpText, errMsg, cchText ); 324 } 325 return MMSYSERR_NOERROR; 326 } 327 /******************************************************************************/ 328 /******************************************************************************/ 329 ODINFUNCTION3(MMRESULT, waveInGetErrorTextW, 330 MMRESULT, wError, 331 LPWSTR, lpText, 332 UINT, cchText) 333 { 334 dprintf(("WINMM:waveInGetErrorTextW(%d) - stub\n", wError )); 335 char * theMsg = getWinmmMsg( wError ); 336 if ( theMsg ) 337 AsciiToUnicode( theMsg, lpText ); 338 else 339 { 340 char errMsg[100]; 341 sprintf( errMsg, "Unknown error number %d", wError ); 342 AsciiToUnicode( errMsg, lpText ); 343 } 344 return MMSYSERR_NOERROR; 345 } 346 /******************************************************************************/ 347 /******************************************************************************/ 348 ODINFUNCTION2(MMRESULT, waveInGetID, 349 HWAVEIN, hwi, 350 LPUINT, puDeviceID) 351 { 352 DartWaveIn *dwave = (DartWaveIn *)hwi; 353 if(DartWaveIn::find(dwave) == TRUE) 354 { 355 *puDeviceID = 1; 356 return MMSYSERR_NOERROR; 357 } 358 else return(MMSYSERR_INVALHANDLE); 359 } 360 /******************************************************************************/ 361 /******************************************************************************/ 362 ODINFUNCTION0(UINT, waveInGetNumDevs) 363 { 364 return DartWaveIn::getNumDevices(); 365 } 366 /******************************************************************************/ 367 /******************************************************************************/ 368 ODINFUNCTION4(MMRESULT, waveInMessage, 369 HWAVEIN, hwi, 370 UINT, uMsg, 371 DWORD, dw1, 372 DWORD, dw2) 373 { 374 dprintf(("WINMM:waveInMessage - stub\n")); 375 376 DartWaveIn *dwave = (DartWaveIn *)hwi; 377 if(DartWaveIn::find(dwave) == TRUE) 378 { 379 return MMSYSERR_NOTSUPPORTED; 380 } 381 else 382 return(MMSYSERR_INVALHANDLE); 383 } 384 /******************************************************************************/ 385 /******************************************************************************/ 386
Note:
See TracChangeset
for help on using the changeset viewer.