VirtualBox

Changeset 76019 in vbox


Ignore:
Timestamp:
Dec 6, 2018 3:24:32 PM (6 years ago)
Author:
vboxsync
Message:

Audio/HDA: SDnFMT is 16-bit only for hdaR3SDFMTToPCMProps().

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

Legend:

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

    r75962 r76019  
    483483 *
    484484 * @return  IPRT status code.
    485  * @param   u32SDFMT            The HDA stream's SDFMT value to convert.
     485 * @param   u16SDFMT            The HDA stream's SDFMT value to convert.
    486486 * @param   pProps              PCM properties structure to hold converted result on success.
    487487 */
    488 int hdaR3SDFMTToPCMProps(uint32_t u32SDFMT, PPDMAUDIOPCMPROPS pProps)
     488int hdaR3SDFMTToPCMProps(uint16_t u16SDFMT, PPDMAUDIOPCMPROPS pProps)
    489489{
    490490    AssertPtrReturn(pProps, VERR_INVALID_POINTER);
     
    494494    int rc = VINF_SUCCESS;
    495495
    496     uint32_t u32Hz     = EXTRACT_VALUE(u32SDFMT, HDA_SDFMT_BASE_RATE_MASK, HDA_SDFMT_BASE_RATE_SHIFT)
     496    uint32_t u32Hz     = EXTRACT_VALUE(u16SDFMT, HDA_SDFMT_BASE_RATE_MASK, HDA_SDFMT_BASE_RATE_SHIFT)
    497497                       ? 44100 : 48000;
    498498    uint32_t u32HzMult = 1;
    499499    uint32_t u32HzDiv  = 1;
    500500
    501     switch (EXTRACT_VALUE(u32SDFMT, HDA_SDFMT_MULT_MASK, HDA_SDFMT_MULT_SHIFT))
     501    switch (EXTRACT_VALUE(u16SDFMT, HDA_SDFMT_MULT_MASK, HDA_SDFMT_MULT_SHIFT))
    502502    {
    503503        case 0: u32HzMult = 1; break;
     
    507507        default:
    508508            LogFunc(("Unsupported multiplier %x\n",
    509                      EXTRACT_VALUE(u32SDFMT, HDA_SDFMT_MULT_MASK, HDA_SDFMT_MULT_SHIFT)));
     509                     EXTRACT_VALUE(u16SDFMT, HDA_SDFMT_MULT_MASK, HDA_SDFMT_MULT_SHIFT)));
    510510            rc = VERR_NOT_SUPPORTED;
    511511            break;
    512512    }
    513     switch (EXTRACT_VALUE(u32SDFMT, HDA_SDFMT_DIV_MASK, HDA_SDFMT_DIV_SHIFT))
     513    switch (EXTRACT_VALUE(u16SDFMT, HDA_SDFMT_DIV_MASK, HDA_SDFMT_DIV_SHIFT))
    514514    {
    515515        case 0: u32HzDiv = 1; break;
     
    523523        default:
    524524            LogFunc(("Unsupported divisor %x\n",
    525                      EXTRACT_VALUE(u32SDFMT, HDA_SDFMT_DIV_MASK, HDA_SDFMT_DIV_SHIFT)));
     525                     EXTRACT_VALUE(u16SDFMT, HDA_SDFMT_DIV_MASK, HDA_SDFMT_DIV_SHIFT)));
    526526            rc = VERR_NOT_SUPPORTED;
    527527            break;
     
    529529
    530530    uint8_t cBytes = 0;
    531     switch (EXTRACT_VALUE(u32SDFMT, HDA_SDFMT_BITS_MASK, HDA_SDFMT_BITS_SHIFT))
     531    switch (EXTRACT_VALUE(u16SDFMT, HDA_SDFMT_BITS_MASK, HDA_SDFMT_BITS_SHIFT))
    532532    {
    533533        case 0:
     
    542542        default:
    543543            AssertMsgFailed(("Unsupported bits per sample %x\n",
    544                              EXTRACT_VALUE(u32SDFMT, HDA_SDFMT_BITS_MASK, HDA_SDFMT_BITS_SHIFT)));
     544                             EXTRACT_VALUE(u16SDFMT, HDA_SDFMT_BITS_MASK, HDA_SDFMT_BITS_SHIFT)));
    545545            rc = VERR_NOT_SUPPORTED;
    546546            break;
     
    553553        pProps->cBytes    = cBytes;
    554554        pProps->fSigned   = true;
    555         pProps->cChannels = (u32SDFMT & 0xf) + 1;
     555        pProps->cChannels = (u16SDFMT & 0xf) + 1;
    556556        pProps->uHz       = u32Hz * u32HzMult / u32HzDiv;
    557557        pProps->cShift    = PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(pProps->cBytes, pProps->cChannels);
  • trunk/src/VBox/Devices/Audio/DevHDACommon.h

    r75962 r76019  
    627627uint32_t      hdaGetINTSTS(PHDASTATE pThis);
    628628#ifdef IN_RING3
    629 int           hdaR3SDFMTToPCMProps(uint32_t u32SDFMT, PPDMAUDIOPCMPROPS pProps);
     629int           hdaR3SDFMTToPCMProps(uint16_t u16SDFMT, PPDMAUDIOPCMPROPS pProps);
    630630#endif /* IN_RING3 */
    631631/** @} */
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