Lines Matching defs:pDSoundStrmOut

297 static void dsoundPlayInterfaceRelease(PDSOUNDSTREAMOUT pDSoundStrmOut)
299 if (pDSoundStrmOut->pDS)
301 IDirectSound_Release(pDSoundStrmOut->pDS);
302 pDSoundStrmOut->pDS = NULL;
306 static int dsoundPlayInterfaceCreate(PDRVHOSTDSOUND pThis, PDSOUNDSTREAMOUT pDSoundStrmOut)
308 if (pDSoundStrmOut->pDS != NULL)
315 IID_IDirectSound, (void **)&pDSoundStrmOut->pDS);
322 hr = IDirectSound_Initialize(pDSoundStrmOut->pDS, pThis->cfg.pGuidPlay);
326 hr = IDirectSound_SetCooperativeLevel(pDSoundStrmOut->pDS, hwnd, DSSCL_PRIORITY);
342 dsoundPlayInterfaceRelease(pDSoundStrmOut);
349 static void dsoundPlayClose(PDSOUNDSTREAMOUT pDSoundStrmOut)
351 DSLOG(("DSound: playback close %p buffer %p\n", pDSoundStrmOut, pDSoundStrmOut->pDSB));
353 if (pDSoundStrmOut->pDSB)
355 HRESULT hr = IDirectSoundBuffer_Stop(pDSoundStrmOut->pDSB);
361 IDirectSoundBuffer_Release(pDSoundStrmOut->pDSB);
362 pDSoundStrmOut->pDSB = NULL;
365 dsoundPlayInterfaceRelease(pDSoundStrmOut);
368 static int dsoundPlayOpen(PDRVHOSTDSOUND pThis, PDSOUNDSTREAMOUT pDSoundStrmOut)
371 pDSoundStrmOut,
373 pDSoundStrmOut->hw.Props.uHz,
374 pDSoundStrmOut->hw.Props.cChannels,
375 pDSoundStrmOut->hw.Props.cBits,
376 pDSoundStrmOut->hw.Props.fSigned));
378 if (pDSoundStrmOut->pDSB != NULL)
382 dsoundPlayClose(pDSoundStrmOut);
386 int rc = dsoundWaveFmtFromCfg(&pDSoundStrmOut->streamCfg, &wfx);
390 rc = dsoundPlayInterfaceCreate(pThis, pDSoundStrmOut);
404 hr = IDirectSound_CreateSoundBuffer(pDSoundStrmOut->pDS,
405 &bd, &pDSoundStrmOut->pDSB, NULL);
414 hr = IDirectSoundBuffer_GetFormat(pDSoundStrmOut->pDSB, &wfx, sizeof(wfx), NULL);
424 hr = IDirectSoundBuffer_GetCaps(pDSoundStrmOut->pDSB, &bc);
448 if (bc.dwBufferBytes & pDSoundStrmOut->hw.Props.uAlign)
451 bc.dwBufferBytes, pDSoundStrmOut->hw.Props.uAlign + 1));
464 pDSoundStrmOut->csPlaybackBufferSize = bc.dwBufferBytes >> pDSoundStrmOut->hw.Props.cShift;
465 DSLOG(("DSound: playback open csPlaybackBufferSize %d samples\n", pDSoundStrmOut->csPlaybackBufferSize));
471 dsoundPlayClose(pDSoundStrmOut);
475 static void dsoundPlayClearSamples(PDSOUNDSTREAMOUT pDSoundStrmOut)
479 int rc = dsoundLockOutput(pDSoundStrmOut->pDSB, &pDSoundStrmOut->hw.Props,
480 0, pDSoundStrmOut->csPlaybackBufferSize << pDSoundStrmOut->hw.Props.cShift,
484 int len1 = cb1 >> pDSoundStrmOut->hw.Props.cShift;
485 int len2 = cb2 >> pDSoundStrmOut->hw.Props.cShift;
488 audio_pcm_info_clear_buf(&pDSoundStrmOut->hw.Props, pv1, len1);
491 audio_pcm_info_clear_buf(&pDSoundStrmOut->hw.Props, pv2, len2);
493 dsoundUnlockOutput(pDSoundStrmOut->pDSB, pv1, pv2, cb1, cb2);
532 static void dsoundPlayStop(PDRVHOSTDSOUND pThis, PDSOUNDSTREAMOUT pDSoundStrmOut)
534 if (pDSoundStrmOut->pDSB != NULL)
538 dsoundPlayGetStatus(pDSoundStrmOut->pDSB, &dwStatus);
542 HRESULT hr = IDirectSoundBuffer_Stop(pDSoundStrmOut->pDSB);
550 static int dsoundPlayStart(PDSOUNDSTREAMOUT pDSoundStrmOut)
554 if (pDSoundStrmOut->pDSB != NULL)
557 int rc = dsoundPlayGetStatus(pDSoundStrmOut->pDSB, &dwStatus);
570 dsoundPlayClearSamples(pDSoundStrmOut);
572 pDSoundStrmOut->fReinitPlayPos = true;
576 HRESULT hr = IDirectSoundBuffer_Play(pDSoundStrmOut->pDSB, 0, 0, DSBPLAY_LOOPING);
988 PDSOUNDSTREAMOUT pDSoundStrmOut = (PDSOUNDSTREAMOUT)pHstStrmOut;
990 pDSoundStrmOut->streamCfg = *pCfg;
991 pDSoundStrmOut->streamCfg.enmEndianness = PDMAUDIOHOSTENDIANNESS;
993 int rc = drvAudioStreamCfgToProps(&pDSoundStrmOut->streamCfg, &pDSoundStrmOut->hw.Props);
996 pDSoundStrmOut->pDS = NULL;
997 pDSoundStrmOut->pDSB = NULL;
998 pDSoundStrmOut->cbPlayWritePos = 0;
999 pDSoundStrmOut->fReinitPlayPos = true;
1000 pDSoundStrmOut->csPlaybackBufferSize = 0;
1006 dsoundPlayOpen(pThis, pDSoundStrmOut);
1010 RT_ZERO(pDSoundStrmOut->streamCfg);
1026 PDSOUNDSTREAMOUT pDSoundStrmOut = (PDSOUNDSTREAMOUT)pHstStrmOut;
1034 rc = dsoundPlayStart(pDSoundStrmOut);
1037 dsoundPlayClose(pDSoundStrmOut);
1038 dsoundPlayOpen(pThis, pDSoundStrmOut);
1040 rc = dsoundPlayStart(pDSoundStrmOut);
1046 dsoundPlayStop(pThis, pDSoundStrmOut);
1065 PDSOUNDSTREAMOUT pDSoundStrmOut = (PDSOUNDSTREAMOUT)pHstStrmOut;
1066 LPDIRECTSOUNDBUFFER pDSB = pDSoundStrmOut->pDSB;
1078 DWORD cbBuffer = pDSoundStrmOut->csPlaybackBufferSize << cShift;
1111 if (pDSoundStrmOut->fReinitPlayPos)
1113 pDSoundStrmOut->fReinitPlayPos = false;
1115 pDSoundStrmOut->cbPlayWritePos = cbWritePos;
1117 cbPlayWritePos = pDSoundStrmOut->cbPlayWritePos;
1122 if (pDSoundStrmOut->cbPlayWritePos == cbPlayPos)
1130 cbPlayWritePos = pDSoundStrmOut->cbPlayWritePos;
1185 pDSoundStrmOut->cbPlayWritePos = (cbPlayWritePos + (cReadTotal << cShift)) % cbBuffer;
1190 cbPlayWritePos, pDSoundStrmOut->cbPlayWritePos, rc));
1207 PDSOUNDSTREAMOUT pDSoundStrmOut = (PDSOUNDSTREAMOUT)pHstStrmOut;
1209 dsoundPlayClose(pDSoundStrmOut);
1211 pDSoundStrmOut->cbPlayWritePos = 0;
1212 pDSoundStrmOut->fReinitPlayPos = true;
1213 pDSoundStrmOut->csPlaybackBufferSize = 0;
1214 RT_ZERO(pDSoundStrmOut->streamCfg);