VirtualBox

Changeset 75254 in vbox for trunk/src


Ignore:
Timestamp:
Nov 5, 2018 6:35:21 PM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
126356
Message:

Capturing: Build fix.

Location:
trunk/src/VBox/Main
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/include/DrvAudioVideoRec.h

    r75251 r75254  
    4545public:
    4646
    47     int applyConfiguration(const settings::CaptureSettings &a_Settings);
     47    int applyConfiguration(const settings::CaptureSettings &Settings);
    4848
    4949public:
  • trunk/src/VBox/Main/include/VideoRecStream.h

    r75251 r75254  
    3232
    3333class WebMWriter;
    34 
    35 struct CaptureContext;
    36 typedef struct CaptureContext *PVIDEORECCONTEXT;
    37 
     34class CaptureContext;
    3835
    3936/** Structure for queuing all blocks bound to a single timecode.
     
    114111    CaptureStream(void);
    115112
    116     CaptureStream(uint32_t a_uScreen, const settings::CaptureScreenSettings &a_Settings);
     113    CaptureStream(uint32_t uScreen, const settings::CaptureScreenSettings &Settings);
    117114
    118115    virtual ~CaptureStream(void);
     
    120117public:
    121118
    122     int Init(uint32_t a_uScreen, const settings::CaptureScreenSettings &a_Settings);
     119    int Init(uint32_t uScreen, const settings::CaptureScreenSettings &Settings);
    123120    int Uninit(void);
    124121
     
    136133    int close(void);
    137134
    138     int initInternal(uint32_t a_uScreen, const settings::CaptureScreenSettings &a_Settings);
     135    int initInternal(uint32_t uScreen, const settings::CaptureScreenSettings &Settings);
    139136    int uninitInternal(void);
    140137
     
    158155    /** Recording context this stream is associated to. */
    159156    CaptureContext             *pCtx;
    160     union
    161     {
    162         struct
    163         {
    164             /** File handle to use for writing. */
    165             RTFILE              hFile;
    166             /** File name being used for this stream. */
    167             Utf8Str             strName;
    168             /** Pointer to WebM writer instance being used. */
    169             WebMWriter         *pWEBM;
    170         } File;
    171     };
     157    struct
     158    {
     159        /** File handle to use for writing. */
     160        RTFILE              hFile;
     161        /** File name being used for this stream. */
     162        Utf8Str             strName;
     163        /** Pointer to WebM writer instance being used. */
     164        WebMWriter         *pWEBM;
     165    } File;
    172166    bool                fEnabled;
    173167#ifdef VBOX_WITH_AUDIO_VIDEOREC
     
    196190    } Video;
    197191
    198     settings::CaptureScreenSettings Settings;
     192    settings::CaptureScreenSettings ScreenSettings;
    199193    /** Common set of video recording (data) blocks, needed for
    200194     *  multiplexing to all recording streams. */
  • trunk/src/VBox/Main/src-client/DrvAudioVideoRec.cpp

    r75251 r75254  
    10881088 * @param   Settings        Capturing configuration to apply.
    10891089 */
    1090 int AudioVideoRec::applyConfiguration(const settings::CaptureSettings &a_Settings)
     1090int AudioVideoRec::applyConfiguration(const settings::CaptureSettings &Settings)
    10911091{
    10921092    /** @todo Do some validation here. */
    1093     mVideoRecCfg = a_Settings; /* Note: Does have an own copy operator. */
     1093    mVideoRecCfg = Settings; /* Note: Does have an own copy operator. */
    10941094    return VINF_SUCCESS;
    10951095}
  • trunk/src/VBox/Main/src-client/VideoRec.cpp

    r75251 r75254  
    187187 *
    188188 * @returns IPRT status code.
    189  * @param   cScreens            Number of screens to create context for.
    190  * @param   pVideoRecCfg        Pointer to video recording configuration to use.
     189 * @param   a_Settings          Capture settings to use for context creation.
    191190 */
    192191int CaptureContext::createInternal(const settings::CaptureSettings &a_Settings)
  • trunk/src/VBox/Main/src-client/VideoRecStream.cpp

    r75251 r75254  
    4747}
    4848
    49 CaptureStream::CaptureStream(uint32_t a_uScreen, const settings::CaptureScreenSettings &a_Settings)
     49CaptureStream::CaptureStream(uint32_t uScreen, const settings::CaptureScreenSettings &Settings)
    5050    : tsStartMs(0)
    5151{
    52     int rc2 = initInternal(a_uScreen, a_Settings);
     52    int rc2 = initInternal(uScreen, Settings);
    5353    if (RT_FAILURE(rc2))
    5454        throw rc2;
     
    6868int CaptureStream::open(void)
    6969{
    70     Assert(Settings.enmDest == CaptureDestination_None);
     70    Assert(ScreenSettings.enmDest == CaptureDestination_None);
    7171
    7272    int rc;
    7373
    74     switch (Settings.enmDest)
     74    switch (ScreenSettings.enmDest)
    7575    {
    7676        case CaptureDestination_File:
    7777        {
    78             Assert(Settings.File.strName.isNotEmpty());
    79 
    80             char *pszAbsPath = RTPathAbsDup(Settings.File.strName.c_str());
     78            Assert(ScreenSettings.File.strName.isNotEmpty());
     79
     80            char *pszAbsPath = RTPathAbsDup(ScreenSettings.File.strName.c_str());
    8181            AssertPtrReturn(pszAbsPath, VERR_NO_MEMORY);
    8282
     
    172172        {
    173173#ifdef VBOX_WITH_LIBVPX
    174             Assert(this->Settings.Video.ulFPS);
     174            Assert(this->ScreenSettings.Video.ulFPS);
    175175            if (value.compare("realtime", Utf8Str::CaseInsensitive) == 0)
    176176                this->Video.Codec.VPX.uEncoderDeadline = VPX_DL_REALTIME;
    177177            else if (value.compare("good", Utf8Str::CaseInsensitive) == 0)
    178                 this->Video.Codec.VPX.uEncoderDeadline = 1000000 / this->Settings.Video.ulFPS;
     178                this->Video.Codec.VPX.uEncoderDeadline = 1000000 / this->ScreenSettings.Video.ulFPS;
    179179            else if (value.compare("best", Utf8Str::CaseInsensitive) == 0)
    180180                this->Video.Codec.VPX.uEncoderDeadline = VPX_DL_BEST_QUALITY;
     
    190190            if (value.compare("false", Utf8Str::CaseInsensitive) == 0)
    191191            {
    192                 this->Settings.featureMap[CaptureFeature_Video] = false;
     192                this->ScreenSettings.featureMap[CaptureFeature_Video] = false;
    193193#ifdef VBOX_WITH_AUDIO_VIDEOREC
    194194                LogRel(("VideoRec: Only audio will be recorded\n"));
     
    201201            if (value.compare("true", Utf8Str::CaseInsensitive) == 0)
    202202            {
    203                 this->Settings.featureMap[CaptureFeature_Audio] = true;
     203                this->ScreenSettings.featureMap[CaptureFeature_Audio] = true;
    204204            }
    205205            else
     
    212212            if (value.compare("low", Utf8Str::CaseInsensitive) == 0)
    213213            {
    214                 this->Settings.Audio.uHz       = 8000;
    215                 this->Settings.Audio.cBits     = 16;
    216                 this->Settings.Audio.cChannels = 1;
     214                this->ScreenSettings.Audio.uHz       = 8000;
     215                this->ScreenSettings.Audio.cBits     = 16;
     216                this->ScreenSettings.Audio.cChannels = 1;
    217217            }
    218218            else if (value.startsWith("med" /* "med[ium]" */, Utf8Str::CaseInsensitive) == 0)
     
    222222            else if (value.compare("high", Utf8Str::CaseInsensitive) == 0)
    223223            {
    224                 this->Settings.Audio.uHz       = 48000;
    225                 this->Settings.Audio.cBits     = 16;
    226                 this->Settings.Audio.cChannels = 2;
     224                this->ScreenSettings.Audio.uHz       = 48000;
     225                this->ScreenSettings.Audio.cBits     = 16;
     226                this->ScreenSettings.Audio.cChannels = 2;
    227227            }
    228228#endif
     
    238238const settings::CaptureScreenSettings &CaptureStream::GetConfig(void) const
    239239{
    240     return this->Settings;
     240    return this->ScreenSettings;
    241241}
    242242
     
    252252        return true;
    253253
    254     if (   Settings.ulMaxTimeS
    255         && tsNowMs >= this->tsStartMs + (Settings.ulMaxTimeS * RT_MS_1SEC))
     254    if (   this->ScreenSettings.ulMaxTimeS
     255        && tsNowMs >= this->tsStartMs + (this->ScreenSettings.ulMaxTimeS * RT_MS_1SEC))
    256256    {
    257257        return true;
    258258    }
    259259
    260     if (Settings.enmDest == CaptureDestination_File)
    261     {
    262 
    263         if (Settings.File.ulMaxSizeMB)
     260    if (this->ScreenSettings.enmDest == CaptureDestination_File)
     261    {
     262
     263        if (this->ScreenSettings.File.ulMaxSizeMB)
    264264        {
    265265            uint64_t sizeInMB = this->File.pWEBM->GetFileSize() / _1M;
    266             if(sizeInMB >= Settings.File.ulMaxSizeMB)
     266            if(sizeInMB >= this->ScreenSettings.File.ulMaxSizeMB)
    267267                return true;
    268268        }
     
    297297    lock();
    298298
    299     if (!Settings.fEnabled)
     299    if (!this->ScreenSettings.fEnabled)
    300300    {
    301301        unlock();
     
    327327                                      this->Video.Codec.VPX.pu8YuvBuf, pVideoFrame->uWidth, pVideoFrame->uHeight,
    328328                                      /* Source */
    329                                       pVideoFrame->pu8RGBBuf, this->Settings.Video.ulWidth, this->Settings.Video.ulHeight);
     329                                      pVideoFrame->pu8RGBBuf, this->ScreenSettings.Video.ulWidth, this->ScreenSettings.Video.ulHeight);
    330330                if (RT_SUCCESS(rc))
    331331                {
     
    440440        this->Video.uLastTimeStampMs = uTimeStampMs;
    441441
    442         int xDiff = ((int)this->Settings.Video.ulWidth - (int)uSrcWidth) / 2;
     442        int xDiff = ((int)this->ScreenSettings.Video.ulWidth - (int)uSrcWidth) / 2;
    443443        uint32_t w = uSrcWidth;
    444444        if ((int)w + xDiff + (int)x <= 0)  /* Nothing visible. */
     
    459459
    460460        uint32_t h = uSrcHeight;
    461         int yDiff = ((int)this->Settings.Video.ulHeight - (int)uSrcHeight) / 2;
     461        int yDiff = ((int)this->ScreenSettings.Video.ulHeight - (int)uSrcHeight) / 2;
    462462        if ((int)h + yDiff + (int)y <= 0)  /* Nothing visible. */
    463463        {
     
    476476            destY = y + yDiff;
    477477
    478         if (   destX > this->Settings.Video.ulWidth
    479             || destY > this->Settings.Video.ulHeight)
     478        if (   destX > this->ScreenSettings.Video.ulWidth
     479            || destY > this->ScreenSettings.Video.ulHeight)
    480480        {
    481481            rc = VERR_INVALID_PARAMETER;  /* Nothing visible. */
     
    483483        }
    484484
    485         if (destX + w > this->Settings.Video.ulWidth)
    486             w = this->Settings.Video.ulWidth - destX;
    487 
    488         if (destY + h > this->Settings.Video.ulHeight)
    489             h = this->Settings.Video.ulHeight - destY;
     485        if (destX + w > this->ScreenSettings.Video.ulWidth)
     486            w = this->ScreenSettings.Video.ulWidth - destX;
     487
     488        if (destY + h > this->ScreenSettings.Video.ulHeight)
     489            h = this->ScreenSettings.Video.ulHeight - destY;
    490490
    491491        pFrame = (PVIDEORECVIDEOFRAME)RTMemAllocZ(sizeof(VIDEORECVIDEOFRAME));
     
    515515            AssertMsgFailedBreakStmt(("Unknown pixel format (%RU32)\n", uPixelFormat), rc = VERR_NOT_SUPPORTED);
    516516
    517         const size_t cbRGBBuf =   this->Settings.Video.ulWidth
    518                                 * this->Settings.Video.ulHeight
     517        const size_t cbRGBBuf =   this->ScreenSettings.Video.ulWidth
     518                                * this->ScreenSettings.Video.ulHeight
    519519                                * uBytesPerPixel;
    520520        AssertBreakStmt(cbRGBBuf, rc = VERR_INVALID_PARAMETER);
     
    528528        /* If the current video frame is smaller than video resolution we're going to encode,
    529529         * clear the frame beforehand to prevent artifacts. */
    530         if (   uSrcWidth  < this->Settings.Video.ulWidth
    531             || uSrcHeight < this->Settings.Video.ulHeight)
     530        if (   uSrcWidth  < this->ScreenSettings.Video.ulWidth
     531            || uSrcHeight < this->ScreenSettings.Video.ulHeight)
    532532        {
    533533            RT_BZERO(pFrame->pu8RGBBuf, pFrame->cbRGBBuf);
     
    536536        /* Calculate start offset in source and destination buffers. */
    537537        uint32_t offSrc = y * uBytesPerLine + x * uBytesPerPixel;
    538         uint32_t offDst = (destY * this->Settings.Video.ulWidth + destX) * uBytesPerPixel;
     538        uint32_t offDst = (destY * this->ScreenSettings.Video.ulWidth + destX) * uBytesPerPixel;
    539539
    540540#ifdef VBOX_VIDEOREC_DUMP
     
    576576            /* Overflow check. */
    577577            Assert(offSrc + w * uBytesPerPixel <= uSrcHeight * uBytesPerLine);
    578             Assert(offDst + w * uBytesPerPixel <= this->Settings.Video.ulHeight * this->Settings.Video.ulWidth * uBytesPerPixel);
     578            Assert(offDst + w * uBytesPerPixel <= this->ScreenSettings.Video.ulHeight * this->ScreenSettings.Video.ulWidth * uBytesPerPixel);
    579579
    580580            memcpy(pFrame->pu8RGBBuf + offDst, puSrcData + offSrc, w * uBytesPerPixel);
     
    585585#endif
    586586            offSrc += uBytesPerLine;
    587             offDst += this->Settings.Video.ulWidth * uBytesPerPixel;
     587            offDst += this->ScreenSettings.Video.ulWidth * uBytesPerPixel;
    588588        }
    589589
     
    634634}
    635635
    636 int CaptureStream::Init(uint32_t a_uScreen, const settings::CaptureScreenSettings &a_Settings)
    637 {
    638     return initInternal(a_uScreen, a_Settings);
     636int CaptureStream::Init(uint32_t uScreen, const settings::CaptureScreenSettings &Settings)
     637{
     638    return initInternal(uScreen, Settings);
    639639}
    640640
     
    644644 * @returns IPRT status code.
    645645 * @param   uScreen             Screen number to use for this recording stream.
    646  * @param   Cfg                 Recording screen configuration to use for initialization.
    647  */
    648 int CaptureStream::initInternal(uint32_t a_uScreen, const settings::CaptureScreenSettings &a_Settings)
    649 {
    650     int rc = parseOptionsString(a_Settings.strOptions);
     646 * @param   Settings            Capturing configuration to use for initialization.
     647 */
     648int CaptureStream::initInternal(uint32_t uScreen, const settings::CaptureScreenSettings &Settings)
     649{
     650    int rc = parseOptionsString(Settings.strOptions);
    651651    if (RT_FAILURE(rc))
    652652        return rc;
     
    660660        return rc;
    661661
    662     const bool fVideoEnabled = a_Settings.isFeatureEnabled(CaptureFeature_Video);
    663     const bool fAudioEnabled = a_Settings.isFeatureEnabled(CaptureFeature_Audio);
     662    const bool fVideoEnabled = Settings.isFeatureEnabled(CaptureFeature_Video);
     663    const bool fAudioEnabled = Settings.isFeatureEnabled(CaptureFeature_Audio);
    664664
    665665    if (fVideoEnabled)
     
    669669        rc = initAudio();
    670670
    671     switch (this->Settings.enmDest)
     671    switch (this->ScreenSettings.enmDest)
    672672    {
    673673        case CaptureDestination_File:
    674674        {
    675             const char *pszFile = this->Settings.File.strName.c_str();
     675            const char *pszFile = this->ScreenSettings.File.strName.c_str();
    676676
    677677            rc = File.pWEBM->OpenEx(pszFile, &this->File.hFile,
    678678#ifdef VBOX_WITH_AUDIO_VIDEOREC
    679                                       a_Settings.isFeatureEnabled(CaptureFeature_Audio)
     679                                      Settings.isFeatureEnabled(CaptureFeature_Audio)
    680680                                    ? WebMWriter::AudioCodec_Opus : WebMWriter::AudioCodec_None,
    681681#else
    682682                                      WebMWriter::AudioCodec_None,
    683683#endif
    684                                       a_Settings.isFeatureEnabled(CaptureFeature_Video)
     684                                      Settings.isFeatureEnabled(CaptureFeature_Video)
    685685                                    ? WebMWriter::VideoCodec_VP8 : WebMWriter::VideoCodec_None);
    686686            if (RT_FAILURE(rc))
     
    692692            if (fVideoEnabled)
    693693            {
    694                 rc = this->File.pWEBM->AddVideoTrack(a_Settings.Video.ulWidth, a_Settings.Video.ulHeight,
    695                                                      a_Settings.Video.ulFPS, &this->uTrackVideo);
     694                rc = this->File.pWEBM->AddVideoTrack(Settings.Video.ulWidth, Settings.Video.ulHeight,
     695                                                     Settings.Video.ulFPS, &this->uTrackVideo);
    696696                if (RT_FAILURE(rc))
    697697                {
     
    701701
    702702                LogRel(("VideoRec: Recording video of screen #%u with %RU32x%RU32 @ %RU32 kbps, %RU32 FPS (track #%RU8)\n",
    703                         this->uScreenID, a_Settings.Video.ulWidth, a_Settings.Video.ulHeight, a_Settings.Video.ulRate,
    704                         a_Settings.Video.ulFPS, this->uTrackVideo));
     703                        this->uScreenID, Settings.Video.ulWidth, Settings.Video.ulHeight, Settings.Video.ulRate,
     704                        Settings.Video.ulFPS, this->uTrackVideo));
    705705            }
    706706
     
    708708            if (fAudioEnabled)
    709709            {
    710                 rc = this->File.pWEBM->AddAudioTrack(a_Settings.Audio.uHz, a_Settings.Audio.cChannels, a_Settings.Audio.cBits,
     710                rc = this->File.pWEBM->AddAudioTrack(Settings.Audio.uHz, Settings.Audio.cChannels, Settings.Audio.cBits,
    711711                                                     &this->uTrackAudio);
    712712                if (RT_FAILURE(rc))
     
    717717
    718718                LogRel(("VideoRec: Recording audio in %RU16Hz, %RU8 bit, %RU8 %s (track #%RU8)\n",
    719                         a_Settings.Audio.uHz, a_Settings.Audio.cBits, a_Settings.Audio.cChannels,
    720                         a_Settings.Audio.cChannels ? "channels" : "channel", this->uTrackAudio));
     719                        Settings.Audio.uHz, Settings.Audio.cBits, Settings.Audio.cChannels,
     720                        Settings.Audio.cChannels ? "channels" : "channel", this->uTrackAudio));
    721721            }
    722722#endif
     
    755755        this->pCtx      = pCtx;
    756756        this->fEnabled  = true;
    757         this->uScreenID = a_uScreen;
     757        this->uScreenID = uScreen;
    758758        this->tsStartMs = RTTimeMilliTS();
    759         this->Settings  = a_Settings;
     759        this->ScreenSettings  = Settings;
    760760    }
    761761    else
     
    782782    if (this->fEnabled)
    783783    {
    784         switch (this->Settings.enmDest)
     784        switch (this->ScreenSettings.enmDest)
    785785        {
    786786            case CaptureDestination_File:
     
    807807    }
    808808
    809     switch (this->Settings.enmDest)
     809    switch (this->ScreenSettings.enmDest)
    810810    {
    811811        case CaptureDestination_File:
     
    816816                if (RT_SUCCESS(rc))
    817817                {
    818                     LogRel(("VideoRec: Closed file '%s'\n", this->Settings.File.strName.c_str()));
     818                    LogRel(("VideoRec: Closed file '%s'\n", this->ScreenSettings.File.strName.c_str()));
    819819                }
    820820                else
    821821                {
    822                     LogRel(("VideoRec: Error closing file '%s', rc=%Rrc\n", this->Settings.File.strName.c_str(), rc));
     822                    LogRel(("VideoRec: Error closing file '%s', rc=%Rrc\n", this->ScreenSettings.File.strName.c_str(), rc));
    823823                    break;
    824824                }
     
    858858        return rc;
    859859
    860     if (this->Settings.isFeatureEnabled(CaptureFeature_Video))
     860    if (this->ScreenSettings.isFeatureEnabled(CaptureFeature_Video))
    861861    {
    862862        int rc2 = unitVideo();
     
    911911{
    912912    /* Sanity. */
    913     AssertReturn(this->Settings.Video.ulRate,   VERR_INVALID_PARAMETER);
    914     AssertReturn(this->Settings.Video.ulWidth,  VERR_INVALID_PARAMETER);
    915     AssertReturn(this->Settings.Video.ulHeight, VERR_INVALID_PARAMETER);
    916     AssertReturn(this->Settings.Video.ulFPS,    VERR_INVALID_PARAMETER);
     913    AssertReturn(this->ScreenSettings.Video.ulRate,   VERR_INVALID_PARAMETER);
     914    AssertReturn(this->ScreenSettings.Video.ulWidth,  VERR_INVALID_PARAMETER);
     915    AssertReturn(this->ScreenSettings.Video.ulHeight, VERR_INVALID_PARAMETER);
     916    AssertReturn(this->ScreenSettings.Video.ulFPS,    VERR_INVALID_PARAMETER);
    917917
    918918    this->Video.cFailedEncodingFrames = 0;
    919     this->Video.uDelayMs = RT_MS_1SEC / this->Settings.Video.ulFPS;
     919    this->Video.uDelayMs = RT_MS_1SEC / this->ScreenSettings.Video.ulFPS;
    920920
    921921#ifdef VBOX_WITH_LIBVPX
     
    951951
    952952    /* Target bitrate in kilobits per second. */
    953     pCodec->VPX.Cfg.rc_target_bitrate = this->Settings.Video.ulRate;
     953    pCodec->VPX.Cfg.rc_target_bitrate = this->ScreenSettings.Video.ulRate;
    954954    /* Frame width. */
    955     pCodec->VPX.Cfg.g_w = this->Settings.Video.ulWidth;
     955    pCodec->VPX.Cfg.g_w = this->ScreenSettings.Video.ulWidth;
    956956    /* Frame height. */
    957     pCodec->VPX.Cfg.g_h = this->Settings.Video.ulHeight;
     957    pCodec->VPX.Cfg.g_h = this->ScreenSettings.Video.ulHeight;
    958958    /* 1ms per frame. */
    959959    pCodec->VPX.Cfg.g_timebase.num = 1;
     
    971971
    972972    if (!vpx_img_alloc(&pCodec->VPX.RawImage, VPX_IMG_FMT_I420,
    973                        this->Settings.Video.ulWidth, this->Settings.Video.ulHeight, 1))
     973                       this->ScreenSettings.Video.ulWidth, this->ScreenSettings.Video.ulHeight, 1))
    974974    {
    975975        LogRel(("VideoRec: Failed to allocate image %RU32x%RU32\n",
    976                 this->Settings.Video.ulWidth, this->Settings.Video.ulHeight));
     976                this->ScreenSettings.Video.ulWidth, this->ScreenSettings.Video.ulHeight));
    977977        return VERR_NO_MEMORY;
    978978    }
     
    988988{
    989989#ifdef VBOX_WITH_AUDIO_VIDEOREC
    990     if (this->Settings.isFeatureEnabled(CaptureFeature_Audio))
     990    if (this->ScreenSettings.isFeatureEnabled(CaptureFeature_Audio))
    991991    {
    992992        /* Sanity. */
    993         AssertReturn(this->Settings.Audio.uHz,       VERR_INVALID_PARAMETER);
    994         AssertReturn(this->Settings.Audio.cBits,     VERR_INVALID_PARAMETER);
    995         AssertReturn(this->Settings.Audio.cChannels, VERR_INVALID_PARAMETER);
     993        AssertReturn(this->ScreenSettings.Audio.uHz,       VERR_INVALID_PARAMETER);
     994        AssertReturn(this->ScreenSettings.Audio.cBits,     VERR_INVALID_PARAMETER);
     995        AssertReturn(this->ScreenSettings.Audio.cChannels, VERR_INVALID_PARAMETER);
    996996    }
    997997#endif
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