Changeset 147 for sbliveos2/trunk/drv16/ioctl.cpp
- Timestamp:
- Apr 24, 2000, 9:45:21 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sbliveos2/trunk/drv16/ioctl.cpp
r142 r147 131 131 break; 132 132 #if 0 133 case AUDIOHW_FMSYNTH_CAPTURE:134 case AUDIOHW_FMSYNTH_PLAY:135 case AUDIOHW_MPU401_CAPTURE:136 133 case AUDIOHW_MPU401_PLAY: 137 pstream = new MIDISTREAM(HardwareType );134 pstream = new MIDISTREAM(HardwareType, prp->s.ioctl.usSysFileNum); 138 135 break; 139 136 #endif … … 204 201 LPMCI_TRACK_INFO pMasterVol; 205 202 PSTREAM pStream; 203 ULONG volume; 206 204 207 205 if (p->usIOCtlRequest != AUDIO_CHANGE) { … … 239 237 pStream->SetBalance(pAudChange->lBalance); 240 238 241 if(pAudChange->lVolume != AUDIO_IGNORE) 242 pStream->SetVolume(pAudChange->lVolume); 239 if(pAudChange->lVolume != AUDIO_IGNORE) { 240 // stream volume ranges from 0 to 0x7FFFFFFF (linear) 241 volume = pAudChange->lVolume >> 16UL; 242 volume = (volume*100UL)/0x7FFFUL; 243 dprintf(("Set stream volume of %x to %d", prp->s.ioctl.usSysFileNum, volume)); 244 pStream->SetVolume(MAKE_VOLUME_LR(volume, volume)); 245 } 243 246 244 247 if(pMasterVol && pMasterVol->usMasterVolume != AUDIO_IGNORE) { 245 248 // master volume ranges from 0 to 0x7FFF (linear) 246 ULONG volume = pMasterVol->usMasterVolume; 247 249 volume = pMasterVol->usMasterVolume; 248 250 volume = (volume*100UL)/0x7FFFUL; 249 251 if(volume > 100) { 250 252 volume = 100; 251 253 } 252 volume = (((USHORT)volume << 16) | (USHORT)volume); 253 pStream->SetMasterVol(volume); 254 } 255 for(int i=0;i<8;i++) 256 { 257 switch(pAudChange->rInputList[0].ulDevType) { 258 case NULL_INPUT: 259 break; //continue; 260 case STEREO_LINE_INPUT: 261 case LEFT_LINE_INPUT: 262 case RIGHT_LINE_INPUT: 263 pStream->SetInputSrc(MIX_RECSRC_LINE); 264 break; 265 266 case MIC_INPUT: 267 case BOOSTED_MIC_INPUT: 268 pStream->SetInputSrc(MIX_RECSRC_MIC); 269 break; 270 271 case PHONE_LINE_INPUT: 272 case HANDSET_INPUT: 273 case SYNTH_INPUT: 274 case DIGITAL_PHONE_LINE_INPUT: 275 case DIGITAL_HANDSET_INPUT: 276 case MIDI_IN_PORT: 277 // case LOOPBACK: 278 pStream->SetInputSrc(MIX_RECSRC_MIXER); 279 break; 280 } 281 } 282 pStream->SetInputGain(pAudChange->lGain); 254 dprintf(("Set mastervolume to %d", volume)); 255 pStream->SetMasterVol(MAKE_VOLUME_LR(volume, volume)); 256 } 257 if(!fRecSrcIOCTL90) { 258 for(int i=0;i<8;i++) 259 { 260 switch(pAudChange->rInputList[0].ulDevType) { 261 case NULL_INPUT: 262 break; //continue; 263 case STEREO_LINE_INPUT: 264 case LEFT_LINE_INPUT: 265 case RIGHT_LINE_INPUT: 266 pStream->SetInputSrc(MIX_RECSRC_LINE); 267 break; 268 269 case MIC_INPUT: 270 case BOOSTED_MIC_INPUT: 271 pStream->SetInputSrc(MIX_RECSRC_MIC); 272 break; 273 274 case PHONE_LINE_INPUT: 275 case HANDSET_INPUT: 276 case SYNTH_INPUT: 277 case DIGITAL_PHONE_LINE_INPUT: 278 case DIGITAL_HANDSET_INPUT: 279 case MIDI_IN_PORT: 280 // case LOOPBACK: 281 pStream->SetInputSrc(MIX_RECSRC_MIXER); 282 break; 283 } 284 } 285 } 286 if(!fRecGainIOCTL90 && pAudChange->lGain != AUDIO_IGNORE) { 287 // input ranges from 0 to 0x7FFFFFFF (linear) 288 volume = pAudChange->lGain >> 16UL; 289 volume = (volume*100UL)/0x7FFFUL; 290 if(volume > 100) { 291 volume = 100; 292 } 293 dprintf(("Set input gain of %x to %d", prp->s.ioctl.usSysFileNum, volume)); 294 pStream->SetInputGain(MAKE_VOLUME_LR(volume, volume)); 295 } 283 296 } 284 297 //****************************************************************************** … … 322 335 switch(prp->s.ioctl.bCode) { 323 336 case MICSET: 324 OSS16_SetGlobalVol(prp->s.ioctl.usSysFileNum, MIX_SETMICVOL, MAKE_VOLUME (VolumeL, VolumeR));337 OSS16_SetGlobalVol(prp->s.ioctl.usSysFileNum, MIX_SETMICVOL, MAKE_VOLUME_LR(VolumeL, VolumeR)); 325 338 break; 326 339 case LINESET: 327 OSS16_SetGlobalVol(prp->s.ioctl.usSysFileNum, MIX_SETLINEINVOL, MAKE_VOLUME (VolumeL, VolumeR));340 OSS16_SetGlobalVol(prp->s.ioctl.usSysFileNum, MIX_SETLINEINVOL, MAKE_VOLUME_LR(VolumeL, VolumeR)); 328 341 break; 329 342 case CDSET: 330 OSS16_SetGlobalVol(prp->s.ioctl.usSysFileNum, MIX_SETCDVOL, MAKE_VOLUME (VolumeL, VolumeR));343 OSS16_SetGlobalVol(prp->s.ioctl.usSysFileNum, MIX_SETCDVOL, MAKE_VOLUME_LR(VolumeL, VolumeR)); 331 344 break; 332 345 case VIDEOSET: 333 OSS16_SetGlobalVol(prp->s.ioctl.usSysFileNum, MIX_SETVIDEOVOL, MAKE_VOLUME (VolumeL, VolumeR));346 OSS16_SetGlobalVol(prp->s.ioctl.usSysFileNum, MIX_SETVIDEOVOL, MAKE_VOLUME_LR(VolumeL, VolumeR)); 334 347 break; 335 348 case AUXSET: 336 OSS16_SetGlobalVol(prp->s.ioctl.usSysFileNum, MIX_SETAUXVOL, MAKE_VOLUME (VolumeL, VolumeR));349 OSS16_SetGlobalVol(prp->s.ioctl.usSysFileNum, MIX_SETAUXVOL, MAKE_VOLUME_LR(VolumeL, VolumeR)); 337 350 break; 338 351 339 352 case BASSTREBLESET: 340 OSS16_SetGlobalVol(prp->s.ioctl.usSysFileNum, MIX_SETBASS, MAKE_VOLUME (VolumeL, VolumeL));341 OSS16_SetGlobalVol(prp->s.ioctl.usSysFileNum, MIX_SETTREBLE, MAKE_VOLUME (VolumeR, VolumeR));353 OSS16_SetGlobalVol(prp->s.ioctl.usSysFileNum, MIX_SETBASS, MAKE_VOLUME_LR(VolumeL, VolumeL)); 354 OSS16_SetGlobalVol(prp->s.ioctl.usSysFileNum, MIX_SETTREBLE, MAKE_VOLUME_LR(VolumeR, VolumeR)); 342 355 break; 343 356 #if 0 … … 349 362 } 350 363 fStreamVolIOCTL90 = TRUE; 351 OSS16_SetGlobalVol(prp->s.ioctl.usSysFileNum, MIX_SETMASTERVOL, MAKE_VOLUME (VolumeL, VolumeR));364 OSS16_SetGlobalVol(prp->s.ioctl.usSysFileNum, MIX_SETMASTERVOL, MAKE_VOLUME_LR(VolumeL, VolumeR)); 352 365 break; 353 366 #endif … … 395 408 } 396 409 fRecGainIOCTL90 = TRUE; 397 OSS16_SetGlobalVol(prp->s.ioctl.usSysFileNum, MIX_SETINPUTGAIN, MAKE_VOLUME (VolumeL, VolumeR));410 OSS16_SetGlobalVol(prp->s.ioctl.usSysFileNum, MIX_SETINPUTGAIN, MAKE_VOLUME_LR(VolumeL, VolumeR)); 398 411 break; 399 412 … … 427 440 428 441 case GETAPIMAP: 429 if(DevHelp_VerifyAccess(SELECTOROF(pIoctlMap), 256, OFFSETOF(pIoctlMap), VERIFY_READWRITE))442 if(DevHelp_VerifyAccess(SELECTOROF(pIoctlMap), sizeof(SBLiveIOCTLMap), OFFSETOF(pIoctlMap), VERIFY_READWRITE)) 430 443 { 431 444 dprintf(("Invalid IOCTL90 pointer %lx!!", (ULONG)pMixStruct));
Note:
See TracChangeset
for help on using the changeset viewer.