Changeset 8508 for trunk/src


Ignore:
Timestamp:
May 28, 2002, 4:09:25 PM (23 years ago)
Author:
sandervl
Message:

fixed wave recording; waveIn/OutOpen fixes for WAVE_FORMAT_QUERY flag

Location:
trunk/src/winmm
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/winmm/mixer.cpp

    r8506 r8508  
    1 /* $Id: mixer.cpp,v 1.21 2002-05-28 13:35:02 sandervl Exp $ */
     1/* $Id: mixer.cpp,v 1.22 2002-05-28 14:09:24 sandervl Exp $ */
    22
    33/*
     
    212212            DWORD dwLevelL;
    213213
     214#ifdef DEBUG
    214215            switch(fdwDetails & MIXER_GETCONTROLDETAILSF_QUERYMASK) {
    215216            case MIXERCONTROL_CONTROLTYPE_TREBLE:
     
    220221                break;
    221222            }
     223#endif
    222224
    223225            if(OSLibMixGetVolume(mixerControls[lpmcd->dwControlID].id, &dwLevelL, NULL) == FALSE) {
  • trunk/src/winmm/wavein.cpp

    r8470 r8508  
    1 /* $Id: wavein.cpp,v 1.11 2002-05-22 15:50:26 sandervl Exp $ */
     1/* $Id: wavein.cpp,v 1.12 2002-05-28 14:09:24 sandervl Exp $ */
    22
    33/*
     
    4747        return(WAVERR_BADFORMAT);
    4848
    49     if(fdwOpen == WAVE_FORMAT_QUERY) {
     49    if(fdwOpen & WAVE_FORMAT_QUERY)
     50    {
    5051        if(DartWaveIn::queryFormat(pwfx->wFormatTag, pwfx->nChannels, pwfx->nSamplesPerSec,
    5152                                   pwfx->wBitsPerSample) == TRUE)
  • trunk/src/winmm/waveindart.cpp

    r8202 r8508  
    1 /* $Id: waveindart.cpp,v 1.3 2002-04-07 14:36:31 sandervl Exp $ */
     1/* $Id: waveindart.cpp,v 1.4 2002-05-28 14:09:25 sandervl Exp $ */
    22
    33/*
     
    373373ULONG DartWaveIn::getPosition()
    374374{
    375  MCI_STATUS_PARMS mciStatus = {0};
    376  ULONG rc, nrbytes;
     375    MCI_STATUS_PARMS mciStatus = {0};
     376    ULONG rc, nrbytes;
    377377
    378378    mciStatus.ulItem = MCI_STATUS_POSITION;
     
    389389int DartWaveIn::getNumDevices()
    390390{
    391  MCI_GENERIC_PARMS  GenericParms;
    392  MCI_AMP_OPEN_PARMS AmpOpenParms;
    393  APIRET rc;
     391    MCI_GENERIC_PARMS  GenericParms;
     392    MCI_AMP_OPEN_PARMS AmpOpenParms;
     393    APIRET rc;
    394394
    395395   // Setup the open structure, pass the playlist and tell MCI_OPEN to use it
     
    421421                             ULONG nSamplesPerSec, ULONG wBitsPerSample)
    422422{
    423  MCI_WAVE_GETDEVCAPS_PARMS mciAudioCaps;
    424  MCI_GENERIC_PARMS    GenericParms;
    425  MCI_OPEN_PARMS       mciOpenParms;         /* open parms for MCI_OPEN             */
    426  int i, freqbits = 0;
    427  ULONG rc, DeviceId;
    428  BOOL winrc;
    429 
    430   dprintf(("DartWaveIn::queryFormat %x srate=%d, nchan=%d, bps=%d", formatTag, nSamplesPerSec, nChannels, wBitsPerSample));
    431 
    432   memset(&mciOpenParms,            /* Object to fill with zeros.       */
    433          0,                        /* Value to place into the object.  */
    434          sizeof( mciOpenParms ) ); /* How many zero's to use.          */
    435 
    436   mciOpenParms.pszDeviceType = (PSZ)MCI_DEVTYPE_WAVEFORM_AUDIO;
    437 
    438   rc = mymciSendCommand( (USHORT) 0,
    439                        MCI_OPEN,
    440                        MCI_WAIT | MCI_OPEN_TYPE_ID,
    441                        (PVOID) &mciOpenParms,
    442                        0);
    443   if((rc & 0xFFFF) != MCIERR_SUCCESS) {
     423    MCI_WAVE_GETDEVCAPS_PARMS mciAudioCaps;
     424    MCI_GENERIC_PARMS    GenericParms;
     425    MCI_OPEN_PARMS       mciOpenParms;         /* open parms for MCI_OPEN             */
     426    int i, freqbits = 0;
     427    ULONG rc, DeviceId;
     428    BOOL winrc;
     429
     430    dprintf(("DartWaveIn::queryFormat %x srate=%d, nchan=%d, bps=%d", formatTag, nSamplesPerSec, nChannels, wBitsPerSample));
     431
     432    memset(&mciOpenParms,            /* Object to fill with zeros.       */
     433           0,                        /* Value to place into the object.  */
     434           sizeof( mciOpenParms ) ); /* How many zero's to use.          */
     435
     436    mciOpenParms.pszDeviceType = (PSZ)MCI_DEVTYPE_WAVEFORM_AUDIO;
     437
     438    rc = mymciSendCommand( (USHORT) 0,
     439                          MCI_OPEN,
     440                          MCI_WAIT | MCI_OPEN_TYPE_ID,
     441                          (PVOID) &mciOpenParms,
     442                          0);
     443    if((rc & 0xFFFF) != MCIERR_SUCCESS) {
    444444        mciError(rc);
    445445        return(FALSE);
    446   }
    447   DeviceId = mciOpenParms.usDeviceID;
    448 
    449   memset( &mciAudioCaps , 0, sizeof(MCI_WAVE_GETDEVCAPS_PARMS));
    450 
    451   mciAudioCaps.ulBitsPerSample = wBitsPerSample;
    452   mciAudioCaps.ulFormatTag     = DATATYPE_WAVEFORM;
    453   mciAudioCaps.ulSamplesPerSec = nSamplesPerSec;
    454   mciAudioCaps.ulChannels      = nChannels;
    455   mciAudioCaps.ulFormatMode    = MCI_RECORD;
    456   mciAudioCaps.ulItem          = MCI_GETDEVCAPS_WAVE_FORMAT;
    457 
    458   rc = mymciSendCommand(DeviceId,   /* Device ID    */
    459                       MCI_GETDEVCAPS,
    460                       MCI_WAIT | MCI_GETDEVCAPS_EXTENDED | MCI_GETDEVCAPS_ITEM,
    461                       (PVOID) &mciAudioCaps,
    462                       0);
    463   if((rc & 0xFFFF) != MCIERR_SUCCESS) {
     446    }
     447    DeviceId = mciOpenParms.usDeviceID;
     448
     449    memset( &mciAudioCaps , 0, sizeof(MCI_WAVE_GETDEVCAPS_PARMS));
     450
     451    mciAudioCaps.ulBitsPerSample = wBitsPerSample;
     452    mciAudioCaps.ulFormatTag     = DATATYPE_WAVEFORM;
     453    mciAudioCaps.ulSamplesPerSec = nSamplesPerSec;
     454    mciAudioCaps.ulChannels      = nChannels;
     455    mciAudioCaps.ulFormatMode    = MCI_RECORD;
     456    mciAudioCaps.ulItem          = MCI_GETDEVCAPS_WAVE_FORMAT;
     457
     458    rc = mymciSendCommand(DeviceId,   /* Device ID    */
     459                          MCI_GETDEVCAPS,
     460                          MCI_WAIT | MCI_GETDEVCAPS_EXTENDED | MCI_GETDEVCAPS_ITEM,
     461                          (PVOID) &mciAudioCaps,
     462                          0);
     463    if((rc & 0xFFFF) != MCIERR_SUCCESS) {
    464464        mciError(rc);
    465465        winrc = FALSE;
    466   }
    467   else  winrc = TRUE;
    468 
    469   // Close the device
    470   mymciSendCommand(DeviceId,MCI_CLOSE,MCI_WAIT,(PVOID)&GenericParms,0);
    471   return(winrc);
     466    }
     467    else  winrc = TRUE;
     468
     469    // Close the device
     470    mymciSendCommand(DeviceId,MCI_CLOSE,MCI_WAIT,(PVOID)&GenericParms,0);
     471    return(winrc);
    472472}
    473473/******************************************************************************/
     
    489489void DartWaveIn::handler(ULONG ulStatus, PMCI_MIX_BUFFER pBuffer, ULONG ulFlags)
    490490{
    491  ULONG    buflength, bufpos, bytestocopy;
    492  WAVEHDR *whdr, *prevhdr = NULL;
     491    ULONG    buflength, bufpos, bytestocopy;
    493492
    494493    dprintf2(("WINMM: DartWaveIn handler %x\n", pBuffer));
     
    507506    wmutex.enter();
    508507
    509     whdr = wavehdr;
    510     if(whdr == NULL) {
     508    if(wavehdr == NULL) {
    511509        wmutex.leave();
    512510        //last buffer recorded -> no new ones -> overrun
     
    520518    while(buflength) {
    521519        if(wavehdr) {
     520            dprintf2(("WINMM: DartWaveIn handler: bytes recorded %d, buffer length %d, room %d", buflength, wavehdr->dwBufferLength, wavehdr->dwBytesRecorded));
    522521            bytestocopy = min(buflength, wavehdr->dwBufferLength - wavehdr->dwBytesRecorded);
    523522            if(bytestocopy) {
     
    532531            if(wavehdr->dwBytesRecorded == wavehdr->dwBufferLength)
    533532            {
     533                WAVEHDR *whdr = wavehdr;
     534
    534535                dprintf2(("WINMM: DartWaveIn handler buf %X done\n", whdr));
    535536                whdr->dwFlags |= WHDR_DONE;
     
    552553    // MCI_MIXSETUP_PARMS->pMixWrite does alter FS: selector!
    553554    USHORT selTIB = GetFS(); // save current FS selector
    554     MixSetupParms->pmixWrite(MixSetupParms->ulMixHandle, pBuffer, 1);
     555    MixSetupParms->pmixRead(MixSetupParms->ulMixHandle, pBuffer, 1);
    555556    SetFS(selTIB);           // switch back to the saved FS selector
    556557}
  • trunk/src/winmm/waveout.cpp

    r8470 r8508  
    1 /* $Id: waveout.cpp,v 1.23 2002-05-22 15:50:26 sandervl Exp $ */
     1/* $Id: waveout.cpp,v 1.24 2002-05-28 14:09:25 sandervl Exp $ */
    22//#undef DEBUG
    33/*
     
    4949        return(WAVERR_BADFORMAT);
    5050
    51     if(fdwOpen == WAVE_FORMAT_QUERY)
     51    if(fdwOpen & WAVE_FORMAT_QUERY)
    5252    {
    5353        if(DartWaveOut::queryFormat(pwfx->wFormatTag, pwfx->nChannels, pwfx->nSamplesPerSec,
Note: See TracChangeset for help on using the changeset viewer.