- Timestamp:
- Oct 20, 2016 2:23:29 PM (8 years ago)
- Location:
- trunk/src/VBox/Devices
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Audio/DevIchAc97.cpp
r63863 r64333 425 425 #ifndef VBOX_DEVICE_STRUCT_TESTCASE 426 426 427 #if 0 /* unused */428 427 static void ichac97DestroyIn(PAC97STATE pThis, PDMAUDIORECSOURCE enmRecSource); 429 428 static void ichac97DestroyOut(PAC97STATE pThis); 430 #endif431 429 DECLINLINE(PAC97STREAM) ichac97GetStreamFromID(PAC97STATE pThis, uint32_t uID); 432 430 static int ichac97StreamInit(PAC97STREAM pStream, uint8_t u8Strm); … … 679 677 LogFlowFuncEnter(); 680 678 681 ichac97StreamInit(&pThis->StreamLineIn, AC97SOUNDSOURCE_PI_INDEX); 682 ichac97StreamInit(&pThis->StreamMicIn, AC97SOUNDSOURCE_MC_INDEX); 683 ichac97StreamInit(&pThis->StreamOut, AC97SOUNDSOURCE_PO_INDEX); 684 685 return VINF_SUCCESS; 679 int rc = ichac97StreamInit (&pThis->StreamLineIn, AC97SOUNDSOURCE_PI_INDEX); 680 if (RT_SUCCESS(rc)) 681 rc = ichac97StreamInit (&pThis->StreamMicIn, AC97SOUNDSOURCE_MC_INDEX); 682 if (RT_SUCCESS(rc)) 683 rc = ichac97StreamInit(&pThis->StreamOut, AC97SOUNDSOURCE_PO_INDEX); 684 685 /* Open all streams with the current AC'97 mixer settings. */ 686 if (RT_SUCCESS(rc)) 687 { 688 rc = ichac97StreamOpen (pThis, &pThis->StreamLineIn); 689 if (RT_SUCCESS(rc)) 690 rc = ichac97StreamOpen (pThis, &pThis->StreamMicIn); 691 if (RT_SUCCESS(rc)) 692 rc = ichac97StreamOpen(pThis, &pThis->StreamOut); 693 } 694 695 LogFlowFunc(("Returning %Rrc\n", rc)); 696 return rc; 697 } 698 699 static void ichac97StreamsDestroy(PAC97STATE pThis) 700 { 701 LogFlowFuncEnter(); 702 703 ichac97DestroyIn(pThis, PDMAUDIORECSOURCE_LINE); 704 ichac97DestroyIn(pThis, PDMAUDIORECSOURCE_MIC); 705 ichac97DestroyOut(pThis); 706 707 ichac97StreamDestroy(&pThis->StreamLineIn); 708 ichac97StreamDestroy(&pThis->StreamMicIn); 709 ichac97StreamDestroy(&pThis->StreamOut); 686 710 } 687 711 … … 713 737 } 714 738 715 #if 0 /* unused */716 739 static void ichac97DestroyIn(PAC97STATE pThis, PDMAUDIORECSOURCE enmRecSource) 717 740 { … … 763 786 if (pDrv->Out.pMixStrm) 764 787 { 765 AudioMixerSinkRemoveStream(pThis->pSinkOut put, pDrv->Out.pMixStrm);788 AudioMixerSinkRemoveStream(pThis->pSinkOut, pDrv->Out.pMixStrm); 766 789 AudioMixerStreamDestroy(pDrv->Out.pMixStrm); 767 790 … … 770 793 } 771 794 } 772 #endif773 795 774 796 static int ichac97CreateIn(PAC97STATE pThis, … … 1412 1434 1413 1435 #ifndef VBOX_WITH_AUDIO_AC97_CALLBACKS 1414 #if 01415 static int ichac97TimerStart(PAC97STATE pThis)1416 {1417 /*int rc = RTCritSectEnter(&pThis->csTimer);1418 if (RT_SUCCESS(rc))*/1419 {1420 AssertPtr(pThis->pTimer);1421 1422 const bool fIsActive = TMTimerIsActive(pThis->pTimer);1423 1424 LogFunc(("cStreamsActive=%RU8, fIsActive=%RTbool\n", pThis->cStreamsActive, fIsActive));1425 1426 if (!fIsActive) /* Timer not started yet? */1427 {1428 LogFunc(("Starting timer\n"));1429 LogRel3(("AC97: Starting timer\n"));1430 1431 /* Update current time timestamp. */1432 pThis->uTimerTS = TMTimerGet(pThis->pTimer);1433 1434 /* Fire off timer. */1435 TMTimerSet(pThis->pTimer, TMTimerGet(pThis->pTimer) + pThis->cTimerTicks);1436 }1437 1438 /*int rc2 = RTCritSectLeave(&pThis->csTimer);1439 if (RT_SUCCESS(rc))1440 rc = rc2;*/1441 }1442 1443 return 0;1444 }1445 #endif1446 1436 1447 1437 static void ichac97TimerMaybeStart(PAC97STATE pThis) … … 2549 2539 LogFlowFuncEnter(); 2550 2540 2551 ichac97StreamDestroy(&pThis->StreamLineIn); 2552 ichac97StreamDestroy(&pThis->StreamMicIn); 2553 ichac97StreamDestroy(&pThis->StreamOut); 2541 ichac97StreamsDestroy(pThis); 2554 2542 2555 2543 PAC97DRIVER pDrv, pDrvNext; … … 2901 2889 2902 2890 if (RT_SUCCESS(rc)) 2891 { 2903 2892 ichac97StreamsInit(pThis); 2904 2893 2905 # ifndef VBOX_WITH_AUDIO_AC97_CALLBACKS 2894 #ifdef VBOX_WITH_AUDIO_AC97_ONETIME_INIT 2895 PAC97DRIVER pDrv; 2896 RTListForEach(&pThis->lstDrv, pDrv, AC97DRIVER, Node) 2897 { 2898 /* 2899 * Only primary drivers are critical for the VM to run. Everything else 2900 * might not worth showing an own error message box in the GUI. 2901 */ 2902 if (!(pDrv->Flags & PDMAUDIODRVFLAGS_PRIMARY)) 2903 continue; 2904 2905 PPDMIAUDIOCONNECTOR pCon = pDrv->pConnector; 2906 AssertPtr(pCon); 2907 2908 bool fValidLineIn = AudioMixerStreamIsValid(pDrv->LineIn.pMixStrm); 2909 bool fValidMicIn = AudioMixerStreamIsValid(pDrv->MicIn.pMixStrm); 2910 bool fValidOut = AudioMixerStreamIsValid(pDrv->Out.pMixStrm); 2911 2912 if ( !fValidLineIn 2913 && !fValidMicIn 2914 && !fValidOut) 2915 { 2916 LogRel(("AC97: Falling back to NULL backend (no sound audible)\n")); 2917 2918 /* Destroy the streams before re-attaching the NULL driver. */ 2919 ichac97StreamsDestroy(pThis); 2920 2921 ichac97Reset(pDevIns); 2922 ichac97Reattach(pThis, pDrv, pDrv->uLUN, "NullAudio"); 2923 2924 ichac97StreamsInit(pThis); 2925 2926 PDMDevHlpVMSetRuntimeError(pDevIns, 0 /*fFlags*/, "HostAudioNotResponding", 2927 N_("No audio devices could be opened. Selecting the NULL audio backend " 2928 "with the consequence that no sound is audible")); 2929 } 2930 else 2931 { 2932 bool fWarn = false; 2933 2934 PDMAUDIOBACKENDCFG backendCfg; 2935 int rc2 = pCon->pfnGetConfig(pCon, &backendCfg); 2936 if (RT_SUCCESS(rc2)) 2937 { 2938 if (backendCfg.cMaxStreamsIn) 2939 { 2940 /* If the audio backend supports two or more input streams at once, 2941 * warn if one of our two inputs (microphone-in and line-in) failed to initialize. */ 2942 if (backendCfg.cMaxStreamsIn >= 2) 2943 fWarn = !fValidLineIn || !fValidMicIn; 2944 /* If the audio backend only supports one input stream at once (e.g. pure ALSA, and 2945 * *not* ALSA via PulseAudio plugin!), only warn if both of our inputs failed to initialize. 2946 * One of the two simply is not in use then. */ 2947 else if (backendCfg.cMaxStreamsIn == 1) 2948 fWarn = !fValidLineIn && !fValidMicIn; 2949 /* Don't warn if our backend is not able of supporting any input streams at all. */ 2950 } 2951 2952 if ( !fWarn 2953 && backendCfg.cMaxStreamsOut) 2954 { 2955 fWarn = !fValidOut; 2956 } 2957 } 2958 else 2959 { 2960 LogRel(("AC97: Unable to retrieve audio backend configuration for LUN #%RU8, rc=%Rrc\n", pDrv->uLUN, rc2)); 2961 fWarn = true; 2962 } 2963 2964 if (fWarn) 2965 { 2966 char szMissingStreams[255] = ""; 2967 size_t len = 0; 2968 if (!fValidLineIn) 2969 { 2970 LogRel(("AC97: WARNING: Unable to open PCM line input for LUN #%RU8!\n", pDrv->uLUN)); 2971 len = RTStrPrintf(szMissingStreams, sizeof(szMissingStreams), "PCM Input"); 2972 } 2973 if (!fValidMicIn) 2974 { 2975 LogRel(("AC97: WARNING: Unable to open PCM microphone input for LUN #%RU8!\n", pDrv->uLUN)); 2976 len += RTStrPrintf(szMissingStreams + len, 2977 sizeof(szMissingStreams) - len, len ? ", PCM Microphone" : "PCM Microphone"); 2978 } 2979 if (!fValidOut) 2980 { 2981 LogRel(("AC97: WARNING: Unable to open PCM output for LUN #%RU8!\n", pDrv->uLUN)); 2982 len += RTStrPrintf(szMissingStreams + len, 2983 sizeof(szMissingStreams) - len, len ? ", PCM Output" : "PCM Output"); 2984 } 2985 2986 PDMDevHlpVMSetRuntimeError(pDevIns, 0 /*fFlags*/, "HostAudioNotResponding", 2987 N_("Some AC'97 audio streams (%s) could not be opened. Guest applications generating audio " 2988 "output or depending on audio input may hang. Make sure your host audio device " 2989 "is working properly. Check the logfile for error messages of the audio " 2990 "subsystem"), szMissingStreams); 2991 } 2992 } 2993 } 2994 #endif /* VBOX_WITH_AUDIO_AC97_ONETIME_INIT */ 2995 } 2996 2997 #ifndef VBOX_WITH_AUDIO_AC97_CALLBACKS 2906 2998 if (RT_SUCCESS(rc)) 2907 2999 { … … 2922 3014 } 2923 3015 } 2924 # 3016 #else /* !VBOX_WITH_AUDIO_AC97_CALLBACKS */ 2925 3017 if (RT_SUCCESS(rc)) 2926 3018 { … … 2952 3044 } 2953 3045 } 2954 # 2955 2956 # 3046 #endif /* VBOX_WITH_AUDIO_AC97_CALLBACKS */ 3047 3048 #ifdef VBOX_WITH_STATISTICS 2957 3049 if (RT_SUCCESS(rc)) 2958 3050 { … … 2964 3056 PDMDevHlpSTAMRegister(pDevIns, &pThis->StatBytesWritten, STAMTYPE_COUNTER, "/Devices/AC97/BytesWritten", STAMUNIT_BYTES, "Bytes written to AC97 emulation."); 2965 3057 } 2966 # 3058 #endif 2967 3059 2968 3060 LogFlowFuncLeaveRC(rc); -
trunk/src/VBox/Devices/Audio/DevIchHda.cpp
r64049 r64333 57 57 #define VBOX_WITH_INTEL_HDA 58 58 59 #ifdef DEBUG_andy60 59 /* 61 60 * HDA_DEBUG_DUMP_PCM_DATA enables dumping the raw PCM data … … 63 62 * to your needs before using this! 64 63 */ 65 # define HDA_DEBUG_DUMP_PCM_DATA 64 //#define HDA_DEBUG_DUMP_PCM_DATA 65 #ifdef HDA_DEBUG_DUMP_PCM_DATA 66 66 # ifdef RT_OS_WINDOWS 67 67 # define HDA_DEBUG_DUMP_PCM_DATA_PATH "c:\\temp\\" … … 69 69 # define HDA_DEBUG_DUMP_PCM_DATA_PATH "/tmp/" 70 70 # endif 71 72 /* Enables experimental support for separate mic-in handling.73 Do not enable this yet for regular builds, as this needs more testing first! */74 //# define VBOX_WITH_HDA_MIC_IN75 71 #endif 76 72 … … 99 95 #define BIRD_THINKS_CORBRP_IS_MOSTLY_RO 100 96 101 /* Make sure that interleaving streams support is enabled if the 5.1 code is being used. */102 #if defined (VBOX_WITH_ HDA_51_SURROUND) && !defined(VBOX_WITH_HDA_INTERLEAVING_STREAMS_SUPPORT)103 # define VBOX_WITH_HDA_ INTERLEAVING_STREAMS_SUPPORT97 /* Make sure that interleaving streams support is enabled if the 5.1 surround code is being used. */ 98 #if defined (VBOX_WITH_AUDIO_HDA_51_SURROUND) && !defined(VBOX_WITH_HDA_AUDIO_INTERLEAVING_STREAMS_SUPPORT) 99 # define VBOX_WITH_HDA_AUDIO_INTERLEAVING_STREAMS_SUPPORT 104 100 #endif 105 101 … … 753 749 /** Mixer stream for line input. */ 754 750 HDAMIXERSTREAM LineIn; 755 #ifdef VBOX_WITH_ HDA_MIC_IN751 #ifdef VBOX_WITH_AUDIO_HDA_MIC_IN 756 752 /** Mixer stream for mic input. */ 757 753 HDAMIXERSTREAM MicIn; … … 759 755 /** Mixer stream for front output. */ 760 756 HDAMIXERSTREAM Front; 761 #ifdef VBOX_WITH_ HDA_51_SURROUND757 #ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND 762 758 /** Mixer stream for center/LFE output. */ 763 759 HDAMIXERSTREAM CenterLFE; … … 847 843 /** HDA sink for (front) output. */ 848 844 HDAMIXERSINK SinkFront; 849 #ifdef VBOX_WITH_ HDA_51_SURROUND845 #ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND 850 846 /** HDA sink for center / LFE output. */ 851 847 HDAMIXERSINK SinkCenterLFE; … … 855 851 /** HDA mixer sink for line input. */ 856 852 HDAMIXERSINK SinkLineIn; 857 #ifdef VBOX_WITH_ HDA_MIC_IN853 #ifdef VBOX_WITH_AUDIO_HDA_MIC_IN 858 854 /** Audio mixer sink for microphone input. */ 859 855 HDAMIXERSINK SinkMicIn; … … 1905 1901 } 1906 1902 1907 # if defined(VBOX_WITH_HDA_ INTERLEAVING_STREAMS_SUPPORT) || defined(VBOX_WITH_HDA_51_SURROUND)1903 # if defined(VBOX_WITH_HDA_AUDIO_INTERLEAVING_STREAMS_SUPPORT) || defined(VBOX_WITH_AUDIO_HDA_51_SURROUND) 1908 1904 static int hdaStreamChannelExtract(PPDMAUDIOSTREAMCHANNEL pChan, const void *pvBuf, size_t cbBuf) 1909 1905 { … … 1953 1949 return VINF_SUCCESS; 1954 1950 } 1955 # endif /* defined(VBOX_WITH_HDA_ INTERLEAVING_STREAMS_SUPPORT) || defined(VBOX_WITH_HDA_51_SURROUND) */1951 # endif /* defined(VBOX_WITH_HDA_AUDIO_INTERLEAVING_STREAMS_SUPPORT) || defined(VBOX_WITH_AUDIO_HDA_51_SURROUND) */ 1956 1952 1957 1953 # if 0 /** @todo hdaStreamChannelAdvance is unused */ … … 1997 1993 } 1998 1994 1999 # if defined(VBOX_WITH_HDA_ INTERLEAVING_STREAMS_SUPPORT) || defined(VBOX_WITH_HDA_51_SURROUND)1995 # if defined(VBOX_WITH_HDA_AUDIO_INTERLEAVING_STREAMS_SUPPORT) || defined(VBOX_WITH_AUDIO_HDA_51_SURROUND) 2000 1996 2001 1997 static int hdaStreamChannelAcquireData(PPDMAUDIOSTREAMCHANNELDATA pChanData, void *pvData, size_t *pcbData) … … 2019 2015 } 2020 2016 2021 # endif /* defined(VBOX_WITH_HDA_ INTERLEAVING_STREAMS_SUPPORT) || defined(VBOX_WITH_HDA_51_SURROUND) */2017 # endif /* defined(VBOX_WITH_HDA_AUDIO_INTERLEAVING_STREAMS_SUPPORT) || defined(VBOX_WITH_AUDIO_HDA_51_SURROUND) */ 2022 2018 2023 2019 # if 0 /* currently unused */ … … 2669 2665 2670 2666 bool fUseFront = true; /* Always use front out by default. */ 2671 #ifdef VBOX_WITH_ HDA_51_SURROUND2667 #ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND 2672 2668 bool fUseRear; 2673 2669 bool fUseCenter; … … 2716 2712 } 2717 2713 } 2718 #else /* !VBOX_WITH_ HDA_51_SURROUND */2714 #else /* !VBOX_WITH_AUDIO_HDA_51_SURROUND */ 2719 2715 /* Only support mono or stereo channels. */ 2720 2716 if ( pCfg->cChannels != 1 /* Mono */ … … 2749 2745 } 2750 2746 2751 #ifdef VBOX_WITH_ HDA_51_SURROUND2747 #ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND 2752 2748 if ( RT_SUCCESS(rc) 2753 2749 && (fUseCenter || fUseLFE)) … … 2773 2769 rc = hdaCodecAddStream(pThis->pCodec, PDMAUDIOMIXERCTL_REAR, pCfg); 2774 2770 } 2775 #endif /* VBOX_WITH_ HDA_51_SURROUND */2771 #endif /* VBOX_WITH_AUDIO_HDA_51_SURROUND */ 2776 2772 2777 2773 } while (0); … … 2801 2797 break; 2802 2798 } 2803 #ifdef VBOX_WITH_ HDA_MIC_IN2799 #ifdef VBOX_WITH_AUDIO_HDA_MIC_IN 2804 2800 case PDMAUDIORECSOURCE_MIC: 2805 2801 { … … 2849 2845 { 2850 2846 case PDMAUDIODIR_IN: 2851 # ifdef VBOX_WITH_ HDA_MIC_IN2847 # ifdef VBOX_WITH_AUDIO_HDA_MIC_IN 2852 2848 # error "Implement me!" 2853 2849 # else … … 3377 3373 { 3378 3374 pMapping->cChannels = pCfg->cChannels; 3379 #ifdef VBOX_WITH_HDA_ INTERLEAVING_STREAMS_SUPPORT3375 #ifdef VBOX_WITH_HDA_AUDIO_INTERLEAVING_STREAMS_SUPPORT 3380 3376 pMapping->enmLayout = PDMAUDIOSTREAMLAYOUT_INTERLEAVED; 3381 3377 #else … … 3674 3670 if (cbBuf >= hdaStreamGetFIFOW(pThis, pStream)) 3675 3671 { 3676 #if defined(VBOX_WITH_HDA_ INTERLEAVING_STREAMS_SUPPORT) || defined(VBOX_WITH_HDA_51_SURROUND)3672 #if defined(VBOX_WITH_HDA_AUDIO_INTERLEAVING_STREAMS_SUPPORT) || defined(VBOX_WITH_AUDIO_HDA_51_SURROUND) 3677 3673 PHDASTREAMMAPPING pMapping = &pStream->State.Mapping; 3678 3674 #endif 3679 3675 3680 3676 /** @todo Which channel is which? */ 3681 #ifdef VBOX_WITH_HDA_ INTERLEAVING_STREAMS_SUPPORT3677 #ifdef VBOX_WITH_HDA_AUDIO_INTERLEAVING_STREAMS_SUPPORT 3682 3678 PPDMAUDIOSTREAMCHANNEL pChanFront = &pMapping->paChannels[0]; 3683 3679 #endif 3684 #ifdef VBOX_WITH_ HDA_51_SURROUND3680 #ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND 3685 3681 PPDMAUDIOSTREAMCHANNEL pChanCenterLFE = &pMapping->paChannels[2]; /** @todo FIX! */ 3686 3682 PPDMAUDIOSTREAMCHANNEL pChanRear = &pMapping->paChannels[4]; /** @todo FIX! */ … … 3690 3686 void *pvDataFront = NULL; 3691 3687 size_t cbDataFront; 3692 #ifdef VBOX_WITH_HDA_ INTERLEAVING_STREAMS_SUPPORT3688 #ifdef VBOX_WITH_HDA_AUDIO_INTERLEAVING_STREAMS_SUPPORT 3693 3689 rc2 = hdaStreamChannelExtract(pChanFront, pvBuf, cbBuf); 3694 3690 AssertRC(rc2); … … 3701 3697 cbDataFront = cbBuf; 3702 3698 #endif 3703 #ifdef VBOX_WITH_ HDA_51_SURROUND3699 #ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND 3704 3700 void *pvDataCenterLFE; 3705 3701 size_t cbDataCenterLFE; … … 3724 3720 NULL /* pcbWritten */); 3725 3721 AssertRC(rc2); 3726 #ifdef VBOX_WITH_ HDA_51_SURROUND3722 #ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND 3727 3723 rc2 = AudioMixerSinkWrite(pThis->SinkCenterLFE, AUDMIXOP_COPY, pvDataCenterLFE, cbDataCenterLFE, 3728 3724 NULL /* pcbWritten */); … … 3733 3729 #endif 3734 3730 3735 #ifdef VBOX_WITH_HDA_ INTERLEAVING_STREAMS_SUPPORT3731 #ifdef VBOX_WITH_HDA_AUDIO_INTERLEAVING_STREAMS_SUPPORT 3736 3732 hdaStreamChannelReleaseData(&pChanFront->Data); 3737 3733 #endif 3738 #ifdef VBOX_WITH_ HDA_51_SURROUND3734 #ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND 3739 3735 hdaStreamChannelReleaseData(&pChanCenterLFE->Data); 3740 3736 hdaStreamChannelReleaseData(&pChanRear->Data); … … 3803 3799 pSink = &pThis->SinkFront; 3804 3800 break; 3805 #ifdef VBOX_WITH_ HDA_51_SURROUND3801 #ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND 3806 3802 case PDMAUDIOMIXERCTL_CENTER_LFE: 3807 3803 pSink = &pThis->SinkCenterLFE; … … 3814 3810 pSink = &pThis->SinkLineIn; 3815 3811 break; 3816 #ifdef VBOX_WITH_ HDA_MIC_IN3812 #ifdef VBOX_WITH_AUDIO_HDA_MIC_IN 3817 3813 case PDMAUDIOMIXERCTL_MIC_IN: 3818 3814 pSink = &pThis->SinkMicIn; … … 3870 3866 pStream = &pDrv->LineIn; 3871 3867 break; 3872 #ifdef VBOX_WITH_ HDA_MIC_IN3868 #ifdef VBOX_WITH_AUDIO_HDA_MIC_IN 3873 3869 case PDMAUDIORECSOURCE_MIC: 3874 3870 pStream = &pDrv->MicIn; … … 3889 3885 pStream = &pDrv->Front; 3890 3886 break; 3891 #ifdef VBOX_WITH_ HDA_51_SURROUND3887 #ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND 3892 3888 case PDMAUDIOPLAYBACKDEST_CENTER_LFE: 3893 3889 pStream = &pDrv->CenterLFE; … … 4001 3997 pDrv->LineIn.pMixStrm = NULL; 4002 3998 break; 4003 #ifdef VBOX_WITH_ HDA_MIC_IN3999 #ifdef VBOX_WITH_AUDIO_HDA_MIC_IN 4004 4000 case PDMAUDIOMIXERCTL_MIC_IN: 4005 4001 pMixStream = pDrv->MicIn.pMixStrm; … … 4014 4010 pDrv->Front.pMixStrm = NULL; 4015 4011 break; 4016 #ifdef VBOX_WITH_ HDA_51_SURROUND4012 #ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND 4017 4013 case PDMAUDIOMIXERCTL_CENTER_LFE: 4018 4014 pMixStream = pDrv->CenterLFE.pMixStrm; … … 4198 4194 4199 4195 PHDASTREAM pStreamLineIn = hdaGetStreamFromSink(pThis, &pThis->SinkLineIn); 4200 #ifdef VBOX_WITH_ HDA_MIC_IN4196 #ifdef VBOX_WITH_AUDIO_HDA_MIC_IN 4201 4197 PHDASTREAM pStreamMicIn = hdaGetStreamFromSink(pThis, &pThis->SinkMicIn); 4202 4198 #endif 4203 4199 PHDASTREAM pStreamFront = hdaGetStreamFromSink(pThis, &pThis->SinkFront); 4204 #ifdef VBOX_WITH_ HDA_51_SURROUND4200 #ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND 4205 4201 /** @todo See note below. */ 4206 4202 #endif … … 4218 4214 } 4219 4215 4220 #ifdef VBOX_WITH_ HDA_MIC_IN4216 #ifdef VBOX_WITH_AUDIO_HDA_MIC_IN 4221 4217 rc = AudioMixerSinkUpdate(pThis->SinkMicIn.pMixSink); 4222 4218 if (RT_SUCCESS(rc)) … … 4231 4227 #endif 4232 4228 4233 #ifdef VBOX_WITH_ HDA_51_SURROUND4229 #ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND 4234 4230 rc = AudioMixerSinkUpdate(pThis->SinkCenterLFE.pMixSink); 4235 4231 if (RT_SUCCESS(rc)) … … 5523 5519 */ 5524 5520 AudioMixerSinkCtl(pThis->SinkFront.pMixSink, AUDMIXSINKCMD_DISABLE); 5525 # ifdef VBOX_WITH_ HDA_MIC_IN5521 # ifdef VBOX_WITH_AUDIO_HDA_MIC_IN 5526 5522 AudioMixerSinkCtl(pThis->SinkMicIn.pMixSink, AUDMIXSINKCMD_DISABLE); 5527 5523 # endif 5528 5524 AudioMixerSinkCtl(pThis->SinkLineIn.pMixSink, AUDMIXSINKCMD_DISABLE); 5529 # ifdef VBOX_WITH_ HDA_51_SURROUND5525 # ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND 5530 5526 AudioMixerSinkCtl(pThis->SinkCenterLFE.pMixSink, AUDMIXSINKCMD_DISABLE); 5531 5527 AudioMixerSinkCtl(pThis->SinkRear.pMixSink, AUDMIXSINKCMD_DISABLE); … … 5539 5535 * These stream numbers can be changed by the guest dynamically lateron. 5540 5536 */ 5541 #ifdef VBOX_WITH_ HDA_MIC_IN5537 #ifdef VBOX_WITH_AUDIO_HDA_MIC_IN 5542 5538 hdaMixerSetStream(pThis, PDMAUDIOMIXERCTL_MIC_IN , 1 /* SD0 */, 0 /* Channel */); 5543 5539 #endif … … 5545 5541 5546 5542 hdaMixerSetStream(pThis, PDMAUDIOMIXERCTL_FRONT , 5 /* SD4 */, 0 /* Channel */); 5547 #ifdef VBOX_WITH_ HDA_51_SURROUND5543 #ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND 5548 5544 hdaMixerSetStream(pThis, PDMAUDIOMIXERCTL_CENTER_LFE, 5 /* SD4 */, 0 /* Channel */); 5549 5545 hdaMixerSetStream(pThis, PDMAUDIOMIXERCTL_REAR , 5 /* SD4 */, 0 /* Channel */); … … 5993 5989 * Add mixer output sinks. 5994 5990 */ 5995 #ifdef VBOX_WITH_ HDA_51_SURROUND5991 #ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND 5996 5992 rc = AudioMixerCreateSink(pThis->pMixer, "[Playback] Front", 5997 5993 AUDMIXSINKDIR_OUTPUT, &pThis->SinkFront.pMixSink); … … 6014 6010 AUDMIXSINKDIR_INPUT, &pThis->SinkLineIn.pMixSink); 6015 6011 AssertRC(rc); 6016 #ifdef VBOX_WITH_ HDA_MIC_IN6012 #ifdef VBOX_WITH_AUDIO_HDA_MIC_IN 6017 6013 rc = AudioMixerCreateSink(pThis->pMixer, "[Recording] Microphone In", 6018 6014 AUDMIXSINKDIR_INPUT, &pThis->SinkMicIn.pMixSink); … … 6065 6061 AssertRC(rc); 6066 6062 } 6063 6064 #ifdef VBOX_WITH_AUDIO_HDA_ONETIME_INIT 6065 /* 6066 * Initialize the driver chain. 6067 */ 6068 PHDADRIVER pDrv; 6069 RTListForEach(&pThis->lstDrv, pDrv, HDADRIVER, Node) 6070 { 6071 /* 6072 * Only primary drivers are critical for the VM to run. Everything else 6073 * might not worth showing an own error message box in the GUI. 6074 */ 6075 if (!(pDrv->Flags & PDMAUDIODRVFLAGS_PRIMARY)) 6076 continue; 6077 6078 PPDMIAUDIOCONNECTOR pCon = pDrv->pConnector; 6079 AssertPtr(pCon); 6080 6081 bool fValidLineIn = AudioMixerStreamIsValid(pDrv->LineIn.pMixStrm); 6082 # ifdef VBOX_WITH_AUDIO_HDA_MIC_IN 6083 bool fValidMicIn = AudioMixerStreamIsValid(pDrv->MicIn.pMixStrm); 6084 # endif 6085 bool fValidOut = AudioMixerStreamIsValid(pDrv->Front.pMixStrm); 6086 # ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND 6087 /** @todo Anything to do here? */ 6088 # endif 6089 6090 if ( !fValidLineIn 6091 # ifdef VBOX_WITH_AUDIO_HDA_MIC_IN 6092 && !fValidMicIn 6093 # endif 6094 && !fValidOut) 6095 { 6096 LogRel(("HDA: Falling back to NULL backend (no sound audible)\n")); 6097 6098 hdaReset(pDevIns); 6099 hdaReattach(pThis, pDrv, pDrv->uLUN, "NullAudio"); 6100 6101 PDMDevHlpVMSetRuntimeError(pDevIns, 0 /*fFlags*/, "HostAudioNotResponding", 6102 N_("No audio devices could be opened. Selecting the NULL audio backend " 6103 "with the consequence that no sound is audible")); 6104 } 6105 else 6106 { 6107 bool fWarn = false; 6108 6109 PDMAUDIOBACKENDCFG backendCfg; 6110 int rc2 = pCon->pfnGetConfig(pCon, &backendCfg); 6111 if (RT_SUCCESS(rc2)) 6112 { 6113 if (backendCfg.cMaxStreamsIn) 6114 { 6115 # ifdef VBOX_WITH_AUDIO_HDA_MIC_IN 6116 /* If the audio backend supports two or more input streams at once, 6117 * warn if one of our two inputs (microphone-in and line-in) failed to initialize. */ 6118 if (backendCfg.cMaxStreamsIn >= 2) 6119 fWarn = !fValidLineIn || !fValidMicIn; 6120 /* If the audio backend only supports one input stream at once (e.g. pure ALSA, and 6121 * *not* ALSA via PulseAudio plugin!), only warn if both of our inputs failed to initialize. 6122 * One of the two simply is not in use then. */ 6123 else if (backendCfg.cMaxStreamsIn == 1) 6124 fWarn = !fValidLineIn && !fValidMicIn; 6125 /* Don't warn if our backend is not able of supporting any input streams at all. */ 6126 # else /* !VBOX_WITH_AUDIO_HDA_MIC_IN */ 6127 /* We only have line-in as input source. */ 6128 fWarn = !fValidLineIn; 6129 # endif /* VBOX_WITH_AUDIO_HDA_MIC_IN */ 6130 } 6131 6132 if ( !fWarn 6133 && backendCfg.cMaxStreamsOut) 6134 { 6135 fWarn = !fValidOut; 6136 } 6137 } 6138 else 6139 { 6140 LogRel(("HDA: Unable to retrieve audio backend configuration for LUN #%RU8, rc=%Rrc\n", pDrv->uLUN, rc2)); 6141 fWarn = true; 6142 } 6143 6144 if (fWarn) 6145 { 6146 char szMissingStreams[255]; 6147 size_t len = 0; 6148 if (!fValidLineIn) 6149 { 6150 LogRel(("HDA: WARNING: Unable to open PCM line input for LUN #%RU8!\n", pDrv->uLUN)); 6151 len = RTStrPrintf(szMissingStreams, sizeof(szMissingStreams), "PCM Input"); 6152 } 6153 # ifdef VBOX_WITH_AUDIO_HDA_MIC_IN 6154 if (!fValidMicIn) 6155 { 6156 LogRel(("HDA: WARNING: Unable to open PCM microphone input for LUN #%RU8!\n", pDrv->uLUN)); 6157 len += RTStrPrintf(szMissingStreams + len, 6158 sizeof(szMissingStreams) - len, len ? ", PCM Microphone" : "PCM Microphone"); 6159 } 6160 # endif /* VBOX_WITH_AUDIO_HDA_MIC_IN */ 6161 if (!fValidOut) 6162 { 6163 LogRel(("HDA: WARNING: Unable to open PCM output for LUN #%RU8!\n", pDrv->uLUN)); 6164 len += RTStrPrintf(szMissingStreams + len, 6165 sizeof(szMissingStreams) - len, len ? ", PCM Output" : "PCM Output"); 6166 } 6167 6168 PDMDevHlpVMSetRuntimeError(pDevIns, 0 /*fFlags*/, "HostAudioNotResponding", 6169 N_("Some HDA audio streams (%s) could not be opened. Guest applications generating audio " 6170 "output or depending on audio input may hang. Make sure your host audio device " 6171 "is working properly. Check the logfile for error messages of the audio " 6172 "subsystem"), szMissingStreams); 6173 } 6174 } 6175 } 6176 #endif /* VBOX_WITH_AUDIO_HDA_ONETIME_INIT */ 6067 6177 } 6068 6178 -
trunk/src/VBox/Devices/Audio/DevIchHdaCodec.cpp
r63562 r64333 2360 2360 /* Propagate to the controller. */ 2361 2361 pThis->pfnMixerSetStream(pThis->pHDAState, PDMAUDIOMIXERCTL_FRONT, uSD, uChannel); 2362 #ifdef VBOX_WITH_ HDA_51_SURROUND2362 #ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND 2363 2363 pThis->pfnMixerSetStream(pThis->pHDAState, PDMAUDIOMIXERCTL_CENTER_LFE, uSD, uChannel); 2364 2364 pThis->pfnMixerSetStream(pThis->pHDAState, PDMAUDIOMIXERCTL_REAR, uSD, uChannel); … … 2368 2368 { 2369 2369 pThis->pfnMixerSetStream(pThis->pHDAState, PDMAUDIOMIXERCTL_LINE_IN, uSD, uChannel); 2370 #ifdef VBOX_WITH_ HDA_MIC_IN2370 #ifdef VBOX_WITH_AUDIO_HDA_MIC_IN 2371 2371 pThis->pfnMixerSetStream(pThis->pHDAState, PDMAUDIOMIXERCTL_MIC_IN, uSD, uChannel); 2372 2372 #endif … … 3024 3024 case PDMAUDIOMIXERCTL_VOLUME_MASTER: 3025 3025 case PDMAUDIOMIXERCTL_FRONT: 3026 #ifdef VBOX_WITH_ HDA_51_SURROUND3026 #ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND 3027 3027 case PDMAUDIOMIXERCTL_CENTER_LFE: 3028 3028 case PDMAUDIOMIXERCTL_REAR: … … 3032 3032 } 3033 3033 case PDMAUDIOMIXERCTL_LINE_IN: 3034 #ifdef VBOX_WITH_ HDA_MIC_IN3034 #ifdef VBOX_WITH_AUDIO_HDA_MIC_IN 3035 3035 case PDMAUDIOMIXERCTL_MIC_IN: 3036 3036 #endif … … 3153 3153 int rc2 = hdaCodecRemoveStream(pThis, PDMAUDIOMIXERCTL_FRONT); 3154 3154 AssertRC(rc2); 3155 #ifdef VBOX_WITH_ HDA_51_SURROUND3155 #ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND 3156 3156 rc2 = hdaCodecRemoveStream(pThis, PDMAUDIOMIXERCTL_CENTER_LFE); 3157 3157 AssertRC(rc2); … … 3160 3160 #endif 3161 3161 3162 #ifdef VBOX_WITH_ HDA_MIC_IN3162 #ifdef VBOX_WITH_AUDIO_HDA_MIC_IN 3163 3163 rc2 = hdaCodecRemoveStream(pThis, PDMAUDIOMIXERCTL_MIC_IN); 3164 3164 AssertRC(rc2); … … 3238 3238 LogRel2(("HDA: Failed to add front output stream: %Rrc\n", rc2)); 3239 3239 3240 #ifdef VBOX_WITH_ HDA_51_SURROUND3240 #ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND 3241 3241 /* Center / LFE. */ 3242 3242 RTStrPrintf(strmCfg.szName, RT_ELEMENTS(strmCfg.szName), "Center / LFE"); … … 3260 3260 strmCfg.enmDir = PDMAUDIODIR_IN; 3261 3261 3262 #ifdef VBOX_WITH_ HDA_MIC_IN3262 #ifdef VBOX_WITH_AUDIO_HDA_MIC_IN 3263 3263 RTStrPrintf(strmCfg.szName, RT_ELEMENTS(strmCfg.szName), "Microphone In"); 3264 3264 strmCfg.DestSource.Source = PDMAUDIORECSOURCE_MIC; … … 3289 3289 hdaCodecToAudVolume(pThis, &pThis->paNodes[pThis->u8DacLineOut].dac.B_params, PDMAUDIOMIXERCTL_FRONT); 3290 3290 hdaCodecToAudVolume(pThis, &pThis->paNodes[pThis->u8AdcVolsLineIn].adcvol.B_params, PDMAUDIOMIXERCTL_LINE_IN); 3291 #ifdef VBOX_WITH_ HDA_MIC_IN3291 #ifdef VBOX_WITH_AUDIO_HDA_MIC_IN 3292 3292 #error "Implement mic-in support!" 3293 3293 #endif -
trunk/src/VBox/Devices/Audio/DevSB16.cpp
r63737 r64333 2419 2419 2420 2420 sb16ResetLegacy(pThis); 2421 2422 #ifdef VBOX_WITH_AUDIO_SB16_ONETIME_INIT 2423 PSB16DRIVER pDrv; 2424 RTListForEach(&pThis->lstDrv, pDrv, SB16DRIVER, Node) 2425 { 2426 /* 2427 * Only primary drivers are critical for the VM to run. Everything else 2428 * might not worth showing an own error message box in the GUI. 2429 */ 2430 if (!(pDrv->Flags & PDMAUDIODRVFLAGS_PRIMARY)) 2431 continue; 2432 2433 PPDMIAUDIOCONNECTOR pCon = pDrv->pConnector; 2434 AssertPtr(pCon); 2435 2436 /** @todo No input streams available for SB16 yet. */ 2437 bool fValidOut = pCon->pfnStreamGetStatus(pCon, pDrv->Out.pStream) & PDMAUDIOSTRMSTS_FLAG_INITIALIZED; 2438 if (!fValidOut) 2439 { 2440 LogRel(("SB16: Falling back to NULL backend (no sound audible)\n")); 2441 2442 sb16ResetLegacy(pThis); 2443 sb16Reattach(pThis, pDrv, pDrv->uLUN, "NullAudio"); 2444 2445 PDMDevHlpVMSetRuntimeError(pDevIns, 0 /*fFlags*/, "HostAudioNotResponding", 2446 N_("No audio devices could be opened. Selecting the NULL audio backend " 2447 "with the consequence that no sound is audible")); 2448 } 2449 } 2450 #endif 2421 2451 2422 2452 #ifndef VBOX_WITH_AUDIO_SB16_CALLBACKS -
trunk/src/VBox/Devices/Audio/DrvAudio.cpp
r64050 r64333 41 41 #include "AudioMixBuffer.h" 42 42 43 #ifdef VBOX_WITH_AUDIO_ENUM 43 44 static int drvAudioDevicesEnumerateInternal(PDRVAUDIO pThis, bool fLog, PPDMAUDIODEVICEENUM pDevEnum); 45 #endif 44 46 45 47 static DECLCALLBACK(int) drvAudioStreamDestroy(PPDMIAUDIOCONNECTOR pInterface, PPDMAUDIOSTREAM pStream); … … 622 624 } 623 625 626 #ifdef VBOX_WITH_AUDIO_CALLBACKS 624 627 /** 625 628 * Schedules a re-initialization of all current audio streams. … … 640 643 pHstStream->fStatus |= PDMAUDIOSTRMSTS_FLAG_PENDING_REINIT; 641 644 645 # ifdef VBOX_WITH_AUDIO_ENUM 642 646 /* Re-enumerate all host devices as soon as possible. */ 643 647 pThis->fEnumerateDevices = true; 648 # endif 644 649 645 650 return VINF_SUCCESS; 646 651 } 652 #endif /* VBOX_WITH_AUDIO_CALLBACKS */ 647 653 648 654 /** … … 928 934 if (pHstStream->fStatus & PDMAUDIOSTRMSTS_FLAG_PENDING_REINIT) 929 935 { 936 #ifdef VBOX_WITH_AUDIO_ENUM 930 937 if (pThis->fEnumerateDevices) 931 938 { … … 935 942 pThis->fEnumerateDevices = false; 936 943 } 944 #endif /* VBOX_WITH_AUDIO_ENUM */ 937 945 938 946 /* Remove the pending re-init flag in any case, regardless whether the actual re-initialization succeeded … … 1463 1471 #endif /* VBOX_WITH_AUDIO_CALLBACKS */ 1464 1472 1473 #ifdef VBOX_WITH_AUDIO_ENUM 1465 1474 /** 1466 1475 * Enumerates all host audio devices. … … 1530 1539 return rc; 1531 1540 } 1541 #endif /* VBOX_WITH_AUDIO_ENUM */ 1532 1542 1533 1543 /** … … 1579 1589 RT_MIN(64, pThis->cStreamsFreeIn), RT_MIN(64, pThis->cStreamsFreeOut))); 1580 1590 1591 #ifdef VBOX_WITH_AUDIO_ENUM 1581 1592 int rc2 = drvAudioDevicesEnumerateInternal(pThis, true /* fLog */, NULL /* pDevEnum */); 1593 AssertRC(rc2); 1594 1595 RT_NOREF(rc2); 1582 1596 /* Ignore rc. */ 1597 #endif 1583 1598 1584 1599 #ifdef VBOX_WITH_AUDIO_CALLBACKS … … 1588 1603 if (pThis->pHostDrvAudio->pfnSetCallback) 1589 1604 { 1590 rc2 = pThis->pHostDrvAudio->pfnSetCallback(pThis->pHostDrvAudio, drvAudioBackendCallback);1605 int rc2 = pThis->pHostDrvAudio->pfnSetCallback(pThis->pHostDrvAudio, drvAudioBackendCallback); 1591 1606 if (RT_FAILURE(rc2)) 1592 1607 LogRel(("Audio: Error registering backend callback, rc=%Rrc\n", rc2)); -
trunk/src/VBox/Devices/Audio/DrvAudio.h
r63743 r64333 118 118 * UINT32_MAX for unlimited streams. */ 119 119 uint32_t cStreamsFreeOut; 120 #ifdef VBOX_WITH_AUDIO_ENUM 120 121 /** Flag indicating to perform an (re-)enumeration of the host audio devices. */ 121 122 bool fEnumerateDevices; 123 #endif 122 124 /** Audio configuration settings retrieved from the backend. */ 123 125 PDMAUDIOBACKENDCFG BackendCfg; … … 167 169 PPDMAUDIODEVICEENUM DrvAudioHlpDeviceEnumDup(PPDMAUDIODEVICEENUM pDevEnm); 168 170 int DrvAudioHlpDeviceEnumCopy(PPDMAUDIODEVICEENUM pDstDevEnm, PPDMAUDIODEVICEENUM pSrcDevEnm); 171 int DrvAudioHlpDeviceEnumCopyEx(PPDMAUDIODEVICEENUM pDstDevEnm, PPDMAUDIODEVICEENUM pSrcDevEnm, PDMAUDIODIR enmUsage, bool fCopyUserData); 169 172 PPDMAUDIODEVICE DrvAudioHlpDeviceEnumGetDefaultDevice(PPDMAUDIODEVICEENUM pDevEnm, PDMAUDIODIR enmDir); 170 173 void DrvAudioHlpDeviceEnumPrint(const char *pszDesc, PPDMAUDIODEVICEENUM pDevEnm); -
trunk/src/VBox/Devices/Audio/DrvHostCoreAudio.cpp
r64314 r64333 220 220 } 221 221 222 #ifndef VBOX_WITH_AUDIO_CA _QUEUES222 #ifndef VBOX_WITH_AUDIO_CALLBACKS 223 223 static int coreAudioASBDToStreamCfg(AudioStreamBasicDescription *pASBD, PPDMAUDIOSTREAMCFG pCfg) 224 224 { … … 256 256 return rc; 257 257 } 258 258 #endif /* !VBOX_WITH_AUDIO_CALLBACKS */ 259 260 #ifndef VBOX_WITH_AUDIO_CA_QUEUES 259 261 static OSStatus coreAudioSetFrameBufferSize(AudioDeviceID deviceID, bool fInput, UInt32 cReqSize, UInt32 *pcActSize) 260 262 { … … 538 540 static OSStatus coreAudioPlaybackCb(void *pvUser, AudioUnitRenderActionFlags *pActionFlags, const AudioTimeStamp *pAudioTS, UInt32 uBusID, UInt32 cFrames, AudioBufferList* pBufData); 539 541 #else 542 static int coreAudioStreamInitQueue(PCOREAUDIOSTREAM pCAStream, PPDMAUDIOSTREAMCFG pCfgReq, PPDMAUDIOSTREAMCFG pCfgAcq); 540 543 static void coreAudioInputQueueCb(void *pvUser, AudioQueueRef audioQueue, AudioQueueBufferRef audioBuffer, const AudioTimeStamp *pAudioTS, UInt32 cPacketDesc, const AudioStreamPacketDescription *paPacketDesc); 541 544 static void coreAudioOutputQueueCb(void *pvUser, AudioQueueRef audioQueue, AudioQueueBufferRef audioBuffer); … … 1028 1031 1029 1032 1030 #if 01031 static int coreAudioDeviceInit(PPDMAUDIODEVICE pDev, PDRVHOSTCOREAUDIO pDrv, PDMAUDIODIR enmUsage, AudioDeviceID deviceID)1032 {1033 AssertPtrReturn(pDev, VERR_INVALID_POINTER);1034 1035 PCOREAUDIODEVICEDATA pData = (PCOREAUDIODEVICEDATA)pDev->pvData;1036 AssertPtrReturn(pData, VERR_INVALID_POINTER);1037 1038 /* Init common parameters. */1039 pDev->enmUsage = enmUsage;1040 1041 /* Init Core Audio-specifics. */1042 pData->deviceID = deviceID;1043 pData->pDrv = pDrv;1044 1045 RTListInit(&pData->lstStreams);1046 1047 return VINF_SUCCESS;1048 }1049 #endif1050 1051 1052 1033 /** 1053 1034 * Initializes a Core Audio-specific device data structure. … … 1319 1300 return rc; 1320 1301 } 1321 #endif /* VBOX_WITH_AUDIO_CALLBACKS */1302 #endif /* !VBOX_WITH_AUDIO_CALLBACKS */ 1322 1303 1323 1304 #ifdef VBOX_WITH_AUDIO_CA_CONVERTER … … 3003 2984 RT_NOREF(cAddresses, properties, pvUser); 3004 2985 3005 #ifdef DEBUG3006 2986 PPDMAUDIODEVICE pDev = (PPDMAUDIODEVICE)pvUser; 3007 2987 AssertPtr(pDev); 3008 2988 3009 2989 LogFlowFunc(("propertyID=%u, nAddresses=%u, pDev=%p\n", propertyID, cAddresses, pDev)); 3010 #endif3011 2990 3012 2991 switch (propertyID) … … 3024 3003 int rc2 = coreAudioDevicePropagateStatus(pDev, COREAUDIOSTATUS_REINIT); 3025 3004 AssertRC(rc2); 3005 #else 3006 RT_NOREF(pDev); 3026 3007 #endif 3027 3008 break; -
trunk/src/VBox/Devices/Makefile.kmk
r64240 r64333 550 550 551 551 if 0 # Not stable yet. 552 VBoxDD_DEFS += VBOX_WITH_HDA_INTERLEAVING_STREAMS_SUPPORT 553 VBoxDD_DEFS += VBOX_WITH_HDA_51_SURROUND 554 endif 555 556 # Enable generic callback support. 557 VBoxDD_DEFS += VBOX_WITH_AUDIO_CALLBACKS 552 # Enable microphone-in support for HDA. Otherwise only line-in is supported. 553 VBoxDD_DEFS += VBOX_WITH_AUDIO_HDA_MIC_IN 554 555 # Enable interleavig streams support for HDA. Needed for 5.1 surround support. 556 VBoxDD_DEFS += VBOX_WITH_AUDIO_HDA_INTERLEAVING_STREAMS_SUPPORT 557 558 # Enable 5.1 surround support (Front, Center/LFE, Rear) for HDA. 559 # Without this, only stereo output (Front) is supported. 560 VBoxDD_DEFS += VBOX_WITH_AUDIO_HDA_51_SURROUND 561 endif 562 563 # Enable backend-independent device enumeration support. 564 #VBoxDD_DEFS += VBOX_WITH_AUDIO_ENUM 565 566 # Enable backend callback support. 567 #VBoxDD_DEFS += VBOX_WITH_AUDIO_CALLBACKS 558 568 559 569 # Enable Audio Queues implementation for macOS hosts (Core Audio backend). 560 570 VBoxDD_DEFS.darwin += VBOX_WITH_AUDIO_CA_QUEUES 571 572 # Enable one-time audio stream initialization at device creation (VM startup) instead 573 # of creating the stream when needed at some later point in time. 574 # 575 # This was the default behavior ever since. 576 VBoxDD_DEFS += VBOX_WITH_AUDIO_SB16_ONETIME_INIT 577 VBoxDD_DEFS += VBOX_WITH_AUDIO_AC97_ONETIME_INIT 578 VBoxDD_DEFS += VBOX_WITH_AUDIO_HDA_ONETIME_INIT 561 579 562 580 # Not yet enabled: Callbacks for the device emulation to let the backends
Note:
See TracChangeset
for help on using the changeset viewer.