Changeset 53624 in vbox for trunk/src/VBox/Devices/Audio
- Timestamp:
- Dec 31, 2014 2:59:44 PM (10 years ago)
- Location:
- trunk/src/VBox/Devices/Audio
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Audio/DevIchAc97.cpp
r53567 r53624 2092 2092 2093 2093 /* 2094 * For now we always set the driver at LUN 0 as our primary 2094 * For now we always set the driver at LUN 0 as our primary 2095 2095 * host backend. This might change in the future. 2096 2096 */ … … 2100 2100 LogFunc(("LUN #%u: pCon=%p, drvFlags=0x%x\n", 2101 2101 uLUN, pDrv->pConnector, pDrv->Flags)); 2102 2102 2103 2103 pThis->paDrv[uLUN] = pDrv; 2104 2104 pThis->cLUNs++; … … 2273 2273 size_t len = 0; 2274 2274 if (!pCon->pfnIsInputOK (pCon, pDrv->pStrmIn)) 2275 len = RTStrPrintf(szMissingStreams, 2275 len = RTStrPrintf(szMissingStreams, 2276 2276 sizeof(szMissingStreams), "PCM Input"); 2277 2277 if (!pCon->pfnIsOutputOK(pCon, pDrv->pStrmOut)) 2278 len += RTStrPrintf(szMissingStreams + len, 2278 len += RTStrPrintf(szMissingStreams + len, 2279 2279 sizeof(szMissingStreams) - len, len ? ", PCM Output" : "PCM Output"); 2280 2280 if (!pCon->pfnIsInputOK (pCon, pDrv->pStrmMic)) 2281 len += RTStrPrintf(szMissingStreams + len, 2281 len += RTStrPrintf(szMissingStreams + len, 2282 2282 sizeof(szMissingStreams) - len, len ? ", PCM Mic" : "PCM Mic"); 2283 2283 -
trunk/src/VBox/Devices/Audio/DevIchHda.cpp
r53567 r53624 2044 2044 AssertMsg((cbCopied == pBdle->cbUnderFifoW + cbArranged2Copy), /* we assume that we write the entire buffer including unreported bytes */ 2045 2045 ("cbCopied=%RU32 != pBdle->cbUnderFifoW=%RU32 + cbArranged2Copy=%RU32\n", 2046 cbCopied, pBdle->cbUnderFifoW, cbArranged2Copy)); 2046 cbCopied, pBdle->cbUnderFifoW, cbArranged2Copy)); 2047 2047 if ( pBdle->cbUnderFifoW 2048 2048 && pBdle->cbUnderFifoW <= cbCopied) … … 2300 2300 for (uint8_t lun = 0; lun < 1; lun++) 2301 2301 { 2302 # endif 2302 # endif 2303 2303 rc = pThis->paDrv[lun]->pConnector->pfnWrite(pThis->paDrv[lun]->pConnector, pThis->paDrv[lun]->pGstStrmOut, 2304 2304 pBdle->au8HdaBuffer, cb2Copy + pBdle->cbUnderFifoW, … … 3562 3562 3563 3563 /* 3564 * For now we always set the driver at LUN 0 as our primary 3564 * For now we always set the driver at LUN 0 as our primary 3565 3565 * host backend. This might change in the future. 3566 3566 */ -
trunk/src/VBox/Devices/Audio/DrvAudio.cpp
r53567 r53624 682 682 if (RT_FAILURE(rc)) 683 683 { 684 LogFunc(("Failed to add host audio input stream \"%s\", rc=%Rrc\n", 684 LogFunc(("Failed to add host audio input stream \"%s\", rc=%Rrc\n", 685 685 pszName, rc)); 686 686 … … 1593 1593 } 1594 1594 1595 static DECLCALLBACK(bool) drvAudioIsInputOK(PPDMIAUDIOCONNECTOR pInterface, 1595 static DECLCALLBACK(bool) drvAudioIsInputOK(PPDMIAUDIOCONNECTOR pInterface, 1596 1596 PPDMAUDIOGSTSTRMIN pGstStrmIn) 1597 1597 { … … 1599 1599 } 1600 1600 1601 static DECLCALLBACK(bool) drvAudioIsOutputOK(PPDMIAUDIOCONNECTOR pInterface, 1601 static DECLCALLBACK(bool) drvAudioIsOutputOK(PPDMIAUDIOCONNECTOR pInterface, 1602 1602 PPDMAUDIOGSTSTRMOUT pGstStrmOut) 1603 1603 { … … 1769 1769 } 1770 1770 #endif 1771 } 1771 } 1772 1772 1773 1773 LogFlowFuncLeaveRC(rc); -
trunk/src/VBox/Devices/Audio/DrvHostOSSAudio.cpp
- Property svn:executable deleted
-
Property svn:eol-style
set to
native
-
Property svn:keywords
set to
Id Revision
r53567 r53624 103 103 } OSSAUDIOCFG, *POSSAUDIOCFG; 104 104 105 static OSSAUDIOCFG s_OSSConf = 105 static OSSAUDIOCFG s_OSSConf = 106 106 { 107 107 #ifndef RT_OS_L4 … … 156 156 } 157 157 158 static int drvHostOSSAudioOSSToFmt(int fmt, 158 static int drvHostOSSAudioOSSToFmt(int fmt, 159 159 PDMAUDIOFMT *pFmt, PDMAUDIOENDIANESS *pEndianess) 160 160 { … … 213 213 if (close(*phFile)) 214 214 { 215 LogRel(("OSS: Closing descriptor failed: %s\n", 215 LogRel(("OSS: Closing descriptor failed: %s\n", 216 216 strerror(errno))); 217 217 rc = VERR_GENERAL_FAILURE; /** @todo */ … … 226 226 } 227 227 228 static int drvHostOSSAudioOpen(bool fIn, 228 static int drvHostOSSAudioOpen(bool fIn, 229 229 POSSAUDIOSTREAMCFG pReq, POSSAUDIOSTREAMCFG pObt, 230 230 int *phFile) … … 237 237 int hFile; 238 238 239 do 239 do 240 240 { 241 241 const char *pszDev = fIn ? s_OSSConf.devpath_in : s_OSSConf.devpath_out; 242 242 if (!pszDev) 243 243 { 244 LogRel(("OSS: Invalid or no %s device name set\n", 244 LogRel(("OSS: Invalid or no %s device name set\n", 245 245 fIn ? "input" : "output")); 246 246 rc = VERR_INVALID_PARAMETER; … … 249 249 250 250 hFile = open(pszDev, (fIn ? O_RDONLY : O_WRONLY) | O_NONBLOCK); 251 if (hFile == -1) 251 if (hFile == -1) 252 252 { 253 253 LogRel(("OSS: Failed to open %s: %s\n", pszDev, strerror(errno))); … … 257 257 258 258 int iFormat = drvHostOSSAudioFmtToOSS(pReq->enmFormat); 259 if (ioctl(hFile, SNDCTL_DSP_SAMPLESIZE, &iFormat)) 259 if (ioctl(hFile, SNDCTL_DSP_SAMPLESIZE, &iFormat)) 260 260 { 261 261 LogRel(("OSS: Failed to set audio format to %ld\n", … … 264 264 break; 265 265 } 266 266 267 267 int cChannels = pReq->cChannels; 268 if (ioctl(hFile, SNDCTL_DSP_CHANNELS, &cChannels)) 268 if (ioctl(hFile, SNDCTL_DSP_CHANNELS, &cChannels)) 269 269 { 270 270 LogRel(("OSS: Failed to set number of audio channels (%d): %s\n", … … 275 275 276 276 int freq = pReq->uFreq; 277 if (ioctl(hFile, SNDCTL_DSP_SPEED, &freq)) 278 { 279 LogRel(("OSS: Failed to set audio frequency (%dHZ): %s\n", 277 if (ioctl(hFile, SNDCTL_DSP_SPEED, &freq)) 278 { 279 LogRel(("OSS: Failed to set audio frequency (%dHZ): %s\n", 280 280 pReq->uFreq, strerror(errno))); 281 281 rc = RTErrConvertFromErrno(errno); … … 285 285 /* Obsolete on Solaris (using O_NONBLOCK is sufficient). */ 286 286 #if !(defined(VBOX) && defined(RT_OS_SOLARIS)) 287 if (ioctl(hFile, SNDCTL_DSP_NONBLOCK)) 287 if (ioctl(hFile, SNDCTL_DSP_NONBLOCK)) 288 288 { 289 289 LogRel(("OSS: Failed to set non-blocking mode: %s\n", … … 294 294 #endif 295 295 int mmmmssss = (pReq->cFragments << 16) | lsbindex(pReq->cbFragmentSize); 296 if (ioctl(hFile, SNDCTL_DSP_SETFRAGMENT, &mmmmssss)) 296 if (ioctl(hFile, SNDCTL_DSP_SETFRAGMENT, &mmmmssss)) 297 297 { 298 298 LogRel(("OSS: Failed to set %RU16 fragments to %RU32 bytes each: %s\n", … … 303 303 304 304 audio_buf_info abinfo; 305 if (ioctl(hFile, fIn ? SNDCTL_DSP_GETISPACE : SNDCTL_DSP_GETOSPACE, 306 &abinfo)) 305 if (ioctl(hFile, fIn ? SNDCTL_DSP_GETISPACE : SNDCTL_DSP_GETOSPACE, 306 &abinfo)) 307 307 { 308 308 LogRel(("OSS: Failed to retrieve buffer length: %s\n", strerror(errno))); … … 311 311 } 312 312 313 rc = drvHostOSSAudioOSSToFmt(iFormat, 313 rc = drvHostOSSAudioOSSToFmt(iFormat, 314 314 &pObt->enmFormat, &pObt->enmEndianess); 315 if (RT_SUCCESS(rc)) 315 if (RT_SUCCESS(rc)) 316 316 { 317 317 pObt->cChannels = cChannels; … … 323 323 } 324 324 } 325 while (0); 326 327 if (RT_FAILURE(rc)) 325 while (0); 326 327 if (RT_FAILURE(rc)) 328 328 drvHostOSSAudioClose(&hFile); 329 329 … … 364 364 case PDMAUDIOSTREAMCMD_ENABLE: 365 365 { 366 audio_pcm_info_clear_buf(&pHstStrmOut->Props, 366 audio_pcm_info_clear_buf(&pHstStrmOut->Props, 367 367 pThisStrmOut->pvPCMBuf, audioMixBufSize(&pHstStrmOut->MixBuf)); 368 368 369 369 mask = PCM_ENABLE_OUTPUT; 370 if (ioctl(pThisStrmOut->hFile, SNDCTL_DSP_SETTRIGGER, &mask) < 0) 371 { 372 LogRel(("OSS: Failed to enable output stream: %s\n", 370 if (ioctl(pThisStrmOut->hFile, SNDCTL_DSP_SETTRIGGER, &mask) < 0) 371 { 372 LogRel(("OSS: Failed to enable output stream: %s\n", 373 373 strerror(errno))); 374 374 rc = RTErrConvertFromErrno(errno); … … 381 381 { 382 382 mask = 0; 383 if (ioctl(pThisStrmOut->hFile, SNDCTL_DSP_SETTRIGGER, &mask) < 0) 384 { 385 LogRel(("OSS: Failed to disable output stream: %s\n", 383 if (ioctl(pThisStrmOut->hFile, SNDCTL_DSP_SETTRIGGER, &mask) < 0) 384 { 385 LogRel(("OSS: Failed to disable output stream: %s\n", 386 386 strerror(errno))); 387 387 rc = RTErrConvertFromErrno(errno); … … 419 419 420 420 int rc = VINF_SUCCESS; 421 size_t cbToRead = RT_MIN(pThisStrmIn->cbBuf, 421 size_t cbToRead = RT_MIN(pThisStrmIn->cbBuf, 422 422 audioMixBufFreeBytes(&pHstStrmIn->MixBuf)); 423 423 … … 429 429 size_t offWrite = 0; 430 430 431 while (cbToRead) 431 while (cbToRead) 432 432 { 433 433 cbTemp = RT_MIN(cbToRead, pThisStrmIn->cbBuf); … … 438 438 cbRead, cbTemp, cbToRead)); 439 439 440 if (cbRead < 0) 441 { 442 switch (errno) 440 if (cbRead < 0) 441 { 442 switch (errno) 443 443 { 444 444 case 0: … … 455 455 456 456 default: 457 LogFlowFunc(("Failed to read %zu input frames, rc=%Rrc\n", 457 LogFlowFunc(("Failed to read %zu input frames, rc=%Rrc\n", 458 458 cbTemp, rc)); 459 459 rc = VERR_GENERAL_FAILURE; /** @todo */ … … 466 466 else if (cbRead) 467 467 { 468 uint32_t cWritten; 469 rc = audioMixBufWriteCirc(&pHstStrmIn->MixBuf, 468 uint32_t cWritten; 469 rc = audioMixBufWriteCirc(&pHstStrmIn->MixBuf, 470 470 pThisStrmIn->pvBuf, cbRead, 471 471 &cWritten); … … 514 514 LogFlowFuncEnter(); 515 515 516 if (pThisStrmIn->pvBuf) 516 if (pThisStrmIn->pvBuf) 517 517 { 518 518 RTMemFree(pThisStrmIn->pvBuf); … … 533 533 534 534 #ifndef RT_OS_L4 535 if (!pThisStrmOut->fMemMapped) 536 { 537 if (pThisStrmOut->pvPCMBuf) 535 if (!pThisStrmOut->fMemMapped) 536 { 537 if (pThisStrmOut->pvPCMBuf) 538 538 { 539 539 RTMemFree(pThisStrmOut->pvPCMBuf); … … 583 583 reqStream.cbFragmentSize = s_OSSConf.fragsize; 584 584 585 rc = drvHostOSSAudioOpen(true /* fIn */, 585 rc = drvHostOSSAudioOpen(true /* fIn */, 586 586 &reqStream, &obtStream, &hFile); 587 587 if (RT_SUCCESS(rc)) 588 588 { 589 if (obtStream.cFragments * obtStream.cbFragmentSize & pHstStrmIn->Props.uAlign) 589 if (obtStream.cFragments * obtStream.cbFragmentSize & pHstStrmIn->Props.uAlign) 590 590 LogRel(("OSS: Warning: Misaligned DAC output buffer: Size = %zu, Alignment = %u\n", 591 obtStream.cFragments * obtStream.cbFragmentSize, 591 obtStream.cFragments * obtStream.cbFragmentSize, 592 592 pHstStrmIn->Props.uAlign + 1)); 593 593 … … 601 601 602 602 rc = drvAudioStreamCfgToProps(&streamCfg, &pHstStrmIn->Props); 603 if (RT_SUCCESS(rc)) 604 { 605 cSamples = (obtStream.cFragments * obtStream.cbFragmentSize) 603 if (RT_SUCCESS(rc)) 604 { 605 cSamples = (obtStream.cFragments * obtStream.cbFragmentSize) 606 606 >> pHstStrmIn->Props.cShift; 607 607 if (!cSamples) … … 610 610 } 611 611 612 if (RT_SUCCESS(rc)) 612 if (RT_SUCCESS(rc)) 613 613 { 614 614 size_t cbBuf = cSamples * (1 << pHstStrmIn->Props.cShift); 615 615 pThisStrmIn->pvBuf = RTMemAlloc(cbBuf); 616 if (!pThisStrmIn->pvBuf) 616 if (!pThisStrmIn->pvBuf) 617 617 { 618 618 LogRel(("OSS: Failed allocating ADC buffer with %RU32 samples, each %d bytes\n", … … 629 629 } while (0); 630 630 631 if (RT_FAILURE(rc)) 631 if (RT_FAILURE(rc)) 632 632 drvHostOSSAudioClose(&hFile); 633 633 634 634 LogFlowFuncLeaveRC(rc); 635 635 return rc; … … 660 660 reqStream.cbFragmentSize = s_OSSConf.fragsize; 661 661 662 rc = drvHostOSSAudioOpen(false /* fIn */, 662 rc = drvHostOSSAudioOpen(false /* fIn */, 663 663 &reqStream, &obtStream, &hFile); 664 664 if (RT_SUCCESS(rc)) 665 665 { 666 if (obtStream.cFragments * obtStream.cbFragmentSize & pHstStrmOut->Props.uAlign) 666 if (obtStream.cFragments * obtStream.cbFragmentSize & pHstStrmOut->Props.uAlign) 667 667 LogRel(("OSS: Warning: Misaligned DAC output buffer: Size = %zu, Alignment = %u\n", 668 obtStream.cFragments * obtStream.cbFragmentSize, 668 obtStream.cFragments * obtStream.cbFragmentSize, 669 669 pHstStrmOut->Props.uAlign + 1)); 670 670 … … 678 678 679 679 rc = drvAudioStreamCfgToProps(&streamCfg, &pHstStrmOut->Props); 680 if (RT_SUCCESS(rc)) 681 cSamples = (obtStream.cFragments * obtStream.cbFragmentSize) 682 >> pHstStrmOut->Props.cShift; 680 if (RT_SUCCESS(rc)) 681 cSamples = (obtStream.cFragments * obtStream.cbFragmentSize) 682 >> pHstStrmOut->Props.cShift; 683 683 } 684 684 … … 687 687 #ifndef RT_OS_L4 688 688 pThisStrmOut->fMemMapped = false; 689 if (s_OSSConf.try_mmap) 689 if (s_OSSConf.try_mmap) 690 690 { 691 691 pThisStrmOut->pvPCMBuf = mmap(0, cSamples << pHstStrmOut->Props.cShift, 692 692 PROT_READ | PROT_WRITE, MAP_SHARED, hFile, 0); 693 if (pThisStrmOut->pvPCMBuf == MAP_FAILED) 693 if (pThisStrmOut->pvPCMBuf == MAP_FAILED) 694 694 { 695 LogRel(("OSS: Failed to memory map %zu bytes of DAC output file: %s\n", 695 LogRel(("OSS: Failed to memory map %zu bytes of DAC output file: %s\n", 696 696 cSamples << pHstStrmOut->Props.cShift, strerror(errno))); 697 697 rc = RTErrConvertFromErrno(errno); 698 698 break; 699 699 } 700 else 700 else 701 701 { 702 702 int mask = 0; 703 if (ioctl(hFile, SNDCTL_DSP_SETTRIGGER, &mask) < 0) 703 if (ioctl(hFile, SNDCTL_DSP_SETTRIGGER, &mask) < 0) 704 704 { 705 LogRel(("OSS: Failed to retrieve initial trigger mask: %s\n", 705 LogRel(("OSS: Failed to retrieve initial trigger mask: %s\n", 706 706 strerror(errno))); 707 707 rc = RTErrConvertFromErrno(errno); 708 708 /* Note: No break here, need to unmap file first! */ 709 709 } 710 else 710 else 711 711 { 712 712 mask = PCM_ENABLE_OUTPUT; 713 if (ioctl (hFile, SNDCTL_DSP_SETTRIGGER, &mask) < 0) 713 if (ioctl (hFile, SNDCTL_DSP_SETTRIGGER, &mask) < 0) 714 714 { 715 LogRel(("OSS: Failed to retrieve PCM_ENABLE_OUTPUT mask: %s\n", 715 LogRel(("OSS: Failed to retrieve PCM_ENABLE_OUTPUT mask: %s\n", 716 716 strerror(errno))); 717 717 rc = RTErrConvertFromErrno(errno); … … 722 722 } 723 723 724 if (!pThisStrmOut->fMemMapped) 724 if (!pThisStrmOut->fMemMapped) 725 725 { 726 int rc2 = munmap(pThisStrmOut->pvPCMBuf, 726 int rc2 = munmap(pThisStrmOut->pvPCMBuf, 727 727 cSamples << pHstStrmOut->Props.cShift); 728 728 if (rc2) 729 LogRel(("OSS: Failed to unmap DAC output file: %s\n", 729 LogRel(("OSS: Failed to unmap DAC output file: %s\n", 730 730 strerror(errno))); 731 731 … … 738 738 /* Memory mapping failed above? Try allocating an own buffer. */ 739 739 #ifndef RT_OS_L4 740 if (!pThisStrmOut->fMemMapped) 740 if (!pThisStrmOut->fMemMapped) 741 741 { 742 742 #endif 743 743 LogFlowFunc(("cSamples=%RU32\n", cSamples)); 744 744 pThisStrmOut->pvPCMBuf = RTMemAlloc(cSamples * (1 << pHstStrmOut->Props.cShift)); 745 if (!pThisStrmOut->pvPCMBuf) 745 if (!pThisStrmOut->pvPCMBuf) 746 746 { 747 747 LogRel(("OSS: Failed allocating DAC buffer with %RU32 samples, each %d bytes\n", … … 759 759 } while (0); 760 760 761 if (RT_FAILURE(rc)) 761 if (RT_FAILURE(rc)) 762 762 drvHostOSSAudioClose(&hFile); 763 763 764 764 LogFlowFuncLeaveRC(rc); 765 765 return rc; … … 782 782 size_t cbBuf = audioMixBufSizeBytes(&pHstStrmOut->MixBuf); 783 783 784 uint32_t cLive = drvAudioHstOutSamplesLive(pHstStrmOut, 784 uint32_t cLive = drvAudioHstOutSamplesLive(pHstStrmOut, 785 785 NULL /* pcStreamsLive */); 786 786 uint32_t cToRead; 787 787 788 788 #ifndef RT_OS_L4 789 if (pThisStrmOut->fMemMapped) 789 if (pThisStrmOut->fMemMapped) 790 790 { 791 791 /* Get current playback pointer. */ 792 792 int rc2 = ioctl(pThisStrmOut->hFile, SNDCTL_DSP_GETOPTR, &cntinfo); 793 if (!rc2) 794 { 795 LogRel(("OSS: Failed to retrieve current playback pointer: %s\n", 793 if (!rc2) 794 { 795 LogRel(("OSS: Failed to retrieve current playback pointer: %s\n", 796 796 strerror(errno))); 797 797 rc = RTErrConvertFromErrno(errno); … … 800 800 801 801 /* Nothing to play? */ 802 if (cntinfo.ptr == pThisStrmOut->old_optr) 802 if (cntinfo.ptr == pThisStrmOut->old_optr) 803 803 break; 804 804 … … 810 810 Assert(cbData); 811 811 812 cToRead = RT_MIN((uint32_t)AUDIOMIXBUF_B2S(&pHstStrmOut->MixBuf, cbData), 812 cToRead = RT_MIN((uint32_t)AUDIOMIXBUF_B2S(&pHstStrmOut->MixBuf, cbData), 813 813 cLive); 814 814 } 815 else 815 else 816 816 { 817 817 #endif 818 818 audio_buf_info abinfo; 819 819 int rc2 = ioctl(pThisStrmOut->hFile, SNDCTL_DSP_GETOSPACE, &abinfo); 820 if (rc2 < 0) 821 { 822 LogRel(("OSS: Failed to retrieve current playback buffer: %s\n", 820 if (rc2 < 0) 821 { 822 LogRel(("OSS: Failed to retrieve current playback buffer: %s\n", 823 823 strerror(errno))); 824 824 rc = RTErrConvertFromErrno(errno); … … 826 826 } 827 827 828 if ((size_t)abinfo.bytes > cbBuf) 828 if ((size_t)abinfo.bytes > cbBuf) 829 829 { 830 830 LogFlowFunc(("Warning: Invalid available size, size=%d, bufsize=%d\n", … … 842 842 } 843 843 844 cToRead = RT_MIN((uint32_t)AUDIOMIXBUF_B2S(&pHstStrmOut->MixBuf, abinfo.bytes), 844 cToRead = RT_MIN((uint32_t)AUDIOMIXBUF_B2S(&pHstStrmOut->MixBuf, abinfo.bytes), 845 845 cLive); 846 846 if (!cToRead) … … 855 855 while (cbToRead) 856 856 { 857 rc = audioMixBufReadCirc(&pHstStrmOut->MixBuf, 857 rc = audioMixBufReadCirc(&pHstStrmOut->MixBuf, 858 858 pThisStrmOut->pvPCMBuf, cbToRead, &cRead); 859 859 if (RT_FAILURE(rc)) … … 861 861 862 862 cbRead = AUDIOMIXBUF_S2B(&pHstStrmOut->MixBuf, cRead); 863 ssize_t cbWritten = write(pThisStrmOut->hFile, pThisStrmOut->pvPCMBuf, 863 ssize_t cbWritten = write(pThisStrmOut->hFile, pThisStrmOut->pvPCMBuf, 864 864 cbRead); 865 if (cbWritten == -1) 865 if (cbWritten == -1) 866 866 { 867 867 LogRel(("OSS: Failed writing output data %s\n", strerror(errno))); … … 886 886 } while(0); 887 887 888 if (RT_SUCCESS(rc)) 888 if (RT_SUCCESS(rc)) 889 889 { 890 890 uint32_t cReadTotal = AUDIOMIXBUF_B2S(&pHstStrmOut->MixBuf, cbReadTotal); … … 895 895 *pcSamplesPlayed = cReadTotal; 896 896 897 LogFlowFunc(("cReadTotal=%RU32 (%RU32 bytes), rc=%Rrc\n", 897 LogFlowFunc(("cReadTotal=%RU32 (%RU32 bytes), rc=%Rrc\n", 898 898 cReadTotal, cbReadTotal, rc)); 899 899 } -
trunk/src/VBox/Devices/Audio/solaudio.c
-
Property svn:keywords
changed from
Id
toId Revision
-
Property svn:keywords
changed from
Note:
See TracChangeset
for help on using the changeset viewer.