VirtualBox

Changeset 89058 in vbox for trunk/src/VBox/ValidationKit


Ignore:
Timestamp:
May 15, 2021 5:03:22 PM (4 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
144398
Message:

ValKit/Audio: Put the backends in an array with command line names. Provide more sensible stream config values. bugref:10008

Location:
trunk/src/VBox/ValidationKit/utils/audio
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ValidationKit/utils/audio/Makefile.kmk

    r89056 r89058  
    5656 AudioTest_DEFS    += VBOX_WITH_AUDIO_PULSE
    5757 AudioTest_SOURCES += \
    58         $(VKAT_PATH_AUDIO)/DrvHostAudioPulseAudioStubs.cpp \
    59         $(VKAT_PATH_AUDIO)/DrvHostAudioPulseAudio.cpp
     58        $(VKAT_PATH_AUDIO)/DrvHostAudioPulseAudioStubs.cpp \
     59        $(VKAT_PATH_AUDIO)/DrvHostAudioPulseAudio.cpp
    6060endif
    6161
     
    6363 AudioTest_DEFS    += VBOX_WITH_AUDIO_ALSA
    6464 AudioTest_SOURCES += \
    65         $(VKAT_PATH_AUDIO)/DrvHostAudioAlsa.cpp \
    66         $(VKAT_PATH_AUDIO)/DrvHostAudioAlsaStubs.cpp
     65        $(VKAT_PATH_AUDIO)/DrvHostAudioAlsa.cpp \
     66        $(VKAT_PATH_AUDIO)/DrvHostAudioAlsaStubs.cpp
    6767endif
    6868
     
    7070 AudioTest_DEFS    += VBOX_WITH_AUDIO_OSS
    7171 AudioTest_SOURCES += \
    72         $(VKAT_PATH_AUDIO)/DrvHostAudioOss.cpp
     72        $(VKAT_PATH_AUDIO)/DrvHostAudioOss.cpp
    7373endif
     74
     75AudioTest_SOURCES.darwin = \
     76        $(VKAT_PATH_AUDIO)/DrvHostAudioCoreAudio.cpp \
     77        $(VKAT_PATH_AUDIO)/DrvHostAudioCoreAudioAuth.mm
     78AudioTest_LDFLAGS.darwin = \
     79        -framework CoreAudio \
     80        -framework AudioUnit \
     81        -framework AudioToolbox \
     82        -framework AVFoundation \
     83        -framework Foundation
    7484
    7585include $(FILE_KBUILD_SUB_FOOTER)
  • trunk/src/VBox/ValidationKit/utils/audio/vkat.cpp

    r89055 r89058  
    226226    },
    227227};
     228
     229/**
     230 * Backends.
     231 *
     232 * @note The first backend in the array is the default one for the platform.
     233 */
     234static struct
     235{
     236    /** The driver registration structure. */
     237    PCPDMDRVREG pDrvReg;
     238    /** The backend name.
     239     * Aliases are implemented by having multiple entries for the same backend.  */
     240    const char *pszName;
     241} const g_aBackends[] =
     242{
     243#if defined(VBOX_WITH_AUDIO_ALSA) && defined(RT_OS_LINUX)
     244    {   &g_DrvHostALSAAudio,    "alsa" },
     245#endif
     246#ifdef VBOX_WITH_AUDIO_PULSE
     247    {   &g_DrvHostPulseAudio,   "pulseaudio" },
     248    {   &g_DrvHostPulseAudio,   "pulse" },
     249    {   &g_DrvHostPulseAudio,   "pa" },
     250#endif
     251#ifdef VBOX_WITH_AUDIO_OSS
     252    {   &g_DrvHostOSSAudio,     "oss" },
     253#endif
     254#if defined(RT_OS_DARWIN)
     255    {   &g_DrvHostCoreAudio,    "coreaudio" },
     256    {   &g_DrvHostCoreAudio,    "core" },
     257    {   &g_DrvHostCoreAudio,    "ca" },
     258#endif
     259#if defined(RT_OS_WINDOWS)
     260    {   &g_DrvHostAudioWas,     "wasapi" },
     261    {   &g_DrvHostAudioWas,     "was" },
     262    {   &g_DrvHostDSound,       "directsound" },
     263    {   &g_DrvHostDSound,       "dsound" },
     264    {   &g_DrvHostDSound,       "ds" },
     265#endif
     266};
     267AssertCompile(sizeof(g_aBackends) > 0 /* port me */);
    228268
    229269/** The test handle. */
     
    712752    Cfg.enmLayout   = PDMAUDIOSTREAMLAYOUT_NON_INTERLEAVED;
    713753
     754    Cfg.Backend.cFramesBufferSize   = PDMAudioPropsMilliToFrames(pProps, 300);
     755    Cfg.Backend.cFramesPreBuffering = PDMAudioPropsMilliToFrames(pProps, 200);
     756    Cfg.Backend.cFramesPeriod       = PDMAudioPropsMilliToFrames(pProps, 10);
     757    Cfg.Device.cMsSchedulingHint    = 10;
     758
    714759    return audioTestStreamCreate(pTstEnv, pStream, &Cfg);
    715760}
     
    9811026    const char *pszDevice  = NULL; /* Custom device to use. Can be NULL if not being used. */
    9821027    const char *pszTag     = NULL; /* Custom tag to use. Can be NULL if not being used. */
    983 
    984     /* The backend: */
    985     PCPDMDRVREG pDrvReg;
    986 #if defined(RT_OS_WINDOWS)
    987     pDrvReg = &g_DrvHostAudioWas;
    988 #elif defined(RT_OS_DARWIN)
    989     pDrvReg = &g_DrvHostCoreAudio;
    990 #elif defined(RT_OS_SOLARIS)
    991     pDrvReg = &g_DrvHostOSSAudio;
    992 #elif defined(RT_OS_LINUX) && defined(VBOX_WITH_AUDIO_ALSA)
    993     pDrvReg = &g_DrvHostALSAAudio;
    994 #elif defined(RT_OS_LINUX) && defined(VBOX_WITH_AUDIO_PULSE)
    995     pDrvReg = &g_DrvHostPulseAudio;
    996 #elif defined(RT_OS_LINUX) && defined(VBOX_WITH_AUDIO_OSS)
    997     pDrvReg = &g_DrvHostPulseAudio;
    998 #else
    999 # error "Port me!"
    1000 #endif
    1001 
    1002     RTGETOPTUNION ValueUnion;
     1028    PCPDMDRVREG pDrvReg    = g_aBackends[0].pDrvReg;
     1029
    10031030    RTGETOPTSTATE GetState;
    10041031    int rc = RTGetOptInit(&GetState, argc, argv, g_aCmdTestOptions, RT_ELEMENTS(g_aCmdTestOptions), 1, 0 /*fFlags*/);
    10051032    AssertRCReturn(rc, RTEXITCODE_INIT);
    10061033
     1034    RTGETOPTUNION ValueUnion;
    10071035    while ((rc = RTGetOpt(&GetState, &ValueUnion)))
    10081036    {
     
    10201048            case 'b':
    10211049                pDrvReg = NULL;
    1022 #ifdef VBOX_WITH_AUDIO_PULSE
    1023                 if (   !strcmp(ValueUnion.psz, "pulseaudio")
    1024                     || !strcmp(ValueUnion.psz, "pa"))
    1025                     pDrvReg = &g_DrvHostPulseAudio;
    1026 #endif
    1027 #ifdef VBOX_WITH_AUDIO_ALSA
    1028                 if (   !strcmp(ValueUnion.psz, "alsa"))
    1029                     pDrvReg = &g_DrvHostALSAAudio;
    1030 #endif
    1031 #ifdef VBOX_WITH_AUDIO_OSS
    1032                 if (   !strcmp(ValueUnion.psz, "oss"))
    1033                     pDrvReg = &g_DrvHostOSSAudio;
    1034 #endif
    1035 #if defined(RT_OS_DARWIN)
    1036                 if (   !strcmp(ValueUnion.psz, "coreaudio"))
    1037                     pDrvReg = &g_DrvHostCoreAudio;
    1038 #endif
    1039 #if defined(RT_OS_WINDOWS)
    1040                 if (        !strcmp(ValueUnion.psz, "wasapi"))
    1041                     pDrvReg = &g_DrvHostAudioWas;
    1042                 else if (   !strcmp(ValueUnion.psz, "directsound")
    1043                          || !strcmp(ValueUnion.psz, "dsound")
    1044                     pDrvReg = &g_DrvHostDSound;
    1045 #endif
     1050                for (uintptr_t i = 0; i < RT_ELEMENTS(g_aBackends); i++)
     1051                    if (   strcmp(ValueUnion.psz, g_aBackends[i].pszName) == 0
     1052                        || strcmp(ValueUnion.psz, g_aBackends[i].pDrvReg->szName) == 0)
     1053                    {
     1054                        pDrvReg = g_aBackends[i].pDrvReg;
     1055                        break;
     1056                    }
    10461057                if (pDrvReg == NULL)
    10471058                    return RTMsgErrorExit(RTEXITCODE_SYNTAX, "Unknown backend: '%s'", ValueUnion.psz);
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