VirtualBox

Ignore:
Timestamp:
Jan 9, 2023 5:27:44 PM (2 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
155127
Message:

Audio/VBoxManage: Resolved a @todo: Marked the modifyvm "--audio" switch as being deprecated and introduced the switches "--audio-driver" and "--audio-enabled". This allows more flexible control of the audio stack.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp

    r96888 r98032  
    178178    MODIFYVM_AUDIOCONTROLLER,
    179179    MODIFYVM_AUDIOCODEC,
    180     MODIFYVM_AUDIO,
     180    MODIFYVM_AUDIODRIVER,
     181    MODIFYVM_AUDIOENABLED,
     182    MODIFYVM_AUDIO,                   /* Deprecated; remove in the next major version. */
    181183    MODIFYVM_AUDIOIN,
    182184    MODIFYVM_AUDIOOUT,
     
    391393    OPT2("--audio-codec",                   "--audiocodec",             MODIFYVM_AUDIOCODEC,                RTGETOPT_REQ_STRING),
    392394    OPT1("--audio",                                                     MODIFYVM_AUDIO,                     RTGETOPT_REQ_STRING),
     395    OPT2("--audio-driver",                  "--audiodriver",            MODIFYVM_AUDIODRIVER,               RTGETOPT_REQ_STRING),
     396    OPT2("--audio-enabled",                 "--audioenabled",           MODIFYVM_AUDIOENABLED,              RTGETOPT_REQ_BOOL_ONOFF),
    393397    OPT2("--audio-in",                      "--audioin",                MODIFYVM_AUDIOIN,                   RTGETOPT_REQ_BOOL_ONOFF),
    394398    OPT2("--audio-out",                     "--audioout",               MODIFYVM_AUDIOOUT,                  RTGETOPT_REQ_BOOL_ONOFF),
     
    25932597            }
    25942598
    2595             case MODIFYVM_AUDIO:
    2596             {
     2599            case MODIFYVM_AUDIODRIVER:
     2600                RT_FALL_THROUGH();
     2601            case MODIFYVM_AUDIO: /** @todo Deprecated; remove. */
     2602            {
     2603                if (c == MODIFYVM_AUDIO)
     2604                    RTStrmPrintf(g_pStdErr,
     2605                                 ModifyVM::tr("Warning: --audio is deprecated and will be removed soon. Use --audio-driver instead!\n"));
     2606
    25972607                ComPtr<IAudioSettings> audioSettings;
    25982608                CHECK_ERROR_BREAK(sessionMachine, COMGETTER(AudioSettings)(audioSettings.asOutParam()));
     
    26002610                CHECK_ERROR_BREAK(audioSettings, COMGETTER(Adapter)(audioAdapter.asOutParam()));
    26012611                ASSERT(audioAdapter);
    2602 /** @todo r=klaus: don't unconditionally bolt together setting the audio driver
    2603  * and enabling the device. Doing this more cleverly allows changing the audio
    2604  * driver for VMs in saved state, which can be very useful when moving VMs
    2605  * between systems with different setup. The driver doesn't leave any traces in
    2606  * saved state. The GUI also might learn this trick if it doesn't use it
    2607  * already. */
    26082612                /* disable? */
    2609                 if (!RTStrICmp(ValueUnion.psz, "none"))
    2610                 {
    2611                     CHECK_ERROR(audioAdapter, COMSETTER(Enabled)(false));
    2612                 }
     2613                if (   !RTStrICmp(ValueUnion.psz, "none")
     2614                    || !RTStrICmp(ValueUnion.psz, "null"))
     2615                    CHECK_ERROR(audioAdapter, COMSETTER(AudioDriver)(AudioDriverType_Null));
    26132616                else if (!RTStrICmp(ValueUnion.psz, "default"))
    2614                 {
    26152617                    CHECK_ERROR(audioAdapter, COMSETTER(AudioDriver)(AudioDriverType_Default));
    2616                     CHECK_ERROR(audioAdapter, COMSETTER(Enabled)(true));
    2617                 }
    2618                 else if (!RTStrICmp(ValueUnion.psz, "null"))
    2619                 {
    2620                     CHECK_ERROR(audioAdapter, COMSETTER(AudioDriver)(AudioDriverType_Null));
    2621                     CHECK_ERROR(audioAdapter, COMSETTER(Enabled)(true));
    2622                 }
    26232618#ifdef RT_OS_WINDOWS
    2624 #ifdef VBOX_WITH_WINMM
     2619# ifdef VBOX_WITH_WINMM
    26252620                else if (!RTStrICmp(ValueUnion.psz, "winmm"))
    2626                 {
    26272621                    CHECK_ERROR(audioAdapter, COMSETTER(AudioDriver)(AudioDriverType_WinMM));
    2628                     CHECK_ERROR(audioAdapter, COMSETTER(Enabled)(true));
    2629                 }
    2630 #endif
     2622# endif
    26312623                else if (!RTStrICmp(ValueUnion.psz, "dsound"))
    2632                 {
    26332624                    CHECK_ERROR(audioAdapter, COMSETTER(AudioDriver)(AudioDriverType_DirectSound));
    2634                     CHECK_ERROR(audioAdapter, COMSETTER(Enabled)(true));
    2635                 }
    26362625                else if (!RTStrICmp(ValueUnion.psz, "was"))
    2637                 {
    26382626                    CHECK_ERROR(audioAdapter, COMSETTER(AudioDriver)(AudioDriverType_WAS));
    2639                     CHECK_ERROR(audioAdapter, COMSETTER(Enabled)(true));
    2640                 }
    26412627#endif /* RT_OS_WINDOWS */
    26422628#ifdef VBOX_WITH_AUDIO_OSS
    26432629                else if (!RTStrICmp(ValueUnion.psz, "oss"))
    2644                 {
    26452630                    CHECK_ERROR(audioAdapter, COMSETTER(AudioDriver)(AudioDriverType_OSS));
    2646                     CHECK_ERROR(audioAdapter, COMSETTER(Enabled)(true));
    2647                 }
    26482631#endif
    26492632#ifdef VBOX_WITH_AUDIO_ALSA
    26502633                else if (!RTStrICmp(ValueUnion.psz, "alsa"))
    2651                 {
    26522634                    CHECK_ERROR(audioAdapter, COMSETTER(AudioDriver)(AudioDriverType_ALSA));
    2653                     CHECK_ERROR(audioAdapter, COMSETTER(Enabled)(true));
    2654                 }
    26552635#endif
    26562636#ifdef VBOX_WITH_AUDIO_PULSE
    26572637                else if (!RTStrICmp(ValueUnion.psz, "pulse"))
    2658                 {
    26592638                    CHECK_ERROR(audioAdapter, COMSETTER(AudioDriver)(AudioDriverType_Pulse));
    2660                     CHECK_ERROR(audioAdapter, COMSETTER(Enabled)(true));
    2661                 }
    26622639#endif
    26632640#ifdef RT_OS_DARWIN
    26642641                else if (!RTStrICmp(ValueUnion.psz, "coreaudio"))
    2665                 {
    26662642                    CHECK_ERROR(audioAdapter, COMSETTER(AudioDriver)(AudioDriverType_CoreAudio));
    2667                     CHECK_ERROR(audioAdapter, COMSETTER(Enabled)(true));
    2668                 }
    26692643#endif /* !RT_OS_DARWIN */
    26702644                else
    26712645                {
    2672                     errorArgument(ModifyVM::tr("Invalid --audio argument '%s'"), ValueUnion.psz);
     2646                    errorArgument(ModifyVM::tr("Invalid %s argument '%s'"),
     2647                                  c == MODIFYVM_AUDIO ? "--audio" : "--audio-driver", ValueUnion.psz);
    26732648                    hrc = E_FAIL;
    26742649                }
     2650
     2651                if (   SUCCEEDED(hrc)
     2652                    && c == MODIFYVM_AUDIO) /* To keep the original behavior until we remove the command. */
     2653                    CHECK_ERROR(audioAdapter, COMSETTER(Enabled)(RTStrICmp(ValueUnion.psz, "none") == false ? false : true));
     2654
     2655                break;
     2656            }
     2657
     2658            case MODIFYVM_AUDIOENABLED:
     2659            {
     2660                ComPtr<IAudioSettings> audioSettings;
     2661                CHECK_ERROR_BREAK(sessionMachine, COMGETTER(AudioSettings)(audioSettings.asOutParam()));
     2662                ComPtr<IAudioAdapter> audioAdapter;
     2663                CHECK_ERROR_BREAK(audioSettings, COMGETTER(Adapter)(audioAdapter.asOutParam()));
     2664                ASSERT(audioAdapter);
     2665
     2666                CHECK_ERROR(audioAdapter, COMSETTER(Enabled)(ValueUnion.f));
    26752667                break;
    26762668            }
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