VirtualBox

Ignore:
Timestamp:
Mar 24, 2021 11:45:54 AM (4 years ago)
Author:
vboxsync
Message:

Audio: Made sure PDMAUDIOPCMPROPS is initialized using a helper function or the initializer macro, and that vital changes are made using setting helper functions. There are now two derived fields (frame size and shift count) that must be maintained, so this was the sanest way of doing it. Added a raw flag to PDMAUDIOPCMPROPS for VRDE/VRDP, since it wants the raw mixer content and we need a way of expressing this (PDMAUDIOSTREAMLAYOUT isn't the right place). The mixer buffers now uses PDMAUDIOPCMPROPS rather than the weird 32-bit format contraption for picking conversion functions. Simplify the drvAudioStreamPlay code by eliminating the PDMAUDIOSTREAMLAYOUT_RAW special case. bugref:9890

File:
1 edited

Legend:

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

    r88234 r88269  
    3838    RTTestSub(hTest, "Basics");
    3939
    40     const PDMAUDIOPCMPROPS Cfg441StereoS16 = PDMAUDIOPCMPROPS_INITIALIZOR(
     40    const PDMAUDIOPCMPROPS Cfg441StereoS16 = PDMAUDIOPCMPROPS_INITIALIZER(
    4141        /* a_cb: */             2,
    4242        /* a_fSigned: */        true,
    4343        /* a_cChannels: */      2,
    4444        /* a_uHz: */            44100,
    45         /* a_cShift: */         PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(2 /* cb */, 2 /* cChannels */),
    4645        /* a_fSwapEndian: */    false
    4746    );
    48     const PDMAUDIOPCMPROPS Cfg441StereoU16 = PDMAUDIOPCMPROPS_INITIALIZOR(
     47    const PDMAUDIOPCMPROPS Cfg441StereoU16 = PDMAUDIOPCMPROPS_INITIALIZER(
    4948        /* a_cb: */             2,
    5049        /* a_fSigned: */        false,
    5150        /* a_cChannels: */      2,
    5251        /* a_uHz: */            44100,
    53         /* a_cShift: */         PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(2 /* cb */, 2 /* cChannels */),
    5452        /* a_fSwapEndian: */    false
    5553    );
    56     const PDMAUDIOPCMPROPS Cfg441StereoU32 = PDMAUDIOPCMPROPS_INITIALIZOR(
     54    const PDMAUDIOPCMPROPS Cfg441StereoU32 = PDMAUDIOPCMPROPS_INITIALIZER(
    5755        /* a_cb: */             4,
    5856        /* a_fSigned: */        false,
    5957        /* a_cChannels: */      2,
    6058        /* a_uHz: */            44100,
    61         /* a_cShift: */         PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(4 /* cb */, 2 /* cChannels */),
    6259        /* a_fSwapEndian: */    false
    6360    );
     
    191188
    192189    /* 44100Hz, 2 Channels, S16 */
    193     PDMAUDIOPCMPROPS config = PDMAUDIOPCMPROPS_INITIALIZOR(
     190    PDMAUDIOPCMPROPS config = PDMAUDIOPCMPROPS_INITIALIZER(
    194191        2,                                                                  /* Bytes */
    195192        true,                                                               /* Signed */
    196193        2,                                                                  /* Channels */
    197194        44100,                                                              /* Hz */
    198         PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(2 /* Bytes */, 2 /* Channels */), /* Shift */
    199195        false                                                               /* Swap Endian */
    200196    );
     
    312308
    313309    /* 44100Hz, 2 Channels, S16 */
    314     PDMAUDIOPCMPROPS cfg_p = PDMAUDIOPCMPROPS_INITIALIZOR(
     310    PDMAUDIOPCMPROPS cfg_p = PDMAUDIOPCMPROPS_INITIALIZER(
    315311        2,                                                                  /* Bytes */
    316312        true,                                                               /* Signed */
    317313        2,                                                                  /* Channels */
    318314        44100,                                                              /* Hz */
    319         PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(2 /* Bytes */, 2 /* Channels */), /* Shift */
    320315        false                                                               /* Swap Endian */
    321316    );
     
    327322
    328323    /* 22050Hz, 2 Channels, S16 */
    329     PDMAUDIOPCMPROPS cfg_c1 = PDMAUDIOPCMPROPS_INITIALIZOR(/* Upmixing to parent */
     324    PDMAUDIOPCMPROPS cfg_c1 = PDMAUDIOPCMPROPS_INITIALIZER(/* Upmixing to parent */
    330325        2,                                                                  /* Bytes */
    331326        true,                                                               /* Signed */
    332327        2,                                                                  /* Channels */
    333328        22050,                                                              /* Hz */
    334         PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(2 /* Bytes */, 2 /* Channels */), /* Shift */
    335329        false                                                               /* Swap Endian */
    336330    );
     
    346340
    347341    /* 48000Hz, 2 Channels, S16 */
    348     PDMAUDIOPCMPROPS cfg_c2 = PDMAUDIOPCMPROPS_INITIALIZOR(/* Downmixing to parent */
     342    PDMAUDIOPCMPROPS cfg_c2 = PDMAUDIOPCMPROPS_INITIALIZER(/* Downmixing to parent */
    349343        2,                                                                  /* Bytes */
    350344        true,                                                               /* Signed */
    351345        2,                                                                  /* Channels */
    352346        48000,                                                              /* Hz */
    353         PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(2 /* Bytes */, 2 /* Channels */), /* Shift */
    354347        false                                                               /* Swap Endian */
    355348    );
     
    460453
    461454    /* 44100Hz, 1 Channel, U8 */
    462     PDMAUDIOPCMPROPS cfg_p = PDMAUDIOPCMPROPS_INITIALIZOR(
     455    PDMAUDIOPCMPROPS cfg_p = PDMAUDIOPCMPROPS_INITIALIZER(
    463456        1,                                                                  /* Bytes */
    464457        false,                                                              /* Signed */
    465458        1,                                                                  /* Channels */
    466459        44100,                                                              /* Hz */
    467         PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(1 /* Bytes */, 1 /* Channels */), /* Shift */
    468460        false                                                               /* Swap Endian */
    469461    );
     
    483475
    484476    /* 22050Hz, 1 Channel, U8 */
    485     PDMAUDIOPCMPROPS cfg_c = PDMAUDIOPCMPROPS_INITIALIZOR( /* Upmixing to parent */
     477    PDMAUDIOPCMPROPS cfg_c = PDMAUDIOPCMPROPS_INITIALIZER( /* Upmixing to parent */
    486478        1,                                                                  /* Bytes */
    487479        false,                                                              /* Signed */
    488480        1,                                                                  /* Channels */
    489481        22050,                                                              /* Hz */
    490         PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(1 /* Bytes */, 1 /* Channels */), /* Shift */
    491482        false                                                               /* Swap Endian */
    492483    );
     
    514505
    515506    /**** 8-bit unsigned samples ****/
    516     RTTestPrintf(hTest, RTTESTLVL_DEBUG, "Conversion test %uHz %uch 8-bit\n", cfg_c.uHz, cfg_c.cChannels);
     507    RTTestPrintf(hTest, RTTESTLVL_DEBUG, "Conversion test %uHz %uch 8-bit\n", cfg_c.uHz, PDMAudioPropsChannels(&cfg_c));
    517508    RTTESTI_CHECK_RC_OK(AudioMixBufWriteCirc(&child, &aFrames8U, sizeof(aFrames8U), &cFramesWritten));
    518509    RTTESTI_CHECK_MSG(cFramesWritten == cFramesChild, ("Child: Expected %RU32 written frames, got %RU32\n", cFramesChild, cFramesWritten));
     
    565556
    566557    /* 44100Hz, 1 Channel, S16 */
    567     PDMAUDIOPCMPROPS cfg_p = PDMAUDIOPCMPROPS_INITIALIZOR(
     558    PDMAUDIOPCMPROPS cfg_p = PDMAUDIOPCMPROPS_INITIALIZER(
    568559        2,                                                                  /* Bytes */
    569560        true,                                                               /* Signed */
    570561        1,                                                                  /* Channels */
    571562        44100,                                                              /* Hz */
    572         PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(2 /* Bytes */, 1 /* Channels */), /* Shift */
    573563        false                                                               /* Swap Endian */
    574564    );
     
    580570
    581571    /* 22050Hz, 1 Channel, S16 */
    582     PDMAUDIOPCMPROPS cfg_c = PDMAUDIOPCMPROPS_INITIALIZOR( /* Upmixing to parent */
     572    PDMAUDIOPCMPROPS cfg_c = PDMAUDIOPCMPROPS_INITIALIZER( /* Upmixing to parent */
    583573        2,                                                                  /* Bytes */
    584574        true,                                                               /* Signed */
    585575        1,                                                                  /* Channels */
    586576        22050,                                                              /* Hz */
    587         PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(2 /* Bytes */, 1 /* Channels */), /* Shift */
    588577        false                                                               /* Swap Endian */
    589578    );
     
    611600
    612601    /**** 16-bit signed samples ****/
    613     RTTestPrintf(hTest, RTTESTLVL_DEBUG, "Conversion test %uHz %uch 16-bit\n", cfg_c.uHz, cfg_c.cChannels);
     602    RTTestPrintf(hTest, RTTESTLVL_DEBUG, "Conversion test %uHz %uch 16-bit\n", cfg_c.uHz, PDMAudioPropsChannels(&cfg_c));
    614603    RTTESTI_CHECK_RC_OK(AudioMixBufWriteCirc(&child, &aFrames16S, sizeof(aFrames16S), &cFramesWritten));
    615604    RTTESTI_CHECK_MSG(cFramesWritten == cFramesChild, ("Child: Expected %RU32 written frames, got %RU32\n", cFramesChild, cFramesWritten));
     
    662651    /* Same for parent/child. */
    663652    /* 44100Hz, 2 Channels, S16 */
    664     PDMAUDIOPCMPROPS cfg = PDMAUDIOPCMPROPS_INITIALIZOR(
     653    PDMAUDIOPCMPROPS cfg = PDMAUDIOPCMPROPS_INITIALIZER(
    665654        2,                                                                  /* Bytes */
    666655        true,                                                               /* Signed */
    667656        2,                                                                  /* Channels */
    668657        44100,                                                              /* Hz */
    669         PDMAUDIOPCMPROPS_MAKE_SHIFT_PARMS(2 /* Bytes */, 2 /* Channels */), /* Shift */
    670658        false                                                               /* Swap Endian */
    671659    );
     
    699687
    700688    /**** Volume control test ****/
    701     RTTestPrintf(hTest, RTTESTLVL_DEBUG, "Volume control test %uHz %uch \n", cfg.uHz, cfg.cChannels);
     689    RTTestPrintf(hTest, RTTESTLVL_DEBUG, "Volume control test %uHz %uch \n", cfg.uHz, PDMAudioPropsChannels(&cfg));
    702690
    703691    /* 1) Full volume/0dB attenuation (255). */
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