VirtualBox

Changeset 70251 in vbox for trunk/src/VBox/Devices


Ignore:
Timestamp:
Dec 20, 2017 6:34:18 PM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
119845
Message:

Audio/HDA: Use a pointer to the associated audio stream for HDAMIXERSINK instead of duplicating information (like SD# / stream channel).

Location:
trunk/src/VBox/Devices/Audio
Files:
3 edited

Legend:

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

    r70249 r70251  
    10721072{
    10731073    const uint64_t u64WalClkCur       = ASMAtomicReadU64(&pThis->u64WalClk);
    1074     const uint64_t u64FrontAbsWalClk  = hdaStreamPeriodGetAbsElapsedWalClk(&hdaGetStreamFromSink(pThis, &pThis->SinkFront)->State.Period);
     1074    const uint64_t u64FrontAbsWalClk  = pThis->SinkFront.pStream
     1075                                      ? hdaStreamPeriodGetAbsElapsedWalClk(&pThis->SinkFront.pStream->State.Period) : 0;
    10751076#ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND
    10761077# error "Implement me!"
    10771078#endif
    1078     const uint64_t u64LineInAbsWalClk = hdaStreamPeriodGetAbsElapsedWalClk(&hdaGetStreamFromSink(pThis, &pThis->SinkLineIn)->State.Period);
     1079    const uint64_t u64LineInAbsWalClk = pThis->SinkLineIn.pStream
     1080                                      ? hdaStreamPeriodGetAbsElapsedWalClk(&pThis->SinkLineIn.pStream->State.Period) : 0;
    10791081#ifdef VBOX_WITH_HDA_MIC_IN
    1080     const uint64_t u64MicInAbsWalClk  = hdaStreamPeriodGetAbsElapsedWalClk(&hdaGetStreamFromSink(pThis, &pThis->SinkMicIn)->State.Period);
     1082    const uint64_t u64MicInAbsWalClk  = pThis->SinkMicIn.pStream
     1083                                      ? hdaStreamPeriodGetAbsElapsedWalClk(&pThis->SinkMicIn.pStream->State.Period) : 0;
    10811084#endif
    10821085
     
    26122615            hdaStreamLock(pStream);
    26132616
    2614             pSink->uSD        = uSD;
    2615             pSink->uChannel   = uChannel;
     2617            pSink->pStream    = pStream;
    26162618            pStream->pMixSink = pSink;
    26172619
     
    28872889     * Stop any audio currently playing and/or recording.
    28882890     */
     2891    pThis->SinkFront.pStream = NULL;
    28892892    if (pThis->SinkFront.pMixSink)
    28902893        AudioMixerSinkReset(pThis->SinkFront.pMixSink);
    28912894# ifdef VBOX_WITH_AUDIO_HDA_MIC_IN
     2895    pThis->SinkMicIn.pStream = NULL;
    28922896    if (pThis->SinkMicIn.pMixSink)
    28932897        AudioMixerSinkReset(pThis->SinkMicIn.pMixSink);
    28942898# endif
     2899    pThis->SinkLineIn.pStream = NULL;
    28952900    if (pThis->SinkLineIn.pMixSink)
    28962901        AudioMixerSinkReset(pThis->SinkLineIn.pMixSink);
    28972902# ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND
     2903    pThis->SinkCenterLFE = NULL;
    28982904    if (pThis->SinkCenterLFE.pMixSink)
    28992905        AudioMixerSinkReset(pThis->SinkCenterLFE.pMixSink);
     2906    pThis->SinkRear.pStream = NULL;
    29002907    if (pThis->SinkRear.pMixSink)
    29012908        AudioMixerSinkReset(pThis->SinkRear.pMixSink);
     
    29112918    }
    29122919
    2913        /*
     2920    /*
    29142921     * Set some sensible defaults for which HDA sinks
    29152922     * are connected to which stream number.
  • trunk/src/VBox/Devices/Audio/DevHDA.h

    r70016 r70251  
    5656typedef struct HDAMIXERSINK
    5757{
    58     /** SDn ID this sink is assigned to. 0 if not assigned. */
    59     uint8_t                uSD;
    60     /** Channel ID of SDn ID. Only valid if SDn ID is valid. */
    61     uint8_t                uChannel;
    62     uint8_t                Padding[3];
     58        R3PTRTYPE(PHDASTREAM)  pStream;
    6359    /** Pointer to the actual audio mixer sink. */
    6460    R3PTRTYPE(PAUDMIXSINK) pMixSink;
  • trunk/src/VBox/Devices/Audio/DevHDACommon.cpp

    r70250 r70251  
    280280
    281281    /** @todo Do something with the channel mapping here? */
    282     return hdaGetStreamFromSD(pThis, pSink->uSD);
     282    return pSink->pStream;
    283283}
    284284
Note: See TracChangeset for help on using the changeset viewer.

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