VirtualBox

Changeset 33400 in vbox


Ignore:
Timestamp:
Oct 25, 2010 3:16:48 AM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
66989
Message:

Audio/HDA: flexible audio format support (disabled).

Location:
trunk/src/VBox/Devices
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Audio/DevCodec.cpp

    r33328 r33400  
    140140            pNode->node.au32F00_param[5] = RT_BIT(8)|RT_BIT(0);
    141141            pNode->node.au32F00_param[8] = RT_MAKE_U32_FROM_U8(0x0d, 0x0d, 0x01, 0x0); /* Capabilities */
    142             //pNode->node.au32F00_param[0xa] = RT_BIT(19)|RT_BIT(18)|RT_BIT(17)|RT_BIT(10)|RT_BIT(9)|RT_BIT(8)|RT_BIT(7)|RT_BIT(6)|RT_BIT(5);
    143             pNode->node.au32F00_param[0xA] = RT_BIT(17)|RT_BIT(5);
    144142            pNode->node.au32F00_param[0xC] = (17 << 8)|RT_BIT(6)|RT_BIT(5)|RT_BIT(2)|RT_BIT(1)|RT_BIT(0);
    145143            pNode->node.au32F00_param[0xB] = RT_BIT(0);
     
    194192            pNode->spdifout.u32A_param = (1<<14)|(0x1<<4) | 0x1;
    195193            pNode->spdifout.node.au32F00_param[9] = (4 << 16) | RT_BIT(9)|RT_BIT(4)|0x1;
    196             pNode->node.au32F00_param[0xa] = RT_BIT(17)|RT_BIT(5);
     194            pNode->node.au32F00_param[0xa] = pState->pNodes[1].node.au32F00_param[0xA];
    197195            pNode->spdifout.node.au32F00_param[0xB] = RT_BIT(2)|RT_BIT(0);
    198196            pNode->spdifout.u32F06_param = 0;
    199197            pNode->spdifout.u32F0d_param = 0;
    200             //pNode->spdifout.node.au32F00_param[0xA] = RT_BIT(19)|RT_BIT(18)|RT_BIT(17)|RT_BIT(10)|RT_BIT(9)|RT_BIT(8)|RT_BIT(7)|RT_BIT(6);
    201198        break;
    202199        case 9:
     
    204201            pNode->spdifin.u32A_param = (0x1<<4) | 0x1;
    205202            pNode->spdifin.node.au32F00_param[9] = (0x1 << 20)|(4 << 16) | RT_BIT(9)| RT_BIT(8)|RT_BIT(4)|0x1;
    206             pNode->node.au32F00_param[0xA] = RT_BIT(17)|RT_BIT(5);
     203            pNode->node.au32F00_param[0xA] = pState->pNodes[1].node.au32F00_param[0xA];
    207204            pNode->node.au32F00_param[0xE] = RT_BIT(0);
    208205            pNode->node.au32F02_param[0] = 0x11;
     
    258255            pNode->node.au32F00_param[0xC] = 0x34;
    259256            pNode->port.u32F09_param = 0;
    260             //pNode->node.au32F00_param[0xC] = RT_BIT(5)|RT_BIT(2);
    261257            pNode->port.u32F07_param = RT_BIT(5);
    262             //pNode->port.u32F09_param = RT_BIT(31);
    263258            if (!pState->fInReset)
    264259                pNode->port.u32F1c_param = RT_MAKE_U32_FROM_U8(0x50, 0x90, 0xA1, 0x02); /* Microphone */
     
    436431            pNode->node.au32F00_param[2] = RT_BIT(20); /* Realtek 889 (8.1.9)*/
    437432            pNode->node.au32F00_param[4] = (1 << 16)|0x1; /* start node 1, total 1*/
    438             pNode->node.au32F00_param[0xA] = RT_BIT(17)|RT_BIT(5);
     433            pNode->node.au32F00_param[0xA] = pState->pNodes[1].node.au32F00_param[0xA];
    439434           
    440435            break;
     
    442437            pNode->node.au32F00_param[4] = (2 << 16)|0x25; /* start node 1, total 1*/
    443438            pNode->node.au32F00_param[5] = RT_BIT(8) | 0x1; /* UnSol: enabled, function group type: AFG */
    444             pNode->node.au32F00_param[0xa] = 0xe0560;
    445439            pNode->afg.u32F20_param = pState->u16VendorId << 16 | pState->u16DeviceId;
    446440            pNode->node.au32F00_param[0xB] = 0x1;
     
    463457            pNode->node.name = "DAC-4";
    464458        dac_init:
    465             pNode->node.au32F00_param[0xA] = RT_BIT(17)|RT_BIT(5);
     459            pNode->node.au32F00_param[0xA] = pState->pNodes[1].node.au32F00_param[0xA];
    466460            pNode->node.au32F00_param[0x9] = 0x11;
    467461            pNode->node.au32F00_param[0xB] = 0x1;
     
    473467            pNode->node.au32F00_param[0x9] = 0x211;
    474468            pNode->node.au32F00_param[0xB] = 0x1;
    475             pNode->node.au32F00_param[0xA] = RT_BIT(17)|RT_BIT(5);
     469            pNode->node.au32F00_param[0xA] = pState->pNodes[1].node.au32F00_param[0xA];
    476470            pNode->spdifout.u32A_param = (1<<14)|(0x1<<4) | 0x1;
    477471            break;
     
    479473            pNode->node.name = "SPDIFIN-0";
    480474            pNode->node.au32F00_param[0x9] = 0x100391;
    481             pNode->node.au32F00_param[0xA] = 0x1e0560;
     475            pNode->node.au32F00_param[0xA] = pState->pNodes[1].node.au32F00_param[0xA];
    482476            pNode->node.au32F00_param[0xB] = 0x1;
    483477            pNode->node.au32F02_param[0] = RT_MAKE_U32_FROM_U8(0x1F, 0, 0, 0);
     
    485479            pNode->node.au32F02_param[2] = RT_MAKE_U32_FROM_U8(0x1F, 0, 0, 0);
    486480            pNode->node.au32F02_param[3] = RT_MAKE_U32_FROM_U8(0x1F, 0, 0, 0);
    487             pNode->node.au32F00_param[0xA] = RT_BIT(17)|RT_BIT(5);
     481            pNode->node.au32F00_param[0xA] = pState->pNodes[1].node.au32F00_param[0xA];
    488482            pNode->spdifin.u32A_param = (1<<14)|(0x1<<4) | 0x1;
    489483            break;
     
    557551            pNode->node.au32F00_param[0xD] = 0x80032e10;
    558552            pNode->node.au32F00_param[0xE] = 0x1;
    559             pNode->node.au32F00_param[0xA] = RT_BIT(17)|RT_BIT(5);
     553            pNode->node.au32F00_param[0xA] = pState->pNodes[1].node.au32F00_param[0xA];
    560554            pNode->adc.u32A_param = (1<<14)|(0x1<<4) | 0x1;
    561555            break;
     
    680674            pNode->node.name = "AdcVol-5";
    681675            pNode->node.au32F00_param[0x9] = 0x20010b;
    682             //pNode->node.au32F00_param[0xA] = 0x80051f17;
    683676            pNode->node.au32F00_param[0xD] = 0x80051f17;
    684677            /* N = 0~3 */
     
    19161909    AUD_register_card ("ICH0", &pState->card);
    19171910
    1918     codec_dac_to_aud(pState, &as);
    1919     pState->voice_pi = AUD_open_in(&pState->card, pState->voice_pi, "hda.in", pState, pi_callback, &as);
    1920     codec_dac_to_aud(pState, &as);
    1921     pState->voice_po = AUD_open_out(&pState->card, pState->voice_po, "hda.out", pState, po_callback, &as);
    1922     if (!pState->voice_pi)
    1923         LogRel (("HDAcodec: WARNING: Unable to open PCM IN!\n"));
    1924     if (!pState->voice_po)
    1925         LogRel (("HDAcodec: WARNING: Unable to open PCM OUT!\n"));
     1911    /* @todo: AFG:f00[0xA] -> quemu's voices */
     1912
     1913    as.freq = 44100;
     1914    as.nchannels = 2;
     1915    as.fmt = AUD_FMT_S16;
     1916    as.endianness = 0;
     1917    #define SETUP_AUDIO_FORMAT(pState, base, mult, div, name, as, in_callback, out_callback)                                \
     1918    do{                                                                                                                     \
     1919        AUDIO_FORMAT_SELECTOR((pState), Out, (base), (mult), div) = AUD_open_out(&(pState)->card,                           \
     1920            AUDIO_FORMAT_SELECTOR(pState, Out, (base), (mult), (div)), name ".out", (pState), (out_callback), &(as));       \
     1921        Assert(AUDIO_FORMAT_SELECTOR(pState, Out, (base), (mult), (div)));                                                  \
     1922        if (!AUDIO_FORMAT_SELECTOR(pState, Out, (base), (mult), (div)))                                                     \
     1923            LogRel (("HDAcodec: WARNING: Unable to open PCM OUT(%s)!\n", name ".out"));                                     \
     1924        AUDIO_FORMAT_SELECTOR(pState, In, (base), (mult), (div)) = AUD_open_in(&(pState)->card,                             \
     1925            AUDIO_FORMAT_SELECTOR(pState, In, (base), (mult), (div)), name ".in", (pState), (in_callback), &(as));          \
     1926        Assert(AUDIO_FORMAT_SELECTOR((pState), In, (base), (mult), (div)));                                                 \
     1927        if (!AUDIO_FORMAT_SELECTOR(pState, In, (base), (mult), (div)))                                                      \
     1928            LogRel (("HDAcodec: WARNING: Unable to open PCM IN(%s)!\n", name ".in"));                                       \
     1929    } while(0)
     1930   
     1931    SETUP_AUDIO_FORMAT(pState, AFMT_HZ_44_1K, AFMT_MULT_X1, AFMT_DIV_X1, "hda44_1", as, pi_callback, po_callback);
     1932    pState->pNodes[1].node.au32F00_param[0xA] = RT_BIT(17)|RT_BIT(5);
     1933
     1934#ifdef VBOX_WITH_AUDIO_FLEXIBLE_FORMAT
     1935    as.freq *= 2; /* 2 * 44.1kHz */
     1936    SETUP_AUDIO_FORMAT(pState, AFMT_HZ_44_1K, AFMT_MULT_X2, AFMT_DIV_X1, "hda44_1_2x", as, pi_callback, po_callback);
     1937    pState->pNodes[1].node.au32F00_param[0xA] |= RT_BIT(7);
     1938
     1939    as.freq *= 2; /* 4 * 44.1kHz */
     1940    SETUP_AUDIO_FORMAT(pState, AFMT_HZ_44_1K, AFMT_MULT_X4, AFMT_DIV_X1, "hda44_1_4x", as, pi_callback, po_callback);
     1941    pState->pNodes[1].node.au32F00_param[0xA] |= RT_BIT(9);
     1942
     1943    as.freq = 48000;
     1944    SETUP_AUDIO_FORMAT(pState, AFMT_HZ_48K, AFMT_MULT_X1, AFMT_DIV_X1, "hda48", as, pi_callback, po_callback);
     1945    pState->pNodes[1].node.au32F00_param[0xA] |= RT_BIT(6);
     1946
     1947# if 0
     1948    as.freq *= 2; /* 2 * 48kHz */
     1949    SETUP_AUDIO_FORMAT(pState, AFMT_HZ_48K, AFMT_MULT_X2, AFMT_DIV_X1, "hda48_2x", as, pi_callback, po_callback);
     1950    pState->pNodes[1].node.au32F00_param[0xA] |= RT_BIT(8);
     1951
     1952    as.freq *= 2; /* 4 * 48kHz */
     1953    SETUP_AUDIO_FORMAT(pState, AFMT_HZ_48K, AFMT_MULT_X4, AFMT_DIV_X1, "hda48_4x", as, pi_callback, po_callback);
     1954    pState->pNodes[1].node.au32F00_param[0xA] |= RT_BIT(10);
     1955# endif
     1956#endif
     1957    #undef SETUP_AUDIO_FORMAT
     1958
    19261959    codecToAudVolume(&pState->pNodes[pState->u8DacLineOut].dac.B_params, AUD_MIXER_VOLUME);
    19271960    codecToAudVolume(&pState->pNodes[pState->u8AdcVolsLineIn].adcvol.B_params, AUD_MIXER_LINE_IN);
  • trunk/src/VBox/Devices/Audio/DevCodec.h

    r33327 r33400  
    236236    ALC885_CODEC
    237237} ENMCODEC;
     238
     239#define AFMT_IN In
     240#define AFMT_OUT Out
     241
     242#ifdef VBOX_WITH_AUDIO_FLEXIBLE_FORMAT
     243# define MAX_AUDIO_FORMAT 64
     244typedef SWVoiceIn *CODECAUDIOINFORMAT[MAX_AUDIO_FORMAT];
     245typedef SWVoiceOut *CODECAUDIOOUTFORMAT[MAX_AUDIO_FORMAT];
     246# define AUDIO_FORMAT_SELECTOR(pState, dir, hz, mult, divizor) ((pState)->aSwVoice##dir[(hz)*24 + (mult)*8 + (divizor)])
     247# define AFMT_HZ_48K    0
     248# define AFMT_HZ_44_1K  1
     249# define AFMT_MULT_X1   0
     250# define AFMT_MULT_X2   1
     251# define AFMT_MULT_X3   2 /* reserved for stac9220 */
     252# define AFMT_MULT_X4   3
     253# define AFMT_DIV_X1    0
     254# define AFMT_DIV_X2    1
     255# define AFMT_DIV_X3    2
     256# define AFMT_DIV_X4    3
     257# define AFMT_DIV_X5    4
     258# define AFMT_DIV_X6    5
     259# define AFMT_DIV_X7    6
     260# define AFMT_DIV_X8    7
     261#else
     262# define AUDIO_FORMAT_SELECTOR(pState, dir, hz, mult, divizor) ((pState)->SwVoice##dir)
     263#endif
     264
     265
    238266typedef struct CODECState
    239267{
     
    245273    PCODECNODE               pNodes;
    246274    QEMUSoundCard           card;
     275#ifndef VBOX_WITH_AUDIO_FLEXIBLE_FORMAT
    247276    /** PCM in */
    248     SWVoiceIn               *voice_pi;
     277    SWVoiceIn               *SwVoiceIn;
    249278    /** PCM out */
    250     SWVoiceOut              *voice_po;
     279    SWVoiceOut              *SwVoiceOut;
    251280    /** Mic in */
    252281    SWVoiceIn               *voice_mc;
     282#else
     283    CODECAUDIOOUTFORMAT        aSwVoiceOut;
     284    CODECAUDIOINFORMAT        aSwVoiceIn;
     285#endif
    253286    ENMCODEC                enmCodec;
    254287    void                    *pHDAState;
  • trunk/src/VBox/Devices/Audio/DevIchIntelHDA.cpp

    r33327 r33400  
    320320#define ICH6_HDA_REG_SD6FMT     (HDA_STREAM_REG_DEF(FMT, 0) + 60) /* 0x152 */
    321321#define ICH6_HDA_REG_SD7FMT     (HDA_STREAM_REG_DEF(FMT, 0) + 70) /* 0x172 */
     322
     323#define SDFMT(pState, num)      (HDA_REG((pState), SD(FMT, num)))
     324#define ICH6_HDA_SDFMT_BASE_RATE_SHIFT (14)
     325#define ICH6_HDA_SDFMT_MULT_SHIFT (11)
     326#define ICH6_HDA_SDFMT_MULT_MASK (0x7)
     327#define ICH6_HDA_SDFMT_DIV_SHIFT (8)
     328#define ICH6_HDA_SDFMT_DIV_MASK (0x7)
     329#define SDFMT_BASE_RATE(pState, num) ((SDFMT(pState, num) & HDA_REG_FIELD_FLAG_MASK(SDFMT, BASE_RATE)) >> HDA_REG_FIELD_SHIFT(SDFMT, BASE_RATE))
     330#define SDFMT_MULT(pState, num) ((SDFMT((pState), num) & HDA_REG_FIELD_MASK(SDFMT,MULT)) >> HDA_REG_FIELD_SHIFT(SDFMT, MULT))
     331#define SDFMT_DIV(pState, num) ((SDFMT((pState), num) & HDA_REG_FIELD_MASK(SDFMT,DIV)) >> HDA_REG_FIELD_SHIFT(SDFMT, DIV))
    322332
    323333#define ICH6_HDA_REG_SD0BDPL     40 /* 0x98 */
     
    392402#define ICH6_HDASTATE_2_DEVINS(pINTELHD)   ((pINTELHD)->pDevIns)
    393403#define PCIDEV_2_ICH6_HDASTATE(pPciDev) ((PCIINTELHDLinkState *)(pPciDev))
     404
     405#define ISD0FMT_TO_AUDIO_SELECTOR(pState) (AUDIO_FORMAT_SELECTOR(&(pState)->Codec, In,     \
     406                SDFMT_BASE_RATE(pState, 0), SDFMT_MULT(pState, 0), SDFMT_DIV(pState, 0)))
     407#define OSD0FMT_TO_AUDIO_SELECTOR(pState) (AUDIO_FORMAT_SELECTOR(&(pState)->Codec, Out,     \
     408                SDFMT_BASE_RATE(pState, 4), SDFMT_MULT(pState, 4), SDFMT_DIV(pState, 4)))
    394409
    395410
     
    972987        Log(("hda: DMA(%x) switched on\n", offset));
    973988        if (offset == 0x80)
    974         {
    975             AUD_set_active_in(pState->Codec.voice_pi, 1);
    976             //AUD_set_active_in(pState->Codec.voice_mc, 1);
    977         }
     989            AUD_set_active_in(ISD0FMT_TO_AUDIO_SELECTOR(pState), 1);
    978990        if (offset == 0x100)
    979991        {
     
    981993            u64BaseDMA |= (((uint64_t)SDBDPU(pState, 4)) << 32);
    982994            if (u64BaseDMA)
    983             {
    984                 //fetch_bd(pState, u64BaseDMA);
    985                 AUD_set_active_out(pState->Codec.voice_po, 1);
    986             }
    987             //SDSTS(pState, 4) |= (1<<5);
     995                AUD_set_active_out(OSD0FMT_TO_AUDIO_SELECTOR(pState), 1);
    988996        }
    989997    }
     
    9931001        if (offset == 0x80)
    9941002        {
    995             AUD_set_active_in(pState->Codec.voice_pi, 0);
    996             //AUD_set_active_in(pState->Codec.voice_mc, 0);
     1003            AUD_set_active_in(ISD0FMT_TO_AUDIO_SELECTOR(pState), 0);
    9971004        }
    9981005        if (offset == 0x100)
    9991006        {
    10001007            SDSTS(pState, 4) &= ~(1<<5);
    1001             AUD_set_active_out(pState->Codec.voice_po, 0);
     1008            AUD_set_active_out(OSD0FMT_TO_AUDIO_SELECTOR(pState), 0);
    10021009        }
    1003         //SSYNC(pState) &= ~(1<< (offset - 0x80));
    10041010    }
    10051011    int rc = hdaRegWriteU24(pState, offset, index, u32Value);
     
    11841190    /* todo: add input line detection */
    11851191    PHDABDLEDESC pBdle = &pState->stInBdle;
    1186     SWVoiceIn *voice = pState->Codec.voice_pi;
     1192    SWVoiceIn *voice = ISD0FMT_TO_AUDIO_SELECTOR(pState);
    11871193    u32Rest = pBdle->u32BdleCviLen - pBdle->u32BdleCviPos;
    11881194    temp = audio_MIN(u32Rest, (uint32_t)avail);
     
    12311237        to_copy = audio_MIN(temp, 4096U);
    12321238        PDMDevHlpPhysRead(ICH6_HDASTATE_2_DEVINS(pState), pBdle->u64BdleCviAddr + pBdle->u32BdleCviPos, tmpbuf, to_copy);
    1233         copied = AUD_write (pState->Codec.voice_po, tmpbuf, to_copy);
     1239        copied = AUD_write (OSD0FMT_TO_AUDIO_SELECTOR(pState), tmpbuf, to_copy);
    12341240        Log (("hda: write_audio max=%x to_copy=%x copied=%x\n",
    12351241              avail, to_copy, copied));
     
    14971503    SSMR3PutMem (pSSMHandle, &pThis->hda.stMicBdle, sizeof (HDABDLEDESC));
    14981504    SSMR3PutMem (pSSMHandle, &pThis->hda.stInBdle, sizeof (HDABDLEDESC));
    1499     uint8_t voices = AUD_is_active_in(pThis->hda.Codec.voice_pi)? RT_BIT(0):0;
    1500     voices |= AUD_is_active_in(pThis->hda.Codec.voice_mc)? RT_BIT(1):0;
    1501     voices |= AUD_is_active_out(pThis->hda.Codec.voice_po)? RT_BIT(2):0;
     1505    uint8_t voices = AUD_is_active_in(ISD0FMT_TO_AUDIO_SELECTOR(&pThis->hda))? RT_BIT(0):0;
     1506    //voices |= AUD_is_active_in(pThis->hda.Codec.voice_mc)? RT_BIT(1):0;
     1507    voices |= AUD_is_active_out(OSD0FMT_TO_AUDIO_SELECTOR(&pThis->hda))? RT_BIT(2):0;
    15021508    SSMR3PutU8(pSSMHandle, voices);
    15031509    return VINF_SUCCESS;
     
    15301536    uint8_t voices;
    15311537    SSMR3GetU8(pSSMHandle, &voices);
    1532     AUD_set_active_in(pThis->hda.Codec.voice_pi, voices & RT_BIT(0));
    1533     AUD_set_active_in(pThis->hda.Codec.voice_mc, voices & RT_BIT(1));
    1534     AUD_set_active_out(pThis->hda.Codec.voice_po, voices & RT_BIT(2));
     1538    AUD_set_active_in(ISD0FMT_TO_AUDIO_SELECTOR(&pThis->hda), voices & RT_BIT(0));
     1539    //AUD_set_active_in(pThis->hda.Codec.voice_mc, voices & RT_BIT(1));
     1540    AUD_set_active_out(OSD0FMT_TO_AUDIO_SELECTOR(&pThis->hda), voices & RT_BIT(2));
    15351541    pThis->hda.u64CORBBase = CORBLBASE(&pThis->hda);
    15361542    pThis->hda.u64CORBBase |= ((uint64_t)CORBUBASE(&pThis->hda)) << 32;
  • trunk/src/VBox/Devices/Audio/audio.c

    r32673 r33400  
    122122} conf = {
    123123    {                           /* DAC fixed settings */
     124#ifndef VBOX_WITH_AUDIO_FLEXIBLE_FORMAT
    124125        1,                      /* enabled */
     126#else
     127        0,
     128#endif
    125129        1,                      /* nb_voices */
    126130        1,                      /* greedy */
     
    133137
    134138    {                           /* ADC fixed settings */
     139#ifndef VBOX_WITH_AUDIO_FLEXIBLE_FORMAT
    135140        1,                      /* enabled */
     141#else
     142        0,
     143#endif
    136144        1,                      /* nb_voices */
    137145        1,                      /* greedy */
  • trunk/src/VBox/Devices/Makefile.kmk

    r33364 r33400  
    301301        Audio/DevIchAc97.cpp \
    302302        Audio/DevSB16.cpp \
    303         Audio/DevIchIntelHDA.cpp \
    304         Audio/DevCodec.cpp \
    305303        PC/DevDMA.cpp \
    306304        PC/DevHPET.cpp \
     
    310308        Serial/DevSerial.cpp \
    311309        Parallel/DevParallel.cpp
     310
     311VBOX_DEV_HDA_SOURCES= \
     312        Audio/DevIchIntelHDA.cpp \
     313        Audio/DevCodec.cpp
     314
     315define def_vbox_audio_flags
     316$(1)_DEFS += \
     317      $(if $(VBOX_WITH_AUDIO_FLEXIBLE_FORMAT),VBOX_WITH_AUDIO_FLEXIBLE_FORMAT,)
     318endef
     319
     320DevicesR3_SOURCES += $(VBOX_DEV_HDA_SOURCES)
     321
     322$(foreach file,$(VBOX_DEV_HDA_SOURCES),$(eval $(call def_vbox_audio_flags, $(file))))
     323
    312324
    313325ifdef VBOX_DYNAMIC_NET_ATTACH
     
    852864        Network/slirp
    853865Drivers_SOURCES    = \
    854         Audio/audio.c \
    855         Audio/audiosniffer.c \
    856         Audio/mixeng.c \
    857         Audio/noaudio.c \
    858866        Input/DrvKeyboardQueue.cpp \
    859867        Input/DrvMouseQueue.cpp \
     
    876884        Network/Pcap.cpp
    877885
     886VBOX_AUDIO_SOURCES = \
     887        Audio/audio.c \
     888        Audio/audiosniffer.c \
     889        Audio/mixeng.c \
     890        Audio/noaudio.c
     891
     892Drivers_SOURCES += $(VBOX_AUDIO_SOURCES)
     893$(foreach file,$(VBOX_AUDIO_SOURCES),$(eval $(call def_vbox_audio_flags, $(file))))
     894
    878895VBOX_SLIRP_SOURCES = \
    879896        Network/DrvNAT.cpp \
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette