VirtualBox

Changeset 89510 in vbox for trunk/src/VBox/Main/src-client


Ignore:
Timestamp:
Jun 4, 2021 1:20:02 PM (4 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
144868
Message:

Audio: Split up PDMIHOSTAUDIO::pfnStreamControl into individual methods for each command. bugref:9890

Location:
trunk/src/VBox/Main/src-client
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/src-client/DrvAudioRec.cpp

    r89504 r89510  
    543543
    544544/**
    545  * Controls an audio output stream
    546  *
    547  * @returns VBox status code.
    548  * @param   pThis               Driver instance.
    549  * @param   pStreamAV           Audio output stream to control.
    550  * @param   enmStreamCmd        Stream command to issue.
    551  */
    552 static int avRecControlStreamOut(PDRVAUDIORECORDING pThis, PAVRECSTREAM pStreamAV, PDMAUDIOSTREAMCMD enmStreamCmd)
    553 {
    554     RT_NOREF(pThis, pStreamAV);
    555 
    556     int rc;
    557     switch (enmStreamCmd)
    558     {
    559         case PDMAUDIOSTREAMCMD_ENABLE:
    560         case PDMAUDIOSTREAMCMD_DISABLE:
    561         case PDMAUDIOSTREAMCMD_RESUME:
    562         case PDMAUDIOSTREAMCMD_PAUSE:
    563         case PDMAUDIOSTREAMCMD_DRAIN:
    564             rc = VINF_SUCCESS;
    565             break;
    566 
    567         default:
    568             rc = VERR_NOT_SUPPORTED;
    569             break;
    570     }
    571 
    572     return rc;
    573 }
    574 
    575 
    576 /**
    577  * @interface_method_impl{PDMIHOSTAUDIO,pfnStreamControl}
    578  */
    579 static DECLCALLBACK(int) drvAudioVideoRecHA_StreamControl(PPDMIHOSTAUDIO pInterface,
    580                                                           PPDMAUDIOBACKENDSTREAM pStream, PDMAUDIOSTREAMCMD enmStreamCmd)
    581 {
    582     PDRVAUDIORECORDING pThis     = RT_FROM_CPP_MEMBER(pInterface, DRVAUDIORECORDING, IHostAudio);
    583     PAVRECSTREAM       pStreamAV = (PAVRECSTREAM)pStream;
    584     AssertPtrReturn(pStreamAV, VERR_INVALID_POINTER);
    585 
    586     if (pStreamAV->Cfg.enmDir == PDMAUDIODIR_OUT)
    587         return avRecControlStreamOut(pThis, pStreamAV, enmStreamCmd);
    588 
     545 * @interface_method_impl{PDMIHOSTAUDIO,pfnStreamEnable}
     546 */
     547static DECLCALLBACK(int) drvAudioVideoRecHA_StreamEnable(PPDMIHOSTAUDIO pInterface, PPDMAUDIOBACKENDSTREAM pStream)
     548{
     549    RT_NOREF(pInterface, pStream);
     550    return VINF_SUCCESS;
     551}
     552
     553
     554/**
     555 * @interface_method_impl{PDMIHOSTAUDIO,pfnStreamDisable}
     556 */
     557static DECLCALLBACK(int) drvAudioVideoRecHA_StreamDisable(PPDMIHOSTAUDIO pInterface, PPDMAUDIOBACKENDSTREAM pStream)
     558{
     559    RT_NOREF(pInterface, pStream);
     560    return VINF_SUCCESS;
     561}
     562
     563
     564/**
     565 * @interface_method_impl{PDMIHOSTAUDIO,pfnStreamPause}
     566 */
     567static DECLCALLBACK(int) drvAudioVideoRecHA_StreamPause(PPDMIHOSTAUDIO pInterface, PPDMAUDIOBACKENDSTREAM pStream)
     568{
     569    RT_NOREF(pInterface, pStream);
     570    return VINF_SUCCESS;
     571}
     572
     573
     574/**
     575 * @interface_method_impl{PDMIHOSTAUDIO,pfnStreamResume}
     576 */
     577static DECLCALLBACK(int) drvAudioVideoRecHA_StreamResume(PPDMIHOSTAUDIO pInterface, PPDMAUDIOBACKENDSTREAM pStream)
     578{
     579    RT_NOREF(pInterface, pStream);
     580    return VINF_SUCCESS;
     581}
     582
     583
     584/**
     585 * @interface_method_impl{PDMIHOSTAUDIO,pfnStreamDrain}
     586 */
     587static DECLCALLBACK(int) drvAudioVideoRecHA_StreamDrain(PPDMIHOSTAUDIO pInterface, PPDMAUDIOBACKENDSTREAM pStream)
     588{
     589    RT_NOREF(pInterface, pStream);
    589590    return VINF_SUCCESS;
    590591}
     
    11141115    pThis->IHostAudio.pfnStreamDestroy              = drvAudioVideoRecHA_StreamDestroy;
    11151116    pThis->IHostAudio.pfnStreamNotifyDeviceChanged  = NULL;
    1116     pThis->IHostAudio.pfnStreamControl              = drvAudioVideoRecHA_StreamControl;
     1117    pThis->IHostAudio.pfnStreamEnable               = drvAudioVideoRecHA_StreamEnable;
     1118    pThis->IHostAudio.pfnStreamDisable              = drvAudioVideoRecHA_StreamDisable;
     1119    pThis->IHostAudio.pfnStreamPause                = drvAudioVideoRecHA_StreamPause;
     1120    pThis->IHostAudio.pfnStreamResume               = drvAudioVideoRecHA_StreamResume;
     1121    pThis->IHostAudio.pfnStreamDrain                = drvAudioVideoRecHA_StreamDrain;
    11171122    pThis->IHostAudio.pfnStreamGetState             = drvAudioVideoRecHA_StreamGetState;
    11181123    pThis->IHostAudio.pfnStreamGetPending           = NULL;
  • trunk/src/VBox/Main/src-client/DrvAudioVRDE.cpp

    r89504 r89510  
    417417
    418418/**
    419  * @ interface_method_impl{PDMIHOSTAUDIO,pfnStreamEnable}
     419 * @interface_method_impl{PDMIHOSTAUDIO,pfnStreamEnable}
    420420 */
    421421static DECLCALLBACK(int) drvAudioVrdeHA_StreamEnable(PPDMIHOSTAUDIO pInterface, PPDMAUDIOBACKENDSTREAM pStream)
     
    451451
    452452/**
    453  * @ interface_method_impl{PDMIHOSTAUDIO,pfnStreamDisable}
     453 * @interface_method_impl{PDMIHOSTAUDIO,pfnStreamDisable}
    454454 */
    455455static DECLCALLBACK(int) drvAudioVrdeHA_StreamDisable(PPDMIHOSTAUDIO pInterface, PPDMAUDIOBACKENDSTREAM pStream)
     
    477477
    478478/**
    479  * @ interface_method_impl{PDMIHOSTAUDIO,pfnStreamPause}
     479 * @interface_method_impl{PDMIHOSTAUDIO,pfnStreamPause}
    480480 */
    481481static DECLCALLBACK(int) drvAudioVrdeHA_StreamPause(PPDMIHOSTAUDIO pInterface, PPDMAUDIOBACKENDSTREAM pStream)
     
    495495
    496496/**
    497  * @ interface_method_impl{PDMIHOSTAUDIO,pfnStreamResume}
     497 * @interface_method_impl{PDMIHOSTAUDIO,pfnStreamResume}
    498498 */
    499499static DECLCALLBACK(int) drvAudioVrdeHA_StreamResume(PPDMIHOSTAUDIO pInterface, PPDMAUDIOBACKENDSTREAM pStream)
     
    513513
    514514/**
    515  * @ interface_method_impl{PDMIHOSTAUDIO,pfnStreamDrain}
     515 * @interface_method_impl{PDMIHOSTAUDIO,pfnStreamDrain}
    516516 */
    517517static DECLCALLBACK(int) drvAudioVrdeHA_StreamDrain(PPDMIHOSTAUDIO pInterface, PPDMAUDIOBACKENDSTREAM pStream)
     
    520520    LogFlowFunc(("returns VINF_SUCCESS\n"));
    521521    return VINF_SUCCESS;
    522 }
    523 
    524 
    525 /**
    526  * @interface_method_impl{PDMIHOSTAUDIO,pfnStreamControl}
    527  */
    528 static DECLCALLBACK(int) drvAudioVrdeHA_StreamControl(PPDMIHOSTAUDIO pInterface,
    529                                                       PPDMAUDIOBACKENDSTREAM pStream, PDMAUDIOSTREAMCMD enmStreamCmd)
    530 {
    531     /** @todo r=bird: I'd like to get rid of this pfnStreamControl method,
    532      *        replacing it with individual StreamXxxx methods.  That would save us
    533      *        potentally huge switches and more easily see which drivers implement
    534      *        which operations (grep for pfnStreamXxxx). */
    535     switch (enmStreamCmd)
    536     {
    537         case PDMAUDIOSTREAMCMD_ENABLE:
    538             return drvAudioVrdeHA_StreamEnable(pInterface, pStream);
    539         case PDMAUDIOSTREAMCMD_DISABLE:
    540             return drvAudioVrdeHA_StreamDisable(pInterface, pStream);
    541         case PDMAUDIOSTREAMCMD_PAUSE:
    542             return drvAudioVrdeHA_StreamPause(pInterface, pStream);
    543         case PDMAUDIOSTREAMCMD_RESUME:
    544             return drvAudioVrdeHA_StreamResume(pInterface, pStream);
    545         case PDMAUDIOSTREAMCMD_DRAIN:
    546             return drvAudioVrdeHA_StreamDrain(pInterface, pStream);
    547 
    548         case PDMAUDIOSTREAMCMD_END:
    549         case PDMAUDIOSTREAMCMD_32BIT_HACK:
    550         case PDMAUDIOSTREAMCMD_INVALID:
    551             /* no default*/
    552             break;
    553     }
    554     return VERR_NOT_SUPPORTED;
    555522}
    556523
     
    776743    pThis->IHostAudio.pfnStreamDestroy              = drvAudioVrdeHA_StreamDestroy;
    777744    pThis->IHostAudio.pfnStreamNotifyDeviceChanged  = NULL;
    778     pThis->IHostAudio.pfnStreamControl              = drvAudioVrdeHA_StreamControl;
     745    pThis->IHostAudio.pfnStreamEnable               = drvAudioVrdeHA_StreamEnable;
     746    pThis->IHostAudio.pfnStreamDisable              = drvAudioVrdeHA_StreamDisable;
     747    pThis->IHostAudio.pfnStreamPause                = drvAudioVrdeHA_StreamPause;
     748    pThis->IHostAudio.pfnStreamResume               = drvAudioVrdeHA_StreamResume;
     749    pThis->IHostAudio.pfnStreamDrain                = drvAudioVrdeHA_StreamDrain;
    779750    pThis->IHostAudio.pfnStreamGetState             = drvAudioVrdeHA_StreamGetState;
    780751    pThis->IHostAudio.pfnStreamGetPending           = NULL;
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