VirtualBox

Changeset 73529 in vbox


Ignore:
Timestamp:
Aug 6, 2018 4:26:43 PM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
124158
Message:

Audio: Changed cBits -> cBytes of PDMAUDIOPCMPROPS to avoid some unnecessary calculations (light optimization).

Location:
trunk
Files:
18 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/pdmaudioifs.h

    r73467 r73529  
    511511typedef struct PDMAUDIOPCMPROPS
    512512{
    513     /** Sample width. Bits per sample. */
    514     uint8_t     cBits;
     513    /** Sample width (in bytes). */
     514    uint8_t     cBytes;
    515515    /** Number of audio channels. */
    516516    uint8_t     cChannels;
     
    535535
    536536/** Initializor for PDMAUDIOPCMPROPS. */
    537 #define PDMAUDIOPCMPROPS_INITIALIZOR(a_cBits, a_fSigned, a_cCannels, a_uHz, a_cShift, a_fSwapEndian) \
    538     { a_cBits, a_cCannels, a_cShift, a_fSigned, a_fSwapEndian, a_uHz }
     537#define PDMAUDIOPCMPROPS_INITIALIZOR(a_cBytes, a_fSigned, a_cCannels, a_uHz, a_cShift, a_fSwapEndian) \
     538    { a_cBytes, a_cCannels, a_cShift, a_fSigned, a_fSwapEndian, a_uHz }
    539539/** Calculates the cShift value of given sample bits and audio channels.
    540540 *  Note: Does only support mono/stereo channels for now. */
    541 #define PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(cBits, cChannels)     ((cChannels == 2) + (cBits / 16))
     541#define PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(cBytes, cChannels)    ((cChannels == 2) + (cBytes / 2))
    542542/** Calculates the cShift value of a PDMAUDIOPCMPROPS structure. */
    543 #define PDMAUDIOPCMPROPS_MAKE_SHIFT(pProps)                     PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS((pProps)->cBits, (pProps)->cChannels)
     543#define PDMAUDIOPCMPROPS_MAKE_SHIFT(pProps)                     PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS((pProps)->cBytes, (pProps)->cChannels)
    544544/** Converts (audio) frames to bytes.
    545545 *  Needs the cShift value set correctly, using PDMAUDIOPCMPROPS_MAKE_SHIFT. */
  • trunk/src/VBox/Devices/Audio/AudioMixBuffer.cpp

    r70878 r73529  
    844844    pMixBuf->AudioFmt = AUDMIXBUF_AUDIO_FMT_MAKE(pProps->uHz,
    845845                                                 pProps->cChannels,
    846                                                  pProps->cBits,
     846                                                 pProps->cBytes * 8 /* Bit */,
    847847                                                 pProps->fSigned);
    848848
  • trunk/src/VBox/Devices/Audio/AudioMixer.cpp

    r73525 r73529  
    553553
    554554    LogFlowFunc(("[%s] fFlags=0x%x (enmDir=%ld, %RU8 bits, %RU8 channels, %RU32Hz)\n",
    555                  pSink->pszName, fFlags, pCfg->enmDir, pCfg->Props.cBits, pCfg->Props.cChannels, pCfg->Props.uHz));
     555                 pSink->pszName, fFlags, pCfg->enmDir, pCfg->Props.cBytes * 8, pCfg->Props.cChannels, pCfg->Props.uHz));
    556556
    557557    /*
     
    13221322    if (pSink->PCMProps.uHz)
    13231323        LogFlowFunc(("[%s] Old format: %RU8 bit, %RU8 channels, %RU32Hz\n",
    1324                      pSink->pszName, pSink->PCMProps.cBits, pSink->PCMProps.cChannels, pSink->PCMProps.uHz));
     1324                     pSink->pszName, pSink->PCMProps.cBytes * 8, pSink->PCMProps.cChannels, pSink->PCMProps.uHz));
    13251325
    13261326    memcpy(&pSink->PCMProps, pPCMProps, sizeof(PDMAUDIOPCMPROPS));
    13271327
    13281328    LogFlowFunc(("[%s] New format %RU8 bit, %RU8 channels, %RU32Hz\n",
    1329                  pSink->pszName, pSink->PCMProps.cBits, pSink->PCMProps.cChannels, pSink->PCMProps.uHz));
     1329                 pSink->pszName, pSink->PCMProps.cBytes * 8, pSink->PCMProps.cChannels, pSink->PCMProps.uHz));
    13301330
    13311331#ifdef VBOX_AUDIO_MIXER_WITH_MIXBUF
  • trunk/src/VBox/Devices/Audio/DevHDA.cpp

    r73466 r73529  
    18411841
    18421842            pCfg->Props.cChannels = 2;
    1843             pCfg->Props.cShift    = PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(pCfg->Props.cBits, pCfg->Props.cChannels);
     1843            pCfg->Props.cShift    = PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(pCfg->Props.cBytes, pCfg->Props.cChannels);
    18441844
    18451845            rc = hdaCodecAddStream(pThis->pCodec, PDMAUDIOMIXERCTL_FRONT, pCfg);
  • trunk/src/VBox/Devices/Audio/DevHDACommon.cpp

    r71767 r73529  
    528528    }
    529529
    530     uint8_t cBits = 0;
     530    uint8_t cBytes = 0;
    531531    switch (EXTRACT_VALUE(u32SDFMT, HDA_SDFMT_BITS_MASK, HDA_SDFMT_BITS_SHIFT))
    532532    {
    533533        case 0:
    534             cBits = 8;
     534            cBytes = 1;
    535535            break;
    536536        case 1:
    537             cBits = 16;
     537            cBytes = 2;
    538538            break;
    539539        case 4:
    540             cBits = 32;
     540            cBytes = 4;
    541541            break;
    542542        default:
     
    551551        RT_BZERO(pProps, sizeof(PDMAUDIOPCMPROPS));
    552552
    553         pProps->cBits     = cBits;
     553        pProps->cBytes    = cBytes;
    554554        pProps->fSigned   = true;
    555555        pProps->cChannels = (u32SDFMT & 0xf) + 1;
    556556        pProps->uHz       = u32Hz * u32HzMult / u32HzDiv;
    557         pProps->cShift    = PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(pProps->cBits, pProps->cChannels);
     557        pProps->cShift    = PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(pProps->cBytes, pProps->cChannels);
    558558    }
    559559
  • trunk/src/VBox/Devices/Audio/DevIchAc97.cpp

    r73452 r73529  
    17661766
    17671767            pCfg->Props.cChannels = 2;
    1768             pCfg->Props.cBits     = 16;
     1768            pCfg->Props.cBytes    = 2 /* 16-bit */;
    17691769            pCfg->Props.fSigned   = true;
    1770             pCfg->Props.cShift    = PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(pCfg->Props.cBits, pCfg->Props.cChannels);
     1770            pCfg->Props.cShift    = PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(pCfg->Props.cBytes, pCfg->Props.cChannels);
    17711771
    17721772            rc = ichac97R3MixerAddDrvStreams(pThis, pMixSink, pCfg);
  • trunk/src/VBox/Devices/Audio/DevSB16.cpp

    r73453 r73529  
    10361036    pCfg->Props.uHz       = pThis->freq;
    10371037    pCfg->Props.cChannels = 1; /* Mono */
    1038     pCfg->Props.cBits     = 8;
     1038    pCfg->Props.cBytes    = 1 /* 8-bit */;
    10391039    pCfg->Props.fSigned   = false;
    1040     pCfg->Props.cShift    = PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(pCfg->Props.cBits, pCfg->Props.cChannels);
     1040    pCfg->Props.cShift    = PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(pCfg->Props.cBytes, pCfg->Props.cChannels);
    10411041
    10421042    AssertCompile(sizeof(pCfg->szName) > sizeof("Output"));
     
    20422042        Cfg.Props.uHz       = pThis->freq;
    20432043        Cfg.Props.cChannels = 1 << pThis->fmt_stereo;
    2044         Cfg.Props.cBits     = pThis->fmt_bits;
     2044        Cfg.Props.cBytes    = pThis->fmt_bits / 8;
    20452045        Cfg.Props.fSigned   = RT_BOOL(pThis->fmt_signed);
    2046         Cfg.Props.cShift    = PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(Cfg.Props.cBits, Cfg.Props.cChannels);
     2046        Cfg.Props.cShift    = PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(Cfg.Props.cBytes, Cfg.Props.cChannels);
    20472047
    20482048        if (!DrvAudioHlpPCMPropsAreEqual(&Cfg.Props, &pThis->Out.Cfg.Props))
  • trunk/src/VBox/Devices/Audio/DrvAudio.cpp

    r73524 r73529  
    543543    LogRel2(("Audio: Guest %s format for '%s': %RU32Hz, %RU8%s, %RU8 %s\n",
    544544             pCfgGuest->enmDir == PDMAUDIODIR_IN ? "recording" : "playback", pStream->szName,
    545              pCfgGuest->Props.uHz, pCfgGuest->Props.cBits, pCfgGuest->Props.fSigned ? "S" : "U",
     545             pCfgGuest->Props.uHz, pCfgGuest->Props.cBytes * 8, pCfgGuest->Props.fSigned ? "S" : "U",
    546546             pCfgGuest->Props.cChannels, pCfgGuest->Props.cChannels == 1 ? "Channel" : "Channels"));
    547547    LogRel2(("Audio: Requested host %s format for '%s': %RU32Hz, %RU8%s, %RU8 %s\n",
    548548             pCfgHost->enmDir == PDMAUDIODIR_IN ? "recording" : "playback", pStream->szName,
    549              pCfgHost->Props.uHz, pCfgHost->Props.cBits, pCfgHost->Props.fSigned ? "S" : "U",
     549             pCfgHost->Props.uHz, pCfgHost->Props.cBytes * 8, pCfgHost->Props.fSigned ? "S" : "U",
    550550             pCfgHost->Props.cChannels, pCfgHost->Props.cChannels == 1 ? "Channel" : "Channels"));
    551551
     
    562562    LogRel2(("Audio: Acquired host %s format for '%s': %RU32Hz, %RU8%s, %RU8 %s\n",
    563563             CfgHostAcq.enmDir == PDMAUDIODIR_IN ? "recording" : "playback",  pStream->szName,
    564              CfgHostAcq.Props.uHz, CfgHostAcq.Props.cBits, CfgHostAcq.Props.fSigned ? "S" : "U",
     564             CfgHostAcq.Props.uHz, CfgHostAcq.Props.cBytes * 8, CfgHostAcq.Props.fSigned ? "S" : "U",
    565565             CfgHostAcq.Props.cChannels, CfgHostAcq.Props.cChannels == 1 ? "Channel" : "Channels"));
    566566
     
    624624
    625625    /* Make sure to (re-)set the host buffer's shift size. */
    626     CfgHostAcq.Props.cShift = PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(CfgHostAcq.Props.cBits, CfgHostAcq.Props.cChannels);
     626    CfgHostAcq.Props.cShift = PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(CfgHostAcq.Props.cBytes, CfgHostAcq.Props.cChannels);
    627627
    628628    rc = AudioMixBufInit(&pStream->Host.MixBuf, pStream->szName, &CfgHostAcq.Props,
     
    648648
    649649    /* Make sure to (re-)set the guest buffer's shift size. */
    650     pCfgGuest->Props.cShift = PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(pCfgGuest->Props.cBits, pCfgGuest->Props.cChannels);
     650    pCfgGuest->Props.cShift = PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(pCfgGuest->Props.cBytes, pCfgGuest->Props.cChannels);
    651651
    652652    /* Set set guest buffer size multiplicator. */
  • trunk/src/VBox/Devices/Audio/DrvAudioCommon.cpp

    r73463 r73529  
    136136        return;
    137137
    138     Assert(pPCMProps->cBits);
     138    Assert(pPCMProps->cBytes);
    139139    size_t cbToClear = DrvAudioHlpFramesToBytes(cFrames, pPCMProps);
    140140    Assert(cbBuf >= cbToClear);
     
    143143        cbToClear = cbBuf;
    144144
    145     Log2Func(("pPCMProps=%p, pvBuf=%p, cFrames=%RU32, fSigned=%RTbool, cBits=%RU8\n",
    146               pPCMProps, pvBuf, cFrames, pPCMProps->fSigned, pPCMProps->cBits));
     145    Log2Func(("pPCMProps=%p, pvBuf=%p, cFrames=%RU32, fSigned=%RTbool, cBytes=%RU8\n",
     146              pPCMProps, pvBuf, cFrames, pPCMProps->fSigned, pPCMProps->cBytes));
    147147
    148148    Assert(pPCMProps->fSwapEndian == false); /** @todo Swapping Endianness is not supported yet. */
     
    154154    else
    155155    {
    156         switch (pPCMProps->cBits)
     156        switch (pPCMProps->cBytes)
    157157        {
    158             case 8:
     158            case 1: /* 8 bit */
    159159            {
    160160                memset(pvBuf, 0x80, cbToClear);
     
    162162            }
    163163
    164             case 16:
     164            case 2: /* 16 bit */
    165165            {
    166166                uint16_t *p = (uint16_t *)pvBuf;
     
    175175            /** @todo Add 24 bit? */
    176176
    177             case 32:
     177            case 4: /* 32 bit */
    178178            {
    179179                uint32_t *p = (uint32_t *)pvBuf;
     
    188188            default:
    189189            {
    190                 AssertMsgFailed(("Invalid bits: %RU8\n", pPCMProps->cBits));
     190                AssertMsgFailed(("Invalid bytes per sample: %RU8\n", pPCMProps->cBytes));
    191191                break;
    192192            }
     
    806806    return    pProps1->uHz         == pProps2->uHz
    807807           && pProps1->cChannels   == pProps2->cChannels
    808            && pProps1->cBits       == pProps2->cBits
     808           && pProps1->cBytes      == pProps2->cBytes
    809809           && pProps1->fSigned     == pProps2->fSigned
    810810           && pProps1->fSwapEndian == pProps2->fSwapEndian;
     
    827827    if (fValid)
    828828    {
    829         switch (pProps->cBits)
     829        switch (pProps->cBytes)
    830830        {
    831             case 8:
    832             case 16:
     831            case 1:
     832            case 2:
    833833            /** @todo Do we need support for 24-bit samples? */
    834             case 32:
     834            case 4:
    835835                break;
    836836            default:
     
    844844
    845845    fValid &= pProps->uHz > 0;
    846     fValid &= pProps->cShift == PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(pProps->cBits, pProps->cChannels);
     846    fValid &= pProps->cShift == PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(pProps->cBytes, pProps->cChannels);
    847847    fValid &= pProps->fSwapEndian == false; /** @todo Handling Big Endian audio data is not supported yet. */
    848848
     
    874874uint32_t DrvAudioHlpPCMPropsBytesPerFrame(const PPDMAUDIOPCMPROPS pProps)
    875875{
    876     return (pProps->cBits / 8) * pProps->cChannels;
     876    return pProps->cBytes * pProps->cChannels;
    877877}
    878878
     
    887887
    888888    Log(("uHz=%RU32, cChannels=%RU8, cBits=%RU8%s",
    889          pProps->uHz, pProps->cChannels, pProps->cBits, pProps->fSigned ? "S" : "U"));
     889         pProps->uHz, pProps->cChannels, pProps->cBytes * 8, pProps->fSigned ? "S" : "U"));
    890890}
    891891
     
    10131013    LogFunc(("szName=%s, enmDir=%RU32 (uHz=%RU32, cBits=%RU8%s, cChannels=%RU8)\n",
    10141014             pCfg->szName, pCfg->enmDir,
    1015              pCfg->Props.uHz, pCfg->Props.cBits, pCfg->Props.fSigned ? "S" : "U", pCfg->Props.cChannels));
     1015             pCfg->Props.uHz, pCfg->Props.cBytes * 8, pCfg->Props.fSigned ? "S" : "U", pCfg->Props.cChannels));
    10161016}
    10171017
     
    11191119uint32_t DrvAudioHlpCalcBitrate(const PPDMAUDIOPCMPROPS pProps)
    11201120{
    1121     return DrvAudioHlpCalcBitrate(pProps->cBits, pProps->uHz, pProps->cChannels);
     1121    return DrvAudioHlpCalcBitrate(pProps->cBytes * 8, pProps->uHz, pProps->cChannels);
    11221122}
    11231123
     
    11691169    AssertPtrReturn(pProps, 0);
    11701170
    1171     return cbBytes / ((pProps->cBits / 8) * pProps->cChannels);
     1171    return cbBytes / (pProps->cBytes * pProps->cChannels);
    11721172}
    11731173
     
    11861186        return 0;
    11871187
    1188     const uint64_t cbBytesPerSec = (pProps->cBits / 8) * pProps->cChannels * pProps->uHz;
     1188    const uint64_t cbBytesPerSec = pProps->cBytes * pProps->cChannels * pProps->uHz;
    11891189    const double dbBytesPerMs = (double)cbBytesPerSec / (double)RT_MS_1SEC;
    11901190    Assert(dbBytesPerMs >= 0.0f);
     
    12091209        return 0;
    12101210
    1211     const double dbBytesPerMs = ((pProps->cBits / 8) * pProps->cChannels * pProps->uHz) / RT_NS_1SEC;
     1211    const double dbBytesPerMs = (pProps->cBytes * pProps->cChannels * pProps->uHz) / RT_NS_1SEC;
    12121212    Assert(dbBytesPerMs >= 0.0f);
    12131213    if (!dbBytesPerMs) /* Prevent division by zero. */
     
    12311231        return 0;
    12321232
    1233     const uint32_t cbFrame = (pProps->cBits / 8) * pProps->cChannels;
    1234     return cFrames * cbFrame;
     1233    return cFrames * pProps->cBytes * pProps->cChannels;
    12351234}
    12361235
     
    12891288        return 0;
    12901289
    1291     const uint64_t cbBytesPerSec = (pProps->cBits / 8) * pProps->cChannels * pProps->uHz;
     1290    const uint64_t cbBytesPerSec = pProps->cBytes * pProps->cChannels * pProps->uHz;
    12921291    return ((double)cbBytesPerSec / (double)RT_MS_1SEC) * uMs;
    12931292}
     
    13071306        return 0;
    13081307
    1309     const uint64_t cbBytesPerSec = (pProps->cBits / 8) * pProps->cChannels * pProps->uHz;
     1308    const uint64_t cbBytesPerSec = pProps->cBytes * pProps->cChannels * pProps->uHz;
    13101309    return ((double)cbBytesPerSec / (double)RT_NS_1SEC) * uNs;
    13111310}
     
    13221321    AssertPtrReturn(pProps, 0);
    13231322
    1324     const uint32_t cbFrame = (pProps->cBits / 8) * pProps->cChannels;
     1323    const uint32_t cbFrame = pProps->cBytes * pProps->cChannels;
    13251324    if (!cbFrame) /* Prevent division by zero. */
    13261325        return 0;
     
    13401339    AssertPtrReturn(pProps, 0);
    13411340
    1342     const uint32_t cbFrame = (pProps->cBits / 8) * pProps->cChannels;
     1341    const uint32_t cbFrame = pProps->cBytes * pProps->cChannels;
    13431342    if (!cbFrame) /* Prevent division by zero. */
    13441343        return 0;
     
    15791578        Assert(pProps->cChannels);
    15801579        Assert(pProps->uHz);
    1581         Assert(pProps->cBits);
     1580        Assert(pProps->cBytes);
    15821581
    15831582        pFile->pvData = (PAUDIOWAVFILEDATA)RTMemAllocZ(sizeof(AUDIOWAVFILEDATA));
     
    15991598            pData->Hdr.u16NumChannels   = pProps->cChannels;
    16001599            pData->Hdr.u32SampleRate    = pProps->uHz;
    1601             pData->Hdr.u32ByteRate      = DrvAudioHlpCalcBitrate(pProps->cBits, pProps->uHz, pProps->cChannels) / 8;
    1602             pData->Hdr.u16BlockAlign    = pProps->cChannels * pProps->cBits / 8;
    1603             pData->Hdr.u16BitsPerSample = pProps->cBits;
     1600            pData->Hdr.u32ByteRate      = DrvAudioHlpCalcBitrate(pProps) / 8;
     1601            pData->Hdr.u16BlockAlign    = pProps->cChannels * pProps->cBytes;
     1602            pData->Hdr.u16BitsPerSample = pProps->cBytes * 8;
    16041603
    16051604            /* Data chunk. */
  • trunk/src/VBox/Devices/Audio/DrvHostALSAAudio.cpp

    r73489 r73529  
    142142static snd_pcm_format_t alsaAudioPropsToALSA(PPDMAUDIOPCMPROPS pProps)
    143143{
    144     switch (pProps->cBits)
    145     {
    146         case 8:
     144    switch (pProps->cBytes)
     145    {
     146        case 1:
    147147            return pProps->fSigned ? SND_PCM_FORMAT_S8 : SND_PCM_FORMAT_U8;
    148148
    149         case 16:
     149        case 2:
    150150            return pProps->fSigned ? SND_PCM_FORMAT_S16_LE : SND_PCM_FORMAT_U16_LE;
    151151
    152         case 32:
     152        case 4:
    153153            return pProps->fSigned ? SND_PCM_FORMAT_S32_LE : SND_PCM_FORMAT_U32_LE;
    154154
     
    157157    }
    158158
    159     AssertMsgFailed(("%RU8 bits not supported\n", pProps->cBits));
     159    AssertMsgFailed(("%RU8 bytes not supported\n", pProps->cBytes));
    160160    return SND_PCM_FORMAT_U8;
    161161}
     
    167167    {
    168168        case SND_PCM_FORMAT_S8:
    169             pProps->cBits   = 8;
     169            pProps->cBytes  = 1;
    170170            pProps->fSigned = true;
    171171            break;
    172172
    173173        case SND_PCM_FORMAT_U8:
    174             pProps->cBits   = 8;
     174            pProps->cBytes  = 1;
    175175            pProps->fSigned = false;
    176176            break;
    177177
    178178        case SND_PCM_FORMAT_S16_LE:
    179             pProps->cBits   = 16;
     179            pProps->cBytes  = 2;
    180180            pProps->fSigned = true;
    181181            break;
    182182
    183183        case SND_PCM_FORMAT_U16_LE:
    184             pProps->cBits   = 16;
     184            pProps->cBytes  = 2;
    185185            pProps->fSigned = false;
    186186            break;
    187187
    188188        case SND_PCM_FORMAT_S16_BE:
    189             pProps->cBits       = 16;
    190             pProps->fSigned     = true;
     189            pProps->cBytes  = 2;
     190            pProps->fSigned = true;
    191191#ifdef RT_LITTLE_ENDIAN
    192192            pProps->fSwapEndian = true;
     
    195195
    196196        case SND_PCM_FORMAT_U16_BE:
    197             pProps->cBits       = 16;
    198             pProps->fSigned     = false;
     197            pProps->cBytes  = 2;
     198            pProps->fSigned = false;
    199199#ifdef RT_LITTLE_ENDIAN
    200200            pProps->fSwapEndian = true;
     
    203203
    204204        case SND_PCM_FORMAT_S32_LE:
    205             pProps->cBits   = 32;
     205            pProps->cBytes  = 4;
    206206            pProps->fSigned = true;
    207207            break;
    208208
    209209        case SND_PCM_FORMAT_U32_LE:
    210             pProps->cBits   = 32;
     210            pProps->cBytes  = 4;
    211211            pProps->fSigned = false;
    212212            break;
    213213
    214214        case SND_PCM_FORMAT_S32_BE:
    215             pProps->cBits       = 32;
    216             pProps->fSigned     = true;
     215            pProps->cBytes  = 4;
     216            pProps->fSigned = true;
    217217#ifdef RT_LITTLE_ENDIAN
    218218            pProps->fSwapEndian = true;
     
    221221
    222222        case SND_PCM_FORMAT_U32_BE:
    223             pProps->cBits       = 32;
    224             pProps->fSigned     = false;
     223            pProps->cBytes  = 4;
     224            pProps->fSigned = false;
    225225#ifdef RT_LITTLE_ENDIAN
    226226            pProps->fSwapEndian = true;
     
    233233    }
    234234
    235     Assert(pProps->cBits);
     235    Assert(pProps->cBytes);
    236236    Assert(pProps->cChannels);
    237     pProps->cShift = PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(pProps->cBits, pProps->cChannels);
     237    pProps->cShift = PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(pProps->cBytes, pProps->cChannels);
    238238
    239239    return VINF_SUCCESS;
  • trunk/src/VBox/Devices/Audio/DrvHostCoreAudio.cpp

    r73380 r73529  
    183183    pASBD->mSampleRate       = (Float64)pPCMProps->uHz;
    184184    pASBD->mChannelsPerFrame = pPCMProps->cChannels;
    185     pASBD->mBitsPerChannel   = pPCMProps->cBits;
     185    pASBD->mBitsPerChannel   = pPCMProps->cBytes * 8;
    186186    if (pPCMProps->fSigned)
    187187        pASBD->mFormatFlags |= kAudioFormatFlagIsSignedInteger;
     
    198198    pCfg->Props.cChannels = pASBD->mChannelsPerFrame;
    199199    pCfg->Props.uHz       = (uint32_t)pASBD->mSampleRate;
    200     pCfg->Props.cBits     = pASBD->mBitsPerChannel;
     200    pCfg->Props.cBytes    = pASBD->mBitsPerChannel / 8;
    201201    pCfg->Props.fSigned   = RT_BOOL(pASBD->mFormatFlags & kAudioFormatFlagIsSignedInteger);
    202     pCfg->Props.cShift    = PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(pCfg->Props.cBits, pCfg->Props.cChannels);
     202    pCfg->Props.cShift    = PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(pCfg->Props.cBytes, pCfg->Props.cChannels);
    203203
    204204    return VINF_SUCCESS;
  • trunk/src/VBox/Devices/Audio/DrvHostDSound.cpp

    r73408 r73529  
    266266    pFmt->wFormatTag      = WAVE_FORMAT_PCM;
    267267    pFmt->nChannels       = pCfg->Props.cChannels;
    268     pFmt->wBitsPerSample  = pCfg->Props.cBits;
     268    pFmt->wBitsPerSample  = pCfg->Props.cBytes * 8;
    269269    pFmt->nSamplesPerSec  = pCfg->Props.uHz;
    270270    pFmt->nBlockAlign     = pFmt->nChannels * pFmt->wBitsPerSample / 8;
     
    621621           pCfgReq->Props.uHz,
    622622           pCfgReq->Props.cChannels,
    623            pCfgReq->Props.cBits,
     623           pCfgReq->Props.cBytes * 8,
    624624           pCfgReq->Props.fSigned));
    625625
     
    13371337           pCfgReq->Props.uHz,
    13381338           pCfgReq->Props.cChannels,
    1339            pCfgReq->Props.cBits,
     1339           pCfgReq->Props.cBytes * 8,
    13401340           pCfgReq->Props.fSigned));
    13411341
  • trunk/src/VBox/Devices/Audio/DrvHostOSSAudio.cpp

    r73370 r73529  
    158158    {
    159159        case AFMT_S8:
    160             pProps->cBits   = 8;
     160            pProps->cBytes  = 1;
    161161            pProps->fSigned = true;
    162162            break;
    163163
    164164        case AFMT_U8:
    165             pProps->cBits   = 8;
     165            pProps->cBytes  = 1;
    166166            pProps->fSigned = false;
    167167            break;
    168168
    169169        case AFMT_S16_LE:
    170             pProps->cBits   = 16;
     170            pProps->cBytes  = 2;
    171171            pProps->fSigned = true;
    172172            break;
    173173
    174174        case AFMT_U16_LE:
    175             pProps->cBits   = 16;
     175            pProps->cBytes  = 2;
    176176            pProps->fSigned = false;
    177177            break;
    178178
    179179       case AFMT_S16_BE:
    180             pProps->cBits   = 16;
     180           pProps->cBytes  = 2;
    181181            pProps->fSigned = true;
    182182#ifdef RT_LITTLE_ENDIAN
     
    186186
    187187        case AFMT_U16_BE:
    188             pProps->cBits   = 16;
     188            pProps->cBytes  = 2;
    189189            pProps->fSigned = false;
    190190#ifdef RT_LITTLE_ENDIAN
     
    239239
    240240        int iFormat;
    241         switch (pOSSReq->Props.cBits)
    242         {
    243             case 8:
     241        switch (pOSSReq->Props.cBytes)
     242        {
     243            case 1:
    244244                iFormat = pOSSReq->Props.fSigned ? AFMT_S8 : AFMT_U8;
    245245                break;
    246246
    247             case 16:
     247            case 2:
    248248                iFormat = pOSSReq->Props.fSigned ? AFMT_S16_LE : AFMT_U16_LE;
    249249                break;
     
    319319            pOSSAcq->Props.cChannels = cChannels;
    320320            pOSSAcq->Props.uHz       = freq;
    321             pOSSAcq->Props.cShift    = PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(pOSSAcq->Props.cBits, pOSSAcq->Props.cChannels);
     321            pOSSAcq->Props.cShift    = PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(pOSSAcq->Props.cBytes, pOSSAcq->Props.cChannels);
    322322
    323323            pOSSAcq->cFragments      = abinfo.fragstotal;
  • trunk/src/VBox/Devices/Audio/DrvHostPulseAudio.cpp

    r73526 r73529  
    200200static pa_sample_format_t paAudioPropsToPulse(PPDMAUDIOPCMPROPS pProps)
    201201{
    202     switch (pProps->cBits)
    203     {
    204         case 8:
     202    switch (pProps->cBytes)
     203    {
     204        case 1:
    205205            if (!pProps->fSigned)
    206206                return PA_SAMPLE_U8;
    207207            break;
    208208
    209         case 16:
     209        case 2:
    210210            if (pProps->fSigned)
    211211                return PA_SAMPLE_S16LE;
     
    213213
    214214#ifdef PA_SAMPLE_S32LE
    215         case 32:
     215        case 4:
    216216            if (pProps->fSigned)
    217217                return PA_SAMPLE_S32LE;
     
    223223    }
    224224
    225     AssertMsgFailed(("%RU8%s not supported\n", pProps->cBits, pProps->fSigned ? "S" : "U"));
     225    AssertMsgFailed(("%RU8%s not supported\n", pProps->cBytes, pProps->fSigned ? "S" : "U"));
    226226    return PA_SAMPLE_INVALID;
    227227}
     
    233233    {
    234234        case PA_SAMPLE_U8:
    235             pProps->cBits   = 8;
     235            pProps->cBytes  = 1;
    236236            pProps->fSigned = false;
    237237            break;
    238238
    239239        case PA_SAMPLE_S16LE:
    240             pProps->cBits   = 16;
     240            pProps->cBytes  = 2;
    241241            pProps->fSigned = true;
    242242            break;
    243243
    244244        case PA_SAMPLE_S16BE:
    245             pProps->cBits   = 16;
     245            pProps->cBytes  = 2;
    246246            pProps->fSigned = true;
    247247            /** @todo Handle Endianess. */
     
    250250#ifdef PA_SAMPLE_S32LE
    251251        case PA_SAMPLE_S32LE:
    252             pProps->cBits   = 32;
     252            pProps->cBytes  = 4;
    253253            pProps->fSigned = true;
    254254            break;
     
    257257#ifdef PA_SAMPLE_S32BE
    258258        case PA_SAMPLE_S32BE:
    259             pProps->cBits   = 32;
     259            pProps->cBytes  = 4;
    260260            pProps->fSigned = true;
    261261            /** @todo Handle Endianess. */
     
    769769    pCfgAcq->Props.uHz       = pStreamPA->SampleSpec.rate;
    770770    pCfgAcq->Props.cChannels = pStreamPA->SampleSpec.channels;
    771     pCfgAcq->Props.cShift    = PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(pCfgAcq->Props.cBits, pCfgAcq->Props.cChannels);
     771    pCfgAcq->Props.cShift    = PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(pCfgAcq->Props.cBytes, pCfgAcq->Props.cChannels);
    772772
    773773    uint32_t cbBuf = RT_MIN(pStreamPA->BufAttr.tlength * 2,
  • trunk/src/VBox/Devices/Audio/HDAStream.cpp

    r73523 r73529  
    245245
    246246    /* Set the stream's frame size. */
    247     pStream->State.cbFrameSize = pCfg->Props.cChannels * (pCfg->Props.cBits / 8 /* To bytes */);
    248     LogFunc(("[SD%RU8] cChannels=%RU8, cBits=%RU8 -> cbFrameSize=%RU32\n",
    249              pStream->u8SD, pCfg->Props.cChannels, pCfg->Props.cBits, pStream->State.cbFrameSize));
     247    pStream->State.cbFrameSize = pCfg->Props.cChannels * pCfg->Props.cBytes;
     248    LogFunc(("[SD%RU8] cChannels=%RU8, cBytes=%RU8 -> cbFrameSize=%RU32\n",
     249             pStream->u8SD, pCfg->Props.cChannels, pCfg->Props.cBytes, pStream->State.cbFrameSize));
    250250    Assert(pStream->State.cbFrameSize); /* Frame size must not be 0. */
    251251
  • trunk/src/VBox/Devices/Audio/HDAStreamMap.cpp

    r71736 r73529  
    5858    int rc = VINF_SUCCESS;
    5959
    60     Assert(RT_IS_POWER_OF_TWO(pProps->cBits));
     60    Assert(RT_IS_POWER_OF_TWO(pProps->cBytes * 8));
    6161
    6262    /** @todo We assume all channels in a stream have the same format. */
     
    6565    {
    6666        pChan->uChannel = i;
    67         pChan->cbStep   = (pProps->cBits / 8);
     67        pChan->cbStep   = pProps->cBytes;
    6868        pChan->cbFrame  = pChan->cbStep * pProps->cChannels;
    6969        pChan->cbFirst  = i * pChan->cbStep;
  • trunk/src/VBox/Main/src-client/DrvAudioVRDE.cpp

    r73464 r73529  
    8787    pCfgAcq->Props.uHz         = 22050; /* The VRDP server's internal frequency. */
    8888    pCfgAcq->Props.cChannels   = 2;
    89     pCfgAcq->Props.cBits       = 16;
     89    pCfgAcq->Props.cBytes      = 2; /* 16 bit. */
    9090    pCfgAcq->Props.fSigned     = true;
    9191    pCfgAcq->Props.fSwapEndian = false;
    92     pCfgAcq->Props.cShift      = PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(pCfgAcq->Props.cBits, pCfgAcq->Props.cChannels);
     92    pCfgAcq->Props.cShift      = PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(pCfgAcq->Props.cBytes, pCfgAcq->Props.cChannels);
    9393
    9494    /* According to the VRDP docs, the VRDP server stores audio in 200ms chunks. */
     
    133133        pCfgAcq->Props.uHz       = 22050; /* The VRDP server's internal frequency. */
    134134        pCfgAcq->Props.cChannels = 2;
    135         pCfgAcq->Props.cBits     = 16;
     135        pCfgAcq->Props.cBytes    = 2; /* 16 bit. */
    136136        pCfgAcq->Props.fSigned   = true;
    137         pCfgAcq->Props.cShift    = PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(pCfgAcq->Props.cBits, pCfgAcq->Props.cChannels);
     137        pCfgAcq->Props.cShift    = PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(pCfgAcq->Props.cBytes, pCfgAcq->Props.cChannels);
    138138
    139139        /* According to the VRDP docs, the VRDP server stores audio in 200ms chunks. */
     
    174174                                                               DrvAudioHlpMilliToFrames(200 /* ms */, &pStreamVRDE->pCfg->Props),
    175175                                                               pStreamVRDE->pCfg->Props.uHz, pStreamVRDE->pCfg->Props.cChannels,
    176                                                                pStreamVRDE->pCfg->Props.cBits);
     176                                                               pStreamVRDE->pCfg->Props.cBytes * 8 /* Bit */);
    177177            if (rc == VERR_NOT_SUPPORTED)
    178178            {
     
    291291    VRDEAUDIOFORMAT format = VRDE_AUDIO_FMT_MAKE(pProps->uHz,
    292292                                                 pProps->cChannels,
    293                                                  pProps->cBits,
     293                                                 pProps->cBytes * 8 /* Bit */,
    294294                                                 pProps->fSigned);
    295295
  • trunk/src/VBox/Main/src-client/DrvAudioVideoRec.cpp

    r73505 r73529  
    521521             * a specific sampling rate Opus is optimized for. */
    522522            pCfgAcq->Props.uHz         = pSink->Codec.Parms.uHz;
    523             pCfgAcq->Props.cShift      = PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(pCfgAcq->Props.cBits, pCfgAcq->Props.cChannels);
     523            pCfgAcq->Props.cShift      = PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(pCfgAcq->Props.cBytes, pCfgAcq->Props.cChannels);
    524524
    525525            /* Every Opus frame marks a period for now. Optimize this later. */
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