- Timestamp:
- May 21, 2021 11:57:55 AM (4 years ago)
- Location:
- trunk
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/pdmaudioifs.h
r89214 r89218 487 487 typedef PDMAUDIOFRAME const *PCPDMAUDIOFRAME; 488 488 489 /** 490 * Audio playback destinations. 491 */ 492 typedef enum PDMAUDIOPLAYBACKDST 493 { 494 /** Invalid zero value as per usual (guards against using unintialized values). */ 495 PDMAUDIOPLAYBACKDST_INVALID = 0, 496 /** Unknown destination. */ 497 PDMAUDIOPLAYBACKDST_UNKNOWN, 498 /** Front channel. */ 499 PDMAUDIOPLAYBACKDST_FRONT, 500 /** Center / LFE (Subwoofer) channel. */ 501 PDMAUDIOPLAYBACKDST_CENTER_LFE, 502 /** Rear channel. */ 503 PDMAUDIOPLAYBACKDST_REAR, 489 490 /** 491 * Audio path: input sources and playback destinations. 492 * 493 * Think of this as the name of the socket you plug the virtual audio stream 494 * jack into. 495 * 496 * @note Not quite sure what the purpose of this type is. It used to be two 497 * separate enums (PDMAUDIOPLAYBACKDST & PDMAUDIORECSRC) without overlapping 498 * values and most commonly used in a union (PDMAUDIODSTSRCUNION). The output 499 * values were designated "channel" (e.g. "Front channel"), whereas this was not 500 * done to the input ones. So, I'm (bird) a little confused what the actual 501 * meaning was. 502 */ 503 typedef enum PDMAUDIOPATH 504 { 505 /** Customary invalid zero value. */ 506 PDMAUDIOPATH_INVALID = 0, 507 508 /** Unknown path / Doesn't care. */ 509 PDMAUDIOPATH_UNKNOWN, 510 511 /** First output value. */ 512 PDMAUDIOPATH_OUT_FIRST, 513 /** Output: Front. */ 514 PDMAUDIOPATH_OUT_FRONT = PDMAUDIOPATH_OUT_FIRST, 515 /** Output: Center / LFE (Subwoofer). */ 516 PDMAUDIOPATH_OUT_CENTER_LFE, 517 /** Output: Rear. */ 518 PDMAUDIOPATH_OUT_REAR, 519 /** Last output value (inclusive) */ 520 PDMAUDIOPATH_OUT_END = PDMAUDIOPATH_OUT_REAR, 521 522 /** First input value. */ 523 PDMAUDIOPATH_IN_FIRST, 524 /** Input: Microphone. */ 525 PDMAUDIOPATH_IN_MIC = PDMAUDIOPATH_IN_FIRST, 526 /** Input: CD. */ 527 PDMAUDIOPATH_IN_CD, 528 /** Input: Video-In. */ 529 PDMAUDIOPATH_IN_VIDEO, 530 /** Input: AUX. */ 531 PDMAUDIOPATH_IN_AUX, 532 /** Input: Line-In. */ 533 PDMAUDIOPATH_IN_LINE, 534 /** Input: Phone-In. */ 535 PDMAUDIOPATH_IN_PHONE, 536 /** Last intput value (inclusive). */ 537 PDMAUDIOPATH_IN_LAST = PDMAUDIOPATH_IN_PHONE, 538 504 539 /** End of valid values. */ 505 PDMAUDIOPLAYBACKDST_END, 506 /** Hack to blow the type up to 32-bit. */ 507 PDMAUDIOPLAYBACKDST_32BIT_HACK = 0x7fffffff 508 } PDMAUDIOPLAYBACKDST; 509 510 /** 511 * Audio recording sources. 512 * 513 * @note Because this is almost exclusively used in PDMAUDIODSTSRCUNION where it 514 * overlaps with PDMAUDIOPLAYBACKDST, the values starts at 64 instead of 0. 515 */ 516 typedef enum PDMAUDIORECSRC 517 { 518 /** Unknown recording source. */ 519 PDMAUDIORECSRC_UNKNOWN = 64, 520 /** Microphone-In. */ 521 PDMAUDIORECSRC_MIC, 522 /** CD. */ 523 PDMAUDIORECSRC_CD, 524 /** Video-In. */ 525 PDMAUDIORECSRC_VIDEO, 526 /** AUX. */ 527 PDMAUDIORECSRC_AUX, 528 /** Line-In. */ 529 PDMAUDIORECSRC_LINE, 530 /** Phone-In. */ 531 PDMAUDIORECSRC_PHONE, 532 /** End of valid values. */ 533 PDMAUDIORECSRC_END, 534 /** Hack to blow the type up to 32-bit. */ 535 PDMAUDIORECSRC_32BIT_HACK = 0x7fffffff 536 } PDMAUDIORECSRC; 537 538 /** 539 * Union for keeping an audio stream destination or source. 540 */ 541 typedef union PDMAUDIODSTSRCUNION 542 { 543 /** Desired playback destination (for an output stream). */ 544 PDMAUDIOPLAYBACKDST enmDst; 545 /** Desired recording source (for an input stream). */ 546 PDMAUDIORECSRC enmSrc; 547 } PDMAUDIODSTSRCUNION; 548 /** Pointer to an audio stream src/dst union. */ 549 typedef PDMAUDIODSTSRCUNION *PPDMAUDIODSTSRCUNION; 540 PDMAUDIOPATH_END, 541 /** Hack to blow the typ up to 32 bits. */ 542 PDMAUDIOPATH_32BIT_HACK = 0x7fffffff 543 } PDMAUDIOPATH; 550 544 551 545 /** … … 756 750 /** Direction of the stream. */ 757 751 PDMAUDIODIR enmDir; 758 /** Destination / source indicator, depending on enmDir. */759 PDMAUDIO DSTSRCUNION u;752 /** Destination / source path. */ 753 PDMAUDIOPATH enmPath; 760 754 /** The stream's PCM properties. */ 761 755 PDMAUDIOPCMPROPS Props; … … 1250 1244 1251 1245 /** PDMIAUDIOCONNECTOR interface ID. */ 1252 #define PDMIAUDIOCONNECTOR_IID " 69d01cd1-df73-48db-86f4-2f97519ac585"1246 #define PDMIAUDIOCONNECTOR_IID "ff9cabf0-4138-4c3a-aa99-28bf7a6feae7" 1253 1247 1254 1248 … … 1531 1525 1532 1526 /** PDMIHOSTAUDIO interface ID. */ 1533 #define PDMIHOSTAUDIO_IID " cd27862d-9aa2-4270-876e-7d660b87ecd3"1527 #define PDMIHOSTAUDIO_IID "ad56b303-0c1f-4b79-9bd1-4ec04ae08c4f" 1534 1528 1535 1529 … … 1616 1610 1617 1611 /** PDMIHOSTAUDIOPORT interface ID. */ 1618 #define PDMIHOSTAUDIOPORT_IID " cd006383-7be1-4dbe-a69e-21236413cf30"1612 #define PDMIHOSTAUDIOPORT_IID "9f91ec59-95ba-4925-92dc-e75be1c63352" 1619 1613 1620 1614 /** @} */ -
trunk/include/VBox/vmm/pdmaudioinline.h
r88991 r89218 107 107 108 108 /** 109 * Gets the name of a p layback destinationenum value.109 * Gets the name of a path enum value. 110 110 * 111 111 * @returns Pointer to read-only name, "bad" if invalid input. 112 * @param enmPlaybackDst The playback destination value. 113 */ 114 DECLINLINE(const char *) PDMAudioPlaybackDstGetName(PDMAUDIOPLAYBACKDST enmPlaybackDst) 115 { 116 switch (enmPlaybackDst) 117 { 118 case PDMAUDIOPLAYBACKDST_UNKNOWN: return "Unknown"; 119 case PDMAUDIOPLAYBACKDST_FRONT: return "Front"; 120 case PDMAUDIOPLAYBACKDST_CENTER_LFE: return "Center / LFE"; 121 case PDMAUDIOPLAYBACKDST_REAR: return "Rear"; 112 * @param enmPath The path value to name. 113 */ 114 DECLINLINE(const char *) PDMAudioPathGetName(PDMAUDIOPATH enmPath) 115 { 116 switch (enmPath) 117 { 118 case PDMAUDIOPATH_UNKNOWN: return "Unknown"; 119 120 case PDMAUDIOPATH_OUT_FRONT: return "Front"; 121 case PDMAUDIOPATH_OUT_CENTER_LFE: return "Center / LFE"; 122 case PDMAUDIOPATH_OUT_REAR: return "Rear"; 123 124 case PDMAUDIOPATH_IN_MIC: return "Microphone In"; 125 case PDMAUDIOPATH_IN_CD: return "CD"; 126 case PDMAUDIOPATH_IN_VIDEO: return "Video"; 127 case PDMAUDIOPATH_IN_AUX: return "AUX"; 128 case PDMAUDIOPATH_IN_LINE: return "Line In"; 129 case PDMAUDIOPATH_IN_PHONE: return "Phone"; 130 122 131 /* no default */ 123 case PDMAUDIOP LAYBACKDST_INVALID:124 case PDMAUDIOP LAYBACKDST_END:125 case PDMAUDIOP LAYBACKDST_32BIT_HACK:132 case PDMAUDIOPATH_INVALID: 133 case PDMAUDIOPATH_END: 134 case PDMAUDIOPATH_32BIT_HACK: 126 135 break; 127 136 } 128 AssertMsgFailedReturn(("Invalid playback destination %ld\n", enmPlaybackDst), "bad"); 129 } 130 131 /** 132 * Gets the name of a recording source enum value. 133 * 134 * @returns Pointer to read-only name, "bad" if invalid input. 135 * @param enmRecSrc The recording source value. 136 */ 137 DECLINLINE(const char *) PDMAudioRecSrcGetName(PDMAUDIORECSRC enmRecSrc) 138 { 139 switch (enmRecSrc) 140 { 141 case PDMAUDIORECSRC_UNKNOWN: return "Unknown"; 142 case PDMAUDIORECSRC_MIC: return "Microphone In"; 143 case PDMAUDIORECSRC_CD: return "CD"; 144 case PDMAUDIORECSRC_VIDEO: return "Video"; 145 case PDMAUDIORECSRC_AUX: return "AUX"; 146 case PDMAUDIORECSRC_LINE: return "Line In"; 147 case PDMAUDIORECSRC_PHONE: return "Phone"; 148 /* no default */ 149 case PDMAUDIORECSRC_END: 150 case PDMAUDIORECSRC_32BIT_HACK: 151 break; 152 } 153 AssertMsgFailedReturn(("Invalid recording source %ld\n", enmRecSrc), "bad"); 137 AssertMsgFailedReturn(("Unknown enmPath=%d\n", enmPath), "bad"); 154 138 } 155 139 … … 954 938 if (PDMAudioPropsAreEqual(&pCfg1->Props, &pCfg2->Props)) 955 939 return pCfg1->enmDir == pCfg2->enmDir 956 && pCfg1-> u.enmDst == pCfg2->u.enmDst940 && pCfg1->enmPath == pCfg2->enmPath 957 941 && pCfg1->enmLayout == pCfg2->enmLayout 958 942 && pCfg1->Device.cMsSchedulingHint == pCfg2->Device.cMsSchedulingHint -
trunk/src/VBox/Devices/Audio/AudioMixer.cpp
r89213 r89218 623 623 AssertRC(rc); /* cannot fail */ 624 624 CfgHost.enmDir = pSink->enmDir; 625 CfgHost. u = pCfg->u;625 CfgHost.enmPath = pCfg->enmPath; 626 626 CfgHost.enmLayout = pCfg->enmLayout; 627 627 CfgHost.Device = pCfg->Device; -
trunk/src/VBox/Devices/Audio/DevHda.cpp
r89213 r89218 1674 1674 RTStrPrintf(pCfg->szName, RT_ELEMENTS(pCfg->szName), "Front"); 1675 1675 1676 pCfg-> u.enmDst = PDMAUDIOPLAYBACKDST_FRONT;1676 pCfg->enmPath = PDMAUDIOPATH_OUT_FRONT; 1677 1677 pCfg->enmLayout = PDMAUDIOSTREAMLAYOUT_NON_INTERLEAVED; 1678 1678 /// @todo PDMAudioPropsSetChannels(&pCfg->Props, 2); ? … … 1687 1687 RTStrPrintf(pCfg->szName, RT_ELEMENTS(pCfg->szName), "Center/LFE"); 1688 1688 1689 pCfg-> u.enmDst = PDMAUDIOPLAYBACKDST_CENTER_LFE;1689 pCfg->enmPath = PDMAUDIOPATH_OUT_CENTER_LFE; 1690 1690 pCfg->enmLayout = PDMAUDIOSTREAMLAYOUT_NON_INTERLEAVED; 1691 1691 PDMAudioPropsSetChannels(&pCfg->Props, fUseCenter && fUseLFE ? 2 : 1); … … 1699 1699 RTStrPrintf(pCfg->szName, RT_ELEMENTS(pCfg->szName), "Rear"); 1700 1700 1701 pCfg-> u.enmDst = PDMAUDIOPLAYBACKDST_REAR;1701 pCfg->enmPath = PDMAUDIOPATH_OUT_REAR; 1702 1702 pCfg->enmLayout = PDMAUDIOSTREAMLAYOUT_NON_INTERLEAVED; 1703 1703 PDMAudioPropsSetChannels(&pCfg->Props, 2); … … 1726 1726 AssertReturn(pCfg->enmDir == PDMAUDIODIR_IN, VERR_INVALID_PARAMETER); 1727 1727 1728 LogFlowFunc(("Stream=%s , Source=%ld\n", pCfg->szName, pCfg->u.enmSrc));1728 LogFlowFunc(("Stream=%s enmPath=%ld\n", pCfg->szName, pCfg->enmPath)); 1729 1729 1730 1730 int rc; 1731 switch (pCfg-> u.enmSrc)1732 { 1733 case PDMAUDIO RECSRC_LINE:1731 switch (pCfg->enmPath) 1732 { 1733 case PDMAUDIOPATH_IN_LINE: 1734 1734 rc = hdaR3CodecAddStream(pThisCC->pCodec, PDMAUDIOMIXERCTL_LINE_IN, pCfg); 1735 1735 break; 1736 1736 # ifdef VBOX_WITH_AUDIO_HDA_MIC_IN 1737 case PDMAUDIO RECSRC_MIC:1737 case PDMAUDIOPATH_IN_MIC: 1738 1738 rc = hdaR3CodecAddStream(pThisCC->pCodec, PDMAUDIOMIXERCTL_MIC_IN, pCfg); 1739 1739 break; … … 1803 1803 case PDMAUDIODIR_IN: 1804 1804 { 1805 LogFlowFunc(("Stream=%s , Source=%ld\n", pCfg->szName, pCfg->u.enmSrc));1806 1807 switch (pCfg-> u.enmSrc)1805 LogFlowFunc(("Stream=%s enmPath=%d (src)\n", pCfg->szName, pCfg->enmPath)); 1806 1807 switch (pCfg->enmPath) 1808 1808 { 1809 case PDMAUDIO RECSRC_UNKNOWN:break;1810 case PDMAUDIO RECSRC_LINE:enmMixerCtl = PDMAUDIOMIXERCTL_LINE_IN; break;1809 case PDMAUDIOPATH_UNKNOWN: break; 1810 case PDMAUDIOPATH_IN_LINE: enmMixerCtl = PDMAUDIOMIXERCTL_LINE_IN; break; 1811 1811 # ifdef VBOX_WITH_AUDIO_HDA_MIC_IN 1812 case PDMAUDIO RECSRC_MIC:enmMixerCtl = PDMAUDIOMIXERCTL_MIC_IN; break;1812 case PDMAUDIOPATH_IN_MIC: enmMixerCtl = PDMAUDIOMIXERCTL_MIC_IN; break; 1813 1813 # endif 1814 1814 default: … … 1816 1816 break; 1817 1817 } 1818 1819 1818 break; 1820 1819 } … … 1822 1821 case PDMAUDIODIR_OUT: 1823 1822 { 1824 LogFlowFunc(("Stream=%s, Source=%ld\n", pCfg->szName, pCfg->u.enmDst));1825 1826 switch (pCfg-> u.enmDst)1823 LogFlowFunc(("Stream=%s, enmPath=%d (dst)\n", pCfg->szName, pCfg->enmPath)); 1824 1825 switch (pCfg->enmPath) 1827 1826 { 1828 case PDMAUDIOP LAYBACKDST_UNKNOWN:break;1829 case PDMAUDIOP LAYBACKDST_FRONT:enmMixerCtl = PDMAUDIOMIXERCTL_FRONT; break;1827 case PDMAUDIOPATH_UNKNOWN: break; 1828 case PDMAUDIOPATH_OUT_FRONT: enmMixerCtl = PDMAUDIOMIXERCTL_FRONT; break; 1830 1829 # ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND 1831 case PDMAUDIOP LAYBACKDST_CENTER_LFE:enmMixerCtl = PDMAUDIOMIXERCTL_CENTER_LFE; break;1832 case PDMAUDIOP LAYBACKDST_REAR:enmMixerCtl = PDMAUDIOMIXERCTL_REAR; break;1830 case PDMAUDIOPATH_OUT_CENTER_LFE: enmMixerCtl = PDMAUDIOMIXERCTL_CENTER_LFE; break; 1831 case PDMAUDIOPATH_OUT_REAR: enmMixerCtl = PDMAUDIOMIXERCTL_REAR; break; 1833 1832 # endif 1834 1833 default: … … 2281 2280 if (pCfg->enmDir == PDMAUDIODIR_IN) 2282 2281 { 2283 LogFunc(("enm Src=%d\n", pCfg->u.enmSrc));2284 switch (pCfg-> u.enmSrc)2285 { 2286 case PDMAUDIO RECSRC_LINE:2282 LogFunc(("enmPath=%d (src)\n", pCfg->enmPath)); 2283 switch (pCfg->enmPath) 2284 { 2285 case PDMAUDIOPATH_IN_LINE: 2287 2286 pDrvStream = &pDrv->LineIn; 2288 2287 break; 2289 2288 # ifdef VBOX_WITH_AUDIO_HDA_MIC_IN 2290 case PDMAUDIO RECSRC_MIC:2289 case PDMAUDIOPATH_IN_MIC: 2291 2290 pDrvStream = &pDrv->MicIn; 2292 2291 break; 2293 2292 # endif 2294 2293 default: 2295 LogFunc(("returns VERR_NOT_SUPPORTED - enm Src=%d\n", pCfg->u.enmSrc));2294 LogFunc(("returns VERR_NOT_SUPPORTED - enmPath=%d\n", pCfg->enmPath)); 2296 2295 return VERR_NOT_SUPPORTED; 2297 2296 } … … 2299 2298 else if (pCfg->enmDir == PDMAUDIODIR_OUT) 2300 2299 { 2301 LogFunc(("enmDst=%d %s \n", pCfg->u.enmDst, PDMAudioPlaybackDstGetName(pCfg->u.enmDst)));2302 switch (pCfg-> u.enmDst)2303 { 2304 case PDMAUDIOP LAYBACKDST_FRONT:2300 LogFunc(("enmDst=%d %s (dst)\n", pCfg->enmPath, PDMAudioPathGetName(pCfg->enmPath))); 2301 switch (pCfg->enmPath) 2302 { 2303 case PDMAUDIOPATH_OUT_FRONT: 2305 2304 pDrvStream = &pDrv->Front; 2306 2305 break; 2307 2306 # ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND 2308 case PDMAUDIOP LAYBACKDST_CENTER_LFE:2307 case PDMAUDIOPATH_OUT_CENTER_LFE: 2309 2308 pDrvStream = &pDrv->CenterLFE; 2310 2309 break; 2311 case PDMAUDIOP LAYBACKDST_REAR:2310 case PDMAUDIOPATH_OUT_REAR: 2312 2311 pDrvStream = &pDrv->Rear; 2313 2312 break; 2314 2313 # endif 2315 2314 default: 2316 LogFunc(("returns VERR_NOT_SUPPORTED - enm Dst=%d %s\n", pCfg->u.enmDst, PDMAudioPlaybackDstGetName(pCfg->u.enmDst)));2315 LogFunc(("returns VERR_NOT_SUPPORTED - enmPath=%d %s\n", pCfg->enmPath, PDMAudioPathGetName(pCfg->enmPath))); 2317 2316 return VERR_NOT_SUPPORTED; 2318 2317 } … … 4451 4450 RT_ZERO(Cfg); 4452 4451 Cfg.enmDir = PDMAUDIODIR_OUT; 4453 Cfg. u.enmDst = PDMAUDIOPLAYBACKDST_FRONT;4452 Cfg.enmPath = PDMAUDIOPATH_OUT_FRONT; 4454 4453 Cfg.enmLayout = PDMAUDIOSTREAMLAYOUT_INTERLEAVED; 4455 4454 Cfg.Device.cMsSchedulingHint = 10; -
trunk/src/VBox/Devices/Audio/DevHdaStream.cpp
r88991 r89218 94 94 if (fIsInput) 95 95 { 96 pStreamShared->State.Cfg. u.enmSrc = PDMAUDIORECSRC_UNKNOWN;97 pStreamShared->State.Cfg.enmDir 96 pStreamShared->State.Cfg.enmPath = PDMAUDIOPATH_UNKNOWN; 97 pStreamShared->State.Cfg.enmDir = PDMAUDIODIR_IN; 98 98 } 99 99 else 100 100 { 101 pStreamShared->State.Cfg. u.enmDst = PDMAUDIOPLAYBACKDST_UNKNOWN;102 pStreamShared->State.Cfg.enmDir 101 pStreamShared->State.Cfg.enmPath = PDMAUDIOPATH_UNKNOWN; 102 pStreamShared->State.Cfg.enmDir = PDMAUDIODIR_OUT; 103 103 } 104 104 … … 548 548 # error "Implement me!" 549 549 # else 550 pCfg-> u.enmSrc = PDMAUDIORECSRC_LINE;550 pCfg->enmPath = PDMAUDIOPATH_IN_LINE; 551 551 pCfg->enmLayout = PDMAUDIOSTREAMLAYOUT_NON_INTERLEAVED; 552 552 RTStrCopy(pCfg->szName, sizeof(pCfg->szName), "Line In"); -
trunk/src/VBox/Devices/Audio/DevIchAc97.cpp
r89213 r89218 659 659 660 660 static void ichac97R3MixerRemoveDrvStreams(PPDMDEVINS pDevIns, PAC97STATER3 pThisCC, PAUDMIXSINK pMixSink, 661 PDMAUDIODIR enmDir, PDMAUDIO DSTSRCUNION dstSrc);661 PDMAUDIODIR enmDir, PDMAUDIOPATH enmPath); 662 662 663 663 DECLINLINE(PDMAUDIODIR) ichac97GetDirFromSD(uint8_t uSD); … … 1150 1150 * Destroy all sinks. 1151 1151 */ 1152 PDMAUDIODSTSRCUNION dstSrc; /** @todo r=bird: this is just impractical. combine the two enums into one, they already have no overlapping values. */1153 1152 if (pThisCC->pSinkLineIn) 1154 1153 { 1155 dstSrc.enmSrc = PDMAUDIORECSRC_LINE; 1156 ichac97R3MixerRemoveDrvStreams(pDevIns, pThisCC, pThisCC->pSinkLineIn, PDMAUDIODIR_IN, dstSrc); 1154 ichac97R3MixerRemoveDrvStreams(pDevIns, pThisCC, pThisCC->pSinkLineIn, PDMAUDIODIR_IN, PDMAUDIOPATH_IN_LINE); 1157 1155 1158 1156 AudioMixerSinkDestroy(pThisCC->pSinkLineIn, pDevIns); … … 1162 1160 if (pThisCC->pSinkMicIn) 1163 1161 { 1164 dstSrc.enmSrc = PDMAUDIORECSRC_MIC; 1165 ichac97R3MixerRemoveDrvStreams(pDevIns, pThisCC, pThisCC->pSinkMicIn, PDMAUDIODIR_IN, dstSrc); 1162 ichac97R3MixerRemoveDrvStreams(pDevIns, pThisCC, pThisCC->pSinkMicIn, PDMAUDIODIR_IN, PDMAUDIOPATH_IN_MIC); 1166 1163 1167 1164 AudioMixerSinkDestroy(pThisCC->pSinkMicIn, pDevIns); … … 1171 1168 if (pThisCC->pSinkOut) 1172 1169 { 1173 dstSrc.enmDst = PDMAUDIOPLAYBACKDST_FRONT; 1174 ichac97R3MixerRemoveDrvStreams(pDevIns, pThisCC, pThisCC->pSinkOut, PDMAUDIODIR_OUT, dstSrc); 1170 ichac97R3MixerRemoveDrvStreams(pDevIns, pThisCC, pThisCC->pSinkOut, PDMAUDIODIR_OUT, PDMAUDIOPATH_OUT_FRONT); 1175 1171 1176 1172 AudioMixerSinkDestroy(pThisCC->pSinkOut, pDevIns); … … 1434 1430 * 1435 1431 * @returns Pointer to driver stream if found, or NULL if not found. 1436 * @param pDrv 1437 * @param enmDir 1438 * @param dstSrcStream destination / source to retrieve.1439 */ 1440 static PAC97DRIVERSTREAM ichac97R3MixerGetDrvStream(PAC97DRIVER pDrv, PDMAUDIODIR enmDir, PDMAUDIO DSTSRCUNION dstSrc)1432 * @param pDrv Driver to retrieve driver stream for. 1433 * @param enmDir Stream direction to retrieve. 1434 * @param enmPath Stream destination / source to retrieve. 1435 */ 1436 static PAC97DRIVERSTREAM ichac97R3MixerGetDrvStream(PAC97DRIVER pDrv, PDMAUDIODIR enmDir, PDMAUDIOPATH enmPath) 1441 1437 { 1442 1438 PAC97DRIVERSTREAM pDrvStream = NULL; … … 1444 1440 if (enmDir == PDMAUDIODIR_IN) 1445 1441 { 1446 LogFunc(("enmRecSource=%d\n", dstSrc.enmSrc));1447 1448 switch ( dstSrc.enmSrc)1442 LogFunc(("enmRecSource=%d\n", enmPath)); 1443 1444 switch (enmPath) 1449 1445 { 1450 case PDMAUDIO RECSRC_LINE:1446 case PDMAUDIOPATH_IN_LINE: 1451 1447 pDrvStream = &pDrv->LineIn; 1452 1448 break; 1453 case PDMAUDIO RECSRC_MIC:1449 case PDMAUDIOPATH_IN_MIC: 1454 1450 pDrvStream = &pDrv->MicIn; 1455 1451 break; … … 1461 1457 else if (enmDir == PDMAUDIODIR_OUT) 1462 1458 { 1463 LogFunc(("enmPlaybackD est=%d\n", dstSrc.enmDst));1464 1465 switch ( dstSrc.enmDst)1459 LogFunc(("enmPlaybackDst=%d\n", enmPath)); 1460 1461 switch (enmPath) 1466 1462 { 1467 case PDMAUDIOP LAYBACKDST_FRONT:1463 case PDMAUDIOPATH_OUT_FRONT: 1468 1464 pDrvStream = &pDrv->Out; 1469 1465 break; … … 1503 1499 int rc; 1504 1500 1505 PAC97DRIVERSTREAM pDrvStream = ichac97R3MixerGetDrvStream(pDrv, pStreamCfg->enmDir, pStreamCfg-> u);1501 PAC97DRIVERSTREAM pDrvStream = ichac97R3MixerGetDrvStream(pDrv, pStreamCfg->enmDir, pStreamCfg->enmPath); 1506 1502 if (pDrvStream) 1507 1503 { … … 1678 1674 * @param pMixSink Mixer sink to remove audio streams from. 1679 1675 * @param enmDir Stream direction to remove. 1680 * @param dstSrcStream destination / source to remove.1676 * @param enmPath Stream destination / source to remove. 1681 1677 * @param pDrv Driver stream to remove. 1682 1678 */ 1683 1679 static void ichac97R3MixerRemoveDrvStream(PPDMDEVINS pDevIns, PAUDMIXSINK pMixSink, PDMAUDIODIR enmDir, 1684 PDMAUDIO DSTSRCUNION dstSrc, PAC97DRIVER pDrv)1685 { 1686 PAC97DRIVERSTREAM pDrvStream = ichac97R3MixerGetDrvStream(pDrv, enmDir, dstSrc);1680 PDMAUDIOPATH enmPath, PAC97DRIVER pDrv) 1681 { 1682 PAC97DRIVERSTREAM pDrvStream = ichac97R3MixerGetDrvStream(pDrv, enmDir, enmPath); 1687 1683 if (pDrvStream) 1688 1684 { … … 1704 1700 * @param pMixSink Mixer sink to remove audio streams from. 1705 1701 * @param enmDir Stream direction to remove. 1706 * @param dstSrcStream destination / source to remove.1702 * @param enmPath Stream destination / source to remove. 1707 1703 */ 1708 1704 static void ichac97R3MixerRemoveDrvStreams(PPDMDEVINS pDevIns, PAC97STATER3 pThisCC, PAUDMIXSINK pMixSink, 1709 PDMAUDIODIR enmDir, PDMAUDIO DSTSRCUNION dstSrc)1705 PDMAUDIODIR enmDir, PDMAUDIOPATH enmPath) 1710 1706 { 1711 1707 AssertPtrReturnVoid(pMixSink); … … 1714 1710 RTListForEach(&pThisCC->lstDrv, pDrv, AC97DRIVER, Node) 1715 1711 { 1716 ichac97R3MixerRemoveDrvStream(pDevIns, pMixSink, enmDir, dstSrc, pDrv);1712 ichac97R3MixerRemoveDrvStream(pDevIns, pMixSink, enmDir, enmPath, pDrv); 1717 1713 } 1718 1714 } … … 1793 1789 ichac97MixerGet(pThis, AC97_PCM_LR_ADC_Rate)); 1794 1790 Cfg.enmDir = PDMAUDIODIR_IN; 1795 Cfg. u.enmSrc = PDMAUDIORECSRC_LINE;1791 Cfg.enmPath = PDMAUDIOPATH_IN_LINE; 1796 1792 Cfg.enmLayout = PDMAUDIOSTREAMLAYOUT_NON_INTERLEAVED; 1797 1793 RTStrCopy(Cfg.szName, sizeof(Cfg.szName), "Line-In"); … … 1806 1802 ichac97MixerGet(pThis, AC97_MIC_ADC_Rate)); 1807 1803 Cfg.enmDir = PDMAUDIODIR_IN; 1808 Cfg. u.enmSrc = PDMAUDIORECSRC_MIC;1804 Cfg.enmPath = PDMAUDIOPATH_IN_MIC; 1809 1805 Cfg.enmLayout = PDMAUDIOSTREAMLAYOUT_NON_INTERLEAVED; 1810 1806 RTStrCopy(Cfg.szName, sizeof(Cfg.szName), "Mic-In"); … … 1819 1815 ichac97MixerGet(pThis, AC97_PCM_Front_DAC_Rate)); 1820 1816 Cfg.enmDir = PDMAUDIODIR_OUT; 1821 Cfg. u.enmDst = PDMAUDIOPLAYBACKDST_FRONT;1817 Cfg.enmPath = PDMAUDIOPATH_OUT_FRONT; 1822 1818 Cfg.enmLayout = PDMAUDIOSTREAMLAYOUT_NON_INTERLEAVED; 1823 1819 RTStrCopy(Cfg.szName, sizeof(Cfg.szName), "Output"); … … 1877 1873 pStreamCC->State.StatDmaBufSize = (uint32_t)RTCircBufSize(pStreamCC->State.pCircBuf); 1878 1874 1879 ichac97R3MixerRemoveDrvStreams(pDevIns, pThisCC, pMixSink, Cfg.enmDir, Cfg. u);1875 ichac97R3MixerRemoveDrvStreams(pDevIns, pThisCC, pMixSink, Cfg.enmDir, Cfg.enmPath); 1880 1876 rc = ichac97R3MixerAddDrvStreams(pDevIns, pThisCC, pMixSink, &Cfg); 1881 1877 if (RT_SUCCESS(rc)) … … 2182 2178 * @param uIdx AC'97 index to convert. 2183 2179 */ 2184 static PDMAUDIO RECSRCichac97R3IdxToRecSource(uint8_t uIdx)2180 static PDMAUDIOPATH ichac97R3IdxToRecSource(uint8_t uIdx) 2185 2181 { 2186 2182 switch (uIdx) 2187 2183 { 2188 case AC97_REC_MIC: return PDMAUDIO RECSRC_MIC;2189 case AC97_REC_CD: return PDMAUDIO RECSRC_CD;2190 case AC97_REC_VIDEO: return PDMAUDIO RECSRC_VIDEO;2191 case AC97_REC_AUX: return PDMAUDIO RECSRC_AUX;2192 case AC97_REC_LINE_IN: return PDMAUDIO RECSRC_LINE;2193 case AC97_REC_PHONE: return PDMAUDIO RECSRC_PHONE;2184 case AC97_REC_MIC: return PDMAUDIOPATH_IN_MIC; 2185 case AC97_REC_CD: return PDMAUDIOPATH_IN_CD; 2186 case AC97_REC_VIDEO: return PDMAUDIOPATH_IN_VIDEO; 2187 case AC97_REC_AUX: return PDMAUDIOPATH_IN_AUX; 2188 case AC97_REC_LINE_IN: return PDMAUDIOPATH_IN_LINE; 2189 case AC97_REC_PHONE: return PDMAUDIOPATH_IN_PHONE; 2194 2190 default: 2195 2191 break; … … 2197 2193 2198 2194 LogFlowFunc(("Unknown record source %d, using MIC\n", uIdx)); 2199 return PDMAUDIO RECSRC_MIC;2195 return PDMAUDIOPATH_IN_MIC; 2200 2196 } 2201 2197 … … 2206 2202 * @param enmRecSrc PDM audio recording source to convert. 2207 2203 */ 2208 static uint8_t ichac97R3RecSourceToIdx(PDMAUDIO RECSRCenmRecSrc)2204 static uint8_t ichac97R3RecSourceToIdx(PDMAUDIOPATH enmRecSrc) 2209 2205 { 2210 2206 switch (enmRecSrc) 2211 2207 { 2212 case PDMAUDIORECSRC_MIC: return AC97_REC_MIC; 2213 case PDMAUDIORECSRC_CD: return AC97_REC_CD; 2214 case PDMAUDIORECSRC_VIDEO: return AC97_REC_VIDEO; 2215 case PDMAUDIORECSRC_AUX: return AC97_REC_AUX; 2216 case PDMAUDIORECSRC_LINE: return AC97_REC_LINE_IN; 2217 case PDMAUDIORECSRC_PHONE: return AC97_REC_PHONE; 2218 /* no default */ 2219 case PDMAUDIORECSRC_UNKNOWN: 2220 case PDMAUDIORECSRC_END: 2221 case PDMAUDIORECSRC_32BIT_HACK: 2222 break; 2208 case PDMAUDIOPATH_IN_MIC: return AC97_REC_MIC; 2209 case PDMAUDIOPATH_IN_CD: return AC97_REC_CD; 2210 case PDMAUDIOPATH_IN_VIDEO: return AC97_REC_VIDEO; 2211 case PDMAUDIOPATH_IN_AUX: return AC97_REC_AUX; 2212 case PDMAUDIOPATH_IN_LINE: return AC97_REC_LINE_IN; 2213 case PDMAUDIOPATH_IN_PHONE: return AC97_REC_PHONE; 2214 default: 2215 AssertMsgFailedBreak(("%d\n", enmRecSrc)); 2223 2216 } 2224 2217 … … 2261 2254 uint8_t ls = (val >> 8) & AC97_REC_MASK; 2262 2255 2263 const PDMAUDIORECSRCars = ichac97R3IdxToRecSource(rs);2264 const PDMAUDIORECSRCals = ichac97R3IdxToRecSource(ls);2256 PDMAUDIOPATH const ars = ichac97R3IdxToRecSource(rs); 2257 PDMAUDIOPATH const als = ichac97R3IdxToRecSource(ls); 2265 2258 2266 2259 rs = ichac97R3RecSourceToIdx(ars); 2267 2260 ls = ichac97R3RecSourceToIdx(als); 2268 2261 2269 LogRel(("AC97: Record select to left=%s, right=%s\n", PDMAudio RecSrcGetName(ars), PDMAudioRecSrcGetName(als)));2262 LogRel(("AC97: Record select to left=%s, right=%s\n", PDMAudioPathGetName(ars), PDMAudioPathGetName(als))); 2270 2263 2271 2264 ichac97MixerSet(pThis, AC97_Record_Select, rs | (ls << 8)); … … 3671 3664 * and we pick a different one here? I also don't get why we need to do this in revese order, given that 3672 3665 * the primary device is first. I guess this code isn't really tested. */ 3673 PDMAUDIODSTSRCUNION dstSrc;3674 3666 PAC97DRIVER pDrvCur; 3675 3667 RTListForEachReverse(&pThisCC->lstDrv, pDrvCur, AC97DRIVER, Node) … … 3683 3675 continue; 3684 3676 3685 dstSrc.enmSrc = PDMAUDIORECSRC_MIC; 3686 PAC97DRIVERSTREAM pDrvStrm = ichac97R3MixerGetDrvStream(pDrvCur, PDMAUDIODIR_IN, dstSrc); 3677 PAC97DRIVERSTREAM pDrvStrm = ichac97R3MixerGetDrvStream(pDrvCur, PDMAUDIODIR_IN, PDMAUDIOPATH_IN_MIC); 3687 3678 if ( pDrvStrm 3688 3679 && pDrvStrm->pMixStrm) … … 3693 3684 } 3694 3685 3695 dstSrc.enmSrc = PDMAUDIORECSRC_LINE; 3696 pDrvStrm = ichac97R3MixerGetDrvStream(pDrvCur, PDMAUDIODIR_IN, dstSrc); 3686 pDrvStrm = ichac97R3MixerGetDrvStream(pDrvCur, PDMAUDIODIR_IN, PDMAUDIOPATH_IN_LINE); 3697 3687 if ( pDrvStrm 3698 3688 && pDrvStrm->pMixStrm) -
trunk/src/VBox/Devices/Audio/DevSB16.cpp
r89213 r89218 1747 1747 * @param pDrv Driver to retrieve driver stream for. 1748 1748 * @param enmDir Stream direction to retrieve. 1749 * @param dstSrcStream destination / source to retrieve.1750 */ 1751 static PSB16DRIVERSTREAM sb16GetDrvStream(PSB16DRIVER pDrv, PDMAUDIODIR enmDir, PDMAUDIO DSTSRCUNION dstSrc)1749 * @param enmPath Stream destination / source to retrieve. 1750 */ 1751 static PSB16DRIVERSTREAM sb16GetDrvStream(PSB16DRIVER pDrv, PDMAUDIODIR enmDir, PDMAUDIOPATH enmPath) 1752 1752 { 1753 1753 PSB16DRIVERSTREAM pDrvStream = NULL; 1754 1754 1755 if (enmDir == PDMAUDIODIR_IN)1756 return NULL; /** @todo Recording not implemented yet. */1757 1758 1755 if (enmDir == PDMAUDIODIR_OUT) 1759 1756 { 1760 LogFunc(("enm Dst=%RU32\n", dstSrc.enmDst));1761 1762 switch ( dstSrc.enmDst)1757 LogFunc(("enmPath=%d\n", enmPath)); 1758 1759 switch (enmPath) 1763 1760 { 1764 case PDMAUDIOP LAYBACKDST_FRONT:1761 case PDMAUDIOPATH_OUT_FRONT: 1765 1762 pDrvStream = &pDrv->Out; 1766 1763 break; … … 1771 1768 } 1772 1769 else 1773 Assert Failed();1770 Assert(enmDir == PDMAUDIODIR_IN /** @todo Recording not implemented yet. */); 1774 1771 1775 1772 return pDrvStream; … … 1800 1797 int rc; 1801 1798 1802 PSB16DRIVERSTREAM pDrvStream = sb16GetDrvStream(pDrv, pStreamCfg->enmDir, pStreamCfg-> u);1799 PSB16DRIVERSTREAM pDrvStream = sb16GetDrvStream(pDrv, pStreamCfg->enmDir, pStreamCfg->enmPath); 1803 1800 if (pDrvStream) 1804 1801 { … … 1868 1865 * @param pMixSink Mixer sink to remove audio streams from. 1869 1866 * @param enmDir Stream direction to remove. 1870 * @param dstSrcStream destination / source to remove.1867 * @param enmPath Stream destination / source to remove. 1871 1868 * @param pDrv Driver stream to remove. 1872 1869 */ 1873 1870 static void sb16RemoveDrvStream(PPDMDEVINS pDevIns, PAUDMIXSINK pMixSink, PDMAUDIODIR enmDir, 1874 PDMAUDIO DSTSRCUNION dstSrc, PSB16DRIVER pDrv)1875 { 1876 PSB16DRIVERSTREAM pDrvStream = sb16GetDrvStream(pDrv, enmDir, dstSrc);1871 PDMAUDIOPATH enmPath, PSB16DRIVER pDrv) 1872 { 1873 PSB16DRIVERSTREAM pDrvStream = sb16GetDrvStream(pDrv, enmDir, enmPath); 1877 1874 if (pDrvStream) 1878 1875 { … … 1896 1893 * @param pMixSink Mixer sink to remove audio streams from. 1897 1894 * @param enmDir Stream direction to remove. 1898 * @param dstSrcStream destination / source to remove.1895 * @param enmPath Stream destination / source to remove. 1899 1896 */ 1900 1897 static void sb16RemoveDrvStreams(PPDMDEVINS pDevIns, PSB16STATE pThis, PAUDMIXSINK pMixSink, 1901 PDMAUDIODIR enmDir, PDMAUDIO DSTSRCUNION dstSrc)1898 PDMAUDIODIR enmDir, PDMAUDIOPATH enmPath) 1902 1899 { 1903 1900 AssertPtrReturnVoid(pMixSink); … … 1906 1903 RTListForEach(&pThis->lstDrv, pDrv, SB16DRIVER, Node) 1907 1904 { 1908 sb16RemoveDrvStream(pDevIns, pMixSink, enmDir, dstSrc, pDrv);1905 sb16RemoveDrvStream(pDevIns, pMixSink, enmDir, enmPath, pDrv); 1909 1906 } 1910 1907 } … … 2209 2206 { 2210 2207 pStream->Cfg.enmDir = PDMAUDIODIR_OUT; 2211 pStream->Cfg. u.enmDst = PDMAUDIOPLAYBACKDST_FRONT;2208 pStream->Cfg.enmPath = PDMAUDIOPATH_OUT_FRONT; 2212 2209 pStream->Cfg.enmLayout = PDMAUDIOSTREAMLAYOUT_NON_INTERLEAVED; 2213 2210 … … 2252 2249 AssertReturn(PDMAudioPropsAreValid(&pStream->Cfg.Props), VERR_INVALID_PARAMETER); 2253 2250 2254 PDMAUDIODSTSRCUNION dstSrc;2255 PDMAUDIODIR enmDir;2256 2257 2251 switch (pStream->uIdx) 2258 2252 { 2259 2253 case SB16_IDX_OUT: 2260 {2261 2254 pStream->Cfg.enmDir = PDMAUDIODIR_OUT; 2262 pStream->Cfg. u.enmDst = PDMAUDIOPLAYBACKDST_FRONT;2255 pStream->Cfg.enmPath = PDMAUDIOPATH_OUT_FRONT; 2263 2256 pStream->Cfg.enmLayout = PDMAUDIOSTREAMLAYOUT_NON_INTERLEAVED; 2264 2257 2265 2258 RTStrCopy(pStream->Cfg.szName, sizeof(pStream->Cfg.szName), "Output"); 2266 2267 dstSrc.enmDst = PDMAUDIOPLAYBACKDST_FRONT; 2268 enmDir = PDMAUDIODIR_OUT; 2269 break; 2270 } 2259 break; 2271 2260 2272 2261 default: … … 2301 2290 2302 2291 sb16RemoveDrvStreams(pDevIns, pThis, 2303 sb16StreamIndexToSink(pThis, pStream->uIdx), pStream->Cfg.enmDir, pStream->Cfg. u);2292 sb16StreamIndexToSink(pThis, pStream->uIdx), pStream->Cfg.enmDir, pStream->Cfg.enmPath); 2304 2293 2305 2294 rc = sb16AddDrvStreams(pDevIns, pThis, pMixerSink, &pStream->Cfg); -
trunk/src/VBox/Devices/Audio/DrvHostAudioDSound.cpp
r89213 r89218 624 624 { 625 625 PDSOUNDDEV pDev = NULL; 626 switch (pCfg-> u.enmSrc)627 { 628 case PDMAUDIO RECSRC_LINE:626 switch (pCfg->enmPath) 627 { 628 case PDMAUDIOPATH_IN_LINE: 629 629 /* 630 630 * At the moment we're only supporting line-in in the HDA emulation, … … 634 634 * So the fall through here is intentional for now. 635 635 */ 636 case PDMAUDIO RECSRC_MIC:636 case PDMAUDIOPATH_IN_MIC: 637 637 pDev = (PDSOUNDDEV)DrvAudioHlpDeviceEnumGetDefaultDevice(&pThis->DeviceEnum, PDMAUDIODIR_IN); 638 638 break; … … 647 647 { 648 648 DSLOG(("DSound: Guest source '%s' is using host recording device '%s'\n", 649 PDMAudio RecSrcGetName(pCfg->u.enmSrc), pDev->Core.szName));649 PDMAudioPathGetName(pCfg->enmPath), pDev->Core.szName)); 650 650 pGUID = &pDev->Guid; 651 651 } … … 660 660 char *pszGUID = dsoundGUIDToUtf8StrA(pGUID); 661 661 LogRel(("DSound: Guest source '%s' is using host recording device with GUID '%s'\n", 662 PDMAudio RecSrcGetName(pCfg->u.enmSrc), pszGUID ? pszGUID: "{?}"));662 PDMAudioPathGetName(pCfg->enmPath), pszGUID ? pszGUID: "{?}")); 663 663 RTStrFree(pszGUID); 664 664 … … 1649 1649 1650 1650 const char * const pszStreamType = pCfgReq->enmDir == PDMAUDIODIR_IN ? "capture" : "playback"; RT_NOREF(pszStreamType); 1651 LogFlowFunc(("enmSrc/Dst=%s '%s'\n", 1652 pCfgReq->enmDir == PDMAUDIODIR_IN ? PDMAudioRecSrcGetName(pCfgReq->u.enmSrc) 1653 : PDMAudioPlaybackDstGetName(pCfgReq->u.enmDst), pCfgReq->szName)); 1651 LogFlowFunc(("enmPath=%s '%s'\n", PDMAudioPathGetName(pCfgReq->enmPath), pCfgReq->szName)); 1654 1652 RTListInit(&pStreamDS->ListEntry); /* paranoia */ 1655 1653 -
trunk/src/VBox/Devices/Audio/DrvHostAudioPulseAudio.cpp
r89213 r89218 1038 1038 */ 1039 1039 char szName[256]; 1040 RTStrPrintf(szName, sizeof(szName), "VirtualBox %s [%s]", 1041 pCfgReq->enmDir == PDMAUDIODIR_IN 1042 ? PDMAudioRecSrcGetName(pCfgReq->u.enmSrc) : PDMAudioPlaybackDstGetName(pCfgReq->u.enmDst), 1043 pThis->szStreamName); 1040 RTStrPrintf(szName, sizeof(szName), "VirtualBox %s [%s]", PDMAudioPathGetName(pCfgReq->enmPath), pThis->szStreamName); 1044 1041 1045 1042 pStreamPA->pDrv = pThis; -
trunk/src/VBox/Devices/Audio/DrvHostAudioWasApi.cpp
r89213 r89218 1767 1767 1768 1768 const char * const pszStreamType = pCfgReq->enmDir == PDMAUDIODIR_IN ? "capture" : "playback"; RT_NOREF(pszStreamType); 1769 LogFlowFunc(("enmSrc/Dst=%s '%s'\n", 1770 pCfgReq->enmDir == PDMAUDIODIR_IN ? PDMAudioRecSrcGetName(pCfgReq->u.enmSrc) 1771 : PDMAudioPlaybackDstGetName(pCfgReq->u.enmDst), pCfgReq->szName)); 1769 LogFlowFunc(("enmPath=%s '%s'\n", PDMAudioPathGetName(pCfgReq->enmPath), pCfgReq->szName)); 1772 1770 #if defined(RTLOG_REL_ENABLED) || defined(LOG_ENABLED) 1773 1771 char szTmp[64]; -
trunk/src/VBox/Main/src-client/DrvAudioRec.cpp
r89213 r89218 409 409 AssertPtrReturn(pCfgAcq, VERR_INVALID_POINTER); 410 410 411 if (pCfgReq-> u.enmDst != PDMAUDIOPLAYBACKDST_FRONT)411 if (pCfgReq->enmPath != PDMAUDIOPATH_OUT_FRONT) 412 412 { 413 413 LogRel2(("Recording: Support for surround audio not implemented yet\n"));
Note:
See TracChangeset
for help on using the changeset viewer.