Changeset 67826 in vbox
- Timestamp:
- Jul 6, 2017 2:13:48 PM (8 years ago)
- svn:sync-xref-src-repo-rev:
- 116758
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Audio/DevIchAc97.cpp
r67806 r67826 911 911 /* pcbRead is optional. */ 912 912 913 int rc = VINF_SUCCESS; 914 915 uint32_t cbReadTotal = 0; 916 913 917 PRTCIRCBUF pCircBuf = pSrcStream->State.pCircBuf; 914 918 AssertPtr(pCircBuf); … … 917 921 size_t cbSrc; 918 922 919 uint32_t cbWritten = 0; 920 921 RTCircBufAcquireReadBlock(pCircBuf, cbToRead, &pvSrc, &cbSrc); 922 923 if (cbSrc) 924 { 923 while (cbToRead) 924 { 925 uint32_t cbWritten = 0; 926 927 RTCircBufAcquireReadBlock(pCircBuf, cbToRead, &pvSrc, &cbSrc); 928 929 if (cbSrc) 930 { 925 931 #ifdef VBOX_AUDIO_DEBUG_DUMP_PCM_DATA 926 RTFILE fh;927 RTFileOpen(&fh, VBOX_AUDIO_DEBUG_DUMP_PCM_DATA_PATH "ac97StreamRead.pcm",928 RTFILE_O_OPEN_CREATE | RTFILE_O_APPEND | RTFILE_O_WRITE | RTFILE_O_DENY_NONE);929 RTFileWrite(fh, pvSrc, cbSrc, NULL);930 RTFileClose(fh);932 RTFILE fh; 933 RTFileOpen(&fh, VBOX_AUDIO_DEBUG_DUMP_PCM_DATA_PATH "ac97StreamRead.pcm", 934 RTFILE_O_OPEN_CREATE | RTFILE_O_APPEND | RTFILE_O_WRITE | RTFILE_O_DENY_NONE); 935 RTFileWrite(fh, pvSrc, cbSrc, NULL); 936 RTFileClose(fh); 931 937 #endif 932 int rc2 = AudioMixerSinkWrite(pDstMixSink, AUDMIXOP_COPY, pvSrc, (uint32_t)cbSrc, &cbWritten); 933 AssertRC(rc2); 934 935 #ifdef DEBUG_andy 936 Assert(cbWritten == cbSrc); 937 #endif 938 } 939 940 RTCircBufReleaseReadBlock(pCircBuf, cbWritten); 938 rc = AudioMixerSinkWrite(pDstMixSink, AUDMIXOP_COPY, pvSrc, (uint32_t)cbSrc, &cbWritten); 939 if (RT_SUCCESS(rc)) 940 { 941 Assert(cbWritten <= cbSrc); 942 943 cbReadTotal += cbWritten; 944 945 Assert(cbToRead >= cbWritten); 946 cbToRead -= cbWritten; 947 } 948 } 949 950 RTCircBufReleaseReadBlock(pCircBuf, cbWritten); 951 952 if ( !cbWritten 953 || !RTCircBufUsed(pCircBuf)) 954 break; 955 956 if (RT_FAILURE(rc)) 957 break; 958 } 941 959 942 960 if (pcbRead) 943 *pcbRead = cb Written;944 945 return VINF_SUCCESS;961 *pcbRead = cbReadTotal; 962 963 return rc; 946 964 } 947 965 … … 1249 1267 { 1250 1268 /* Read (guest output) data and write it to the stream's sink. */ 1251 rc2 = ichac97StreamRead(pThis, pStream, pSink, cbUsed, NULL /* pcbRead */); 1269 uint32_t cbRead; 1270 rc2 = ichac97StreamRead(pThis, pStream, pSink, cbUsed, &cbRead); 1252 1271 AssertRC(rc2); 1272 1273 AssertMsg(cbUsed == cbRead, ("[SD%RU8] %RU32 bytes announced to be ready to read but %RU32 bytes read\n", 1274 pStream->u8SD, cbUsed, cbRead)); 1253 1275 } 1254 1276
Note:
See TracChangeset
for help on using the changeset viewer.