- Timestamp:
- Feb 11, 2015 2:26:47 PM (10 years ago)
- svn:sync-xref-src-repo-rev:
- 98171
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Audio/AudioMixBuffer.cpp
r53830 r54140 17 17 # undef LOG_GROUP 18 18 #endif 19 #define LOG_GROUP LOG_GROUP_DEV_AUDIO 20 #include <VBox/log.h> 19 #if 0 20 # define AUDMIXBUF_LOG(x) LogFlowFunc(x) 21 # define LOG_GROUP LOG_GROUP_DEV_AUDIO 22 # include <VBox/log.h> 23 #else 24 #define AUDMIXBUF_LOG(x) 25 #endif 21 26 22 27 /* … … 94 99 void audioMixBufFinish(PPDMAUDIOMIXBUF pMixBuf, uint32_t cSamplesToClear) 95 100 { 96 LogFlowFunc(("cSamples=%RU32\n", cSamplesToClear));97 LogFlowFunc(("%s: offReadWrite=%RU32, cProcessed=%RU32\n",98 pMixBuf->pszName, pMixBuf->offReadWrite, pMixBuf->cProcessed));101 AUDMIXBUF_LOG(("cSamples=%RU32\n", cSamplesToClear)); 102 AUDMIXBUF_LOG(("%s: offReadWrite=%RU32, cProcessed=%RU32\n", 103 pMixBuf->pszName, pMixBuf->offReadWrite, pMixBuf->cProcessed)); 99 104 100 105 PPDMAUDIOMIXBUF pIter; 101 106 RTListForEach(&pMixBuf->lstBuffers, pIter, PDMAUDIOMIXBUF, Node) 102 107 { 103 LogFlowFunc(("\t%s: cMixed=%RU32 -> %RU32\n",104 pIter->pszName, pIter->cMixed, pIter->cMixed - cSamplesToClear));108 AUDMIXBUF_LOG(("\t%s: cMixed=%RU32 -> %RU32\n", 109 pIter->pszName, pIter->cMixed, pIter->cMixed - cSamplesToClear)); 105 110 106 111 Assert(pIter->cMixed >= cSamplesToClear); … … 114 119 if (cLeft > pMixBuf->offReadWrite) /* Zero end of buffer first (wrap-around). */ 115 120 { 116 LogFlowFunc(("Clearing1: %RU32 - %RU32\n",117 (pMixBuf->cSamples - (cLeft - pMixBuf->offReadWrite)),118 pMixBuf->cSamples));121 AUDMIXBUF_LOG(("Clearing1: %RU32 - %RU32\n", 122 (pMixBuf->cSamples - (cLeft - pMixBuf->offReadWrite)), 123 pMixBuf->cSamples)); 119 124 120 125 RT_BZERO(pMixBuf->pSamples + (pMixBuf->cSamples - (cLeft - pMixBuf->offReadWrite)), … … 129 134 if (cLeft) 130 135 { 131 LogFlowFunc(("Clearing2: %RU32 - %RU32\n",132 offClear, offClear + cLeft));136 AUDMIXBUF_LOG(("Clearing2: %RU32 - %RU32\n", 137 offClear, offClear + cLeft)); 133 138 RT_BZERO(pMixBuf->pSamples + offClear, cLeft * sizeof(PDMAUDIOSAMPLE)); 134 139 } … … 144 149 if (pMixBuf->pszName) 145 150 { 146 LogFlowFunc(("%s\n", pMixBuf->pszName));151 AUDMIXBUF_LOG(("%s\n", pMixBuf->pszName)); 147 152 148 153 RTStrFree(pMixBuf->pszName); … … 171 176 cFree = pMixBuf->cSamples - pMixBuf->cProcessed; 172 177 173 LogFlowFunc(("%s: cFree=%RU32\n", pMixBuf->pszName, cFree));178 AUDMIXBUF_LOG(("%s: cFree=%RU32\n", pMixBuf->pszName, cFree)); 174 179 return cFree; 175 180 } … … 185 190 AssertReturn(cSamples, VERR_INVALID_PARAMETER); 186 191 187 LogFlowFunc(("%s: cSamples=%RU32\n", pMixBuf->pszName, cSamples));192 AUDMIXBUF_LOG(("%s: cSamples=%RU32\n", pMixBuf->pszName, cSamples)); 188 193 189 194 size_t cbSamples = cSamples * sizeof(PDMAUDIOSAMPLE); … … 204 209 205 210 #ifdef DEBUG_MACROS 206 # define AUDMIXBUF_MACRO_LOG(x) LogFlowFunc((x))211 # define AUDMIXBUF_MACRO_LOG(x) AUDMIXBUF_LOG((x)) 207 212 #elif defined(TESTCASE) 208 213 # define AUDMIXBUF_MACRO_LOG(x) RTPrintf x … … 616 621 return VERR_NO_MEMORY; 617 622 618 LogFlowFunc(("%s: uHz=%RU32, cChan=%RU8, cBits=%RU8, fSigned=%RTbool\n",619 pMixBuf->pszName,620 AUDMIXBUF_FMT_SAMPLE_FREQ(pMixBuf->AudioFmt),621 AUDMIXBUF_FMT_CHANNELS(pMixBuf->AudioFmt),622 AUDMIXBUF_FMT_BITS_PER_SAMPLE(pMixBuf->AudioFmt),623 RT_BOOL(AUDMIXBUF_FMT_SIGNED(pMixBuf->AudioFmt))));623 AUDMIXBUF_LOG(("%s: uHz=%RU32, cChan=%RU8, cBits=%RU8, fSigned=%RTbool\n", 624 pMixBuf->pszName, 625 AUDMIXBUF_FMT_SAMPLE_FREQ(pMixBuf->AudioFmt), 626 AUDMIXBUF_FMT_CHANNELS(pMixBuf->AudioFmt), 627 AUDMIXBUF_FMT_BITS_PER_SAMPLE(pMixBuf->AudioFmt), 628 RT_BOOL(AUDMIXBUF_FMT_SIGNED(pMixBuf->AudioFmt)))); 624 629 625 630 return audioMixBufAllocBuf(pMixBuf, cSamples); … … 649 654 if (pMixBuf->pParent) /* Already linked? */ 650 655 { 651 LogFlowFunc(("%s: Already linked to \"%s\"\n",652 pMixBuf->pszName, pMixBuf->pParent->pszName));656 AUDMIXBUF_LOG(("%s: Already linked to \"%s\"\n", 657 pMixBuf->pszName, pMixBuf->pParent->pszName)); 653 658 return VERR_ACCESS_DENIED; 654 659 } … … 677 682 if (cSamples != pMixBuf->cSamples) 678 683 { 679 LogFlowFunc(("%s: Reallocating samples %RU32 -> %RU32\n",680 pMixBuf->pszName, pMixBuf->cSamples, cSamples));684 AUDMIXBUF_LOG(("%s: Reallocating samples %RU32 -> %RU32\n", 685 pMixBuf->pszName, pMixBuf->cSamples, cSamples)); 681 686 682 687 pMixBuf->pSamples = (PPDMAUDIOSAMPLE)RTMemRealloc(pMixBuf->pSamples, … … 700 705 / AUDMIXBUF_FMT_SAMPLE_FREQ(pParent->AudioFmt); 701 706 702 LogFlowFunc(("uThisHz=%RU32, uParentHz=%RU32, iFreqRatio=%RI64, uRateInc=%RU64, cSamples=%RU32 (%RU32 parent)\n",703 AUDMIXBUF_FMT_SAMPLE_FREQ(pMixBuf->AudioFmt),704 AUDMIXBUF_FMT_SAMPLE_FREQ(pParent->AudioFmt),705 pMixBuf->iFreqRatio,706 pMixBuf->pRate->dstInc,707 pMixBuf->cSamples,708 pParent->cSamples));707 AUDMIXBUF_LOG(("uThisHz=%RU32, uParentHz=%RU32, iFreqRatio=%RI64, uRateInc=%RU64, cSamples=%RU32 (%RU32 parent)\n", 708 AUDMIXBUF_FMT_SAMPLE_FREQ(pMixBuf->AudioFmt), 709 AUDMIXBUF_FMT_SAMPLE_FREQ(pParent->AudioFmt), 710 pMixBuf->iFreqRatio, 711 pMixBuf->pRate->dstInc, 712 pMixBuf->cSamples, 713 pParent->cSamples)); 709 714 } 710 715 … … 733 738 uint32_t cLive = pSrc->cMixed; 734 739 if (cLive >= pDst->cSamples) 735 LogFlowFunc(("Destination buffer \"%s\" full (%RU32 samples max), live samples = %RU32\n",736 pDst->pszName, pDst->cSamples, cLive));740 AUDMIXBUF_LOG(("Destination buffer \"%s\" full (%RU32 samples max), live samples = %RU32\n", 741 pDst->pszName, pDst->cSamples, cLive)); 737 742 738 743 /* Dead samples are the number of samples in the destination buffer which … … 748 753 uint32_t offWrite = (pDst->offReadWrite + cLive) % pDst->cSamples; 749 754 750 LogFlowFunc(("pSrc=%s (%RU32 samples), pDst=%s (%RU32 samples), cLive=%RU32, cDead=%RU32, cToReadTotal=%RU32, offWrite=%RU32\n",751 pSrc->pszName, pSrc->cSamples, pDst->pszName, pDst->cSamples, cLive, cDead, cToReadTotal, offWrite));755 AUDMIXBUF_LOG(("pSrc=%s (%RU32 samples), pDst=%s (%RU32 samples), cLive=%RU32, cDead=%RU32, cToReadTotal=%RU32, offWrite=%RU32\n", 756 pSrc->pszName, pSrc->cSamples, pDst->pszName, pDst->cSamples, cLive, cDead, cToReadTotal, offWrite)); 752 757 753 758 uint32_t cToRead, cToWrite; … … 763 768 if (!cToWrite) 764 769 { 765 LogFlowFunc(("Destination buffer \"%s\" full\n", pDst->pszName));770 AUDMIXBUF_LOG(("Destination buffer \"%s\" full\n", pDst->pszName)); 766 771 break; 767 772 } … … 770 775 Assert(offRead + cToRead <= pSrc->cSamples); 771 776 772 LogFlowFunc(("\tcDead=%RU32, offWrite=%RU32, cToWrite=%RU32, offRead=%RU32, cToRead=%RU32\n",773 cDead, offWrite, cToWrite, offRead, cToRead));777 AUDMIXBUF_LOG(("\tcDead=%RU32, offWrite=%RU32, cToWrite=%RU32, offRead=%RU32, cToRead=%RU32\n", 778 cDead, offWrite, cToWrite, offRead, cToRead)); 774 779 775 780 audioMixBufOpBlend(pDst->pSamples + offWrite, cToWrite, … … 778 783 &cWritten, &cRead); 779 784 780 LogFlowFunc(("\t\tcWritten=%RU32, cRead=%RU32\n", cWritten, cRead));785 AUDMIXBUF_LOG(("\t\tcWritten=%RU32, cRead=%RU32\n", cWritten, cRead)); 781 786 782 787 cReadTotal += cRead; … … 803 808 *pcProcessed = cReadTotal; 804 809 805 LogFlowFunc(("cSrcRead=%RU32, cSrcMixed=%RU32, rc=%Rrc\n",806 cReadTotal, pSrc->cMixed, VINF_SUCCESS));810 AUDMIXBUF_LOG(("cSrcRead=%RU32, cSrcMixed=%RU32, rc=%Rrc\n", 811 cReadTotal, pSrc->cMixed, VINF_SUCCESS)); 807 812 return VINF_SUCCESS; 808 813 } … … 851 856 pParent = pMixBuf->pParent; 852 857 853 LogFlowFunc(("********************************************\n"));854 LogFlowFunc(("%s: offReadWrite=%RU32, cProcessed=%RU32, cMixed=%RU32 (BpS=%RU32)\n",855 pParent->pszName,856 pParent->offReadWrite, pParent->cProcessed, pParent->cMixed,857 AUDIOMIXBUF_S2B(pParent, 1)));858 AUDMIXBUF_LOG(("********************************************\n")); 859 AUDMIXBUF_LOG(("%s: offReadWrite=%RU32, cProcessed=%RU32, cMixed=%RU32 (BpS=%RU32)\n", 860 pParent->pszName, 861 pParent->offReadWrite, pParent->cProcessed, pParent->cMixed, 862 AUDIOMIXBUF_S2B(pParent, 1))); 858 863 859 864 PPDMAUDIOMIXBUF pIter; 860 865 RTListForEach(&pParent->lstBuffers, pIter, PDMAUDIOMIXBUF, Node) 861 866 { 862 LogFlowFunc(("\t%s: offReadWrite=%RU32, cProcessed=%RU32, cMixed=%RU32 (BpS=%RU32)\n",863 pIter->pszName,864 pIter->offReadWrite, pIter->cProcessed, pIter->cMixed,865 AUDIOMIXBUF_S2B(pIter, 1)));866 } 867 LogFlowFunc(("Total samples mixed: %RU64\n", s_cSamplesMixedTotal));868 LogFlowFunc(("********************************************\n"));867 AUDMIXBUF_LOG(("\t%s: offReadWrite=%RU32, cProcessed=%RU32, cMixed=%RU32 (BpS=%RU32)\n", 868 pIter->pszName, 869 pIter->offReadWrite, pIter->cProcessed, pIter->cMixed, 870 AUDIOMIXBUF_S2B(pIter, 1))); 871 } 872 AUDMIXBUF_LOG(("Total samples mixed: %RU64\n", s_cSamplesMixedTotal)); 873 AUDMIXBUF_LOG(("********************************************\n")); 869 874 #endif 870 875 } … … 907 912 cToProcess = RT_MIN(cToProcess, AUDIOMIXBUF_B2S(pMixBuf, cbBuf)); 908 913 909 LogFlowFunc(("%s: offSamples=%RU32, cLive=%RU32, cDead=%RU32, cToProcess=%RU32\n",910 pMixBuf->pszName, offSamples, cLive, cDead, cToProcess));914 AUDMIXBUF_LOG(("%s: offSamples=%RU32, cLive=%RU32, cDead=%RU32, cToProcess=%RU32\n", 915 pMixBuf->pszName, offSamples, cLive, cDead, cToProcess)); 911 916 912 917 int rc; … … 924 929 *pcbRead = AUDIOMIXBUF_S2B(pMixBuf, cToProcess); 925 930 926 LogFlowFunc(("cbRead=%RU32, rc=%Rrc\n", AUDIOMIXBUF_S2B(pMixBuf, cToProcess), rc));931 AUDMIXBUF_LOG(("cbRead=%RU32, rc=%Rrc\n", AUDIOMIXBUF_S2B(pMixBuf, cToProcess), rc)); 927 932 return rc; 928 933 } … … 949 954 pMixBuf->cProcessed); 950 955 951 LogFlowFunc(("%s: pvBuf=%p, cbBuf=%zu (%RU32 samples), cToRead=%RU32\n",952 pMixBuf->pszName, pvBuf,953 cbBuf, AUDIOMIXBUF_B2S(pMixBuf, cbBuf), cToRead));956 AUDMIXBUF_LOG(("%s: pvBuf=%p, cbBuf=%zu (%RU32 samples), cToRead=%RU32\n", 957 pMixBuf->pszName, pvBuf, 958 cbBuf, AUDIOMIXBUF_B2S(pMixBuf, cbBuf), cToRead)); 954 959 955 960 if (!cToRead) … … 992 997 if (cLenSrc1) 993 998 { 994 LogFlowFunc(("P1: offRead=%RU32, cToRead=%RU32\n", pMixBuf->offReadWrite, cLenSrc1));999 AUDMIXBUF_LOG(("P1: offRead=%RU32, cToRead=%RU32\n", pMixBuf->offReadWrite, cLenSrc1)); 995 1000 rc = audioMixBufConvTo(pvBuf, pSamplesSrc1, cLenSrc1, enmFmt); 996 1001 } … … 1002 1007 AssertPtr(pSamplesSrc2); 1003 1008 1004 LogFlowFunc(("P2: cToRead=%RU32, offWrite=%RU32 (%zu bytes)\n", cLenSrc2, cLenSrc1,1005 AUDIOMIXBUF_S2B(pMixBuf, cLenSrc1)));1009 AUDMIXBUF_LOG(("P2: cToRead=%RU32, offWrite=%RU32 (%zu bytes)\n", cLenSrc2, cLenSrc1, 1010 AUDIOMIXBUF_S2B(pMixBuf, cLenSrc1))); 1006 1011 rc = audioMixBufConvTo((uint8_t *)pvBuf + AUDIOMIXBUF_S2B(pMixBuf, cLenSrc1), 1007 1012 pSamplesSrc2, cLenSrc2, enmFmt); … … 1019 1024 audioMixBufPrint(pMixBuf); 1020 1025 1021 LogFlowFunc(("cRead=%RU32 (%zu bytes), rc=%Rrc\n",1022 cLenSrc1 + cLenSrc2,1023 AUDIOMIXBUF_S2B(pMixBuf, cLenSrc1 + cLenSrc2), rc));1026 AUDMIXBUF_LOG(("cRead=%RU32 (%zu bytes), rc=%Rrc\n", 1027 cLenSrc1 + cLenSrc2, 1028 AUDIOMIXBUF_S2B(pMixBuf, cLenSrc1 + cLenSrc2), rc)); 1024 1029 return rc; 1025 1030 } … … 1029 1034 AssertPtrReturnVoid(pMixBuf); 1030 1035 1031 LogFlowFunc(("%s\n", pMixBuf->pszName));1036 AUDMIXBUF_LOG(("%s\n", pMixBuf->pszName)); 1032 1037 1033 1038 pMixBuf->offReadWrite = 0; … … 1059 1064 return; 1060 1065 1061 LogFlowFunc(("%s\n", pMixBuf->pszName));1066 AUDMIXBUF_LOG(("%s\n", pMixBuf->pszName)); 1062 1067 1063 1068 if (pMixBuf->pParent) 1064 1069 { 1065 LogFlowFunc(("%s: Unlinking from parent \"%s\"\n",1066 pMixBuf->pszName, pMixBuf->pParent->pszName));1070 AUDMIXBUF_LOG(("%s: Unlinking from parent \"%s\"\n", 1071 pMixBuf->pszName, pMixBuf->pParent->pszName)); 1067 1072 1068 1073 RTListNodeRemove(&pMixBuf->Node); … … 1079 1084 pIter = RTListGetFirst(&pMixBuf->lstBuffers, PDMAUDIOMIXBUF, Node); 1080 1085 1081 LogFlowFunc(("\tUnlinking \"%s\"\n", pIter->pszName));1086 AUDMIXBUF_LOG(("\tUnlinking \"%s\"\n", pIter->pszName)); 1082 1087 1083 1088 audioMixBufReset(pIter->pParent); … … 1134 1139 cToProcess = RT_MIN(cToProcess, AUDIOMIXBUF_B2S(pMixBuf, cbBuf)); 1135 1140 1136 LogFlowFunc(("%s: offSamples=%RU32, cLive=%RU32, cDead=%RU32, cToProcess=%RU32\n",1137 pMixBuf->pszName, offSamples, cLive, cDead, cToProcess));1141 AUDMIXBUF_LOG(("%s: offSamples=%RU32, cLive=%RU32, cDead=%RU32, cToProcess=%RU32\n", 1142 pMixBuf->pszName, offSamples, cLive, cDead, cToProcess)); 1138 1143 1139 1144 if (offSamples + cToProcess > pMixBuf->cSamples) … … 1173 1178 } 1174 1179 1175 LogFlowFunc(("cWritten=%RU32, rc=%Rrc\n", cWritten, rc));1180 AUDMIXBUF_LOG(("cWritten=%RU32, rc=%Rrc\n", cWritten, rc)); 1176 1181 return rc; 1177 1182 } … … 1201 1206 PPDMAUDIOMIXBUF pParent = pMixBuf->pParent; 1202 1207 1203 LogFlowFunc(("%s: enmFmt=%ld, pBuf=%p, cbBuf=%zu, pParent=%p (%RU32)\n",1204 pMixBuf->pszName, enmFmt, pvBuf, cbBuf, pParent, pParent ? pParent->cSamples : 0));1208 AUDMIXBUF_LOG(("%s: enmFmt=%ld, pBuf=%p, cbBuf=%zu, pParent=%p (%RU32)\n", 1209 pMixBuf->pszName, enmFmt, pvBuf, cbBuf, pParent, pParent ? pParent->cSamples : 0)); 1205 1210 1206 1211 if ( pParent … … 1210 1215 *pcWritten = 0; 1211 1216 1212 LogFlowFunc(("%s: Parent buffer %s is full\n",1213 pMixBuf->pszName, pMixBuf->pParent->pszName));1217 AUDMIXBUF_LOG(("%s: Parent buffer %s is full\n", 1218 pMixBuf->pszName, pMixBuf->pParent->pszName)); 1214 1219 1215 1220 return VINF_SUCCESS; … … 1269 1274 #endif 1270 1275 1271 LogFlowFunc(("cLenDst1=%RU32, cLenDst2=%RU32, offWrite=%RU32\n",1272 cLenDst1, cLenDst2, offWrite));1276 AUDMIXBUF_LOG(("cLenDst1=%RU32, cLenDst2=%RU32, offWrite=%RU32\n", 1277 cLenDst1, cLenDst2, offWrite)); 1273 1278 1274 1279 if (RT_SUCCESS(rc)) … … 1283 1288 audioMixBufPrint(pMixBuf); 1284 1289 1285 LogFlowFunc(("cWritten=%RU32 (%zu bytes), rc=%Rrc\n",1286 cLenDst1 + cLenDst2,1287 AUDIOMIXBUF_S2B(pMixBuf, cLenDst1 + cLenDst2), rc));1290 AUDMIXBUF_LOG(("cWritten=%RU32 (%zu bytes), rc=%Rrc\n", 1291 cLenDst1 + cLenDst2, 1292 AUDIOMIXBUF_S2B(pMixBuf, cLenDst1 + cLenDst2), rc)); 1288 1293 return rc; 1289 1294 }
Note:
See TracChangeset
for help on using the changeset viewer.