VirtualBox

Changeset 105009 in vbox


Ignore:
Timestamp:
Jun 24, 2024 5:57:54 PM (5 months ago)
Author:
vboxsync
Message:

Video Recording: Big revamp to improve overall performance. We now don't rely on the periodic display refresh callback anymore to render the entire framebuffer but now rely on delta updates ("dirty rectangles"). Also, we now only encode new frames when an area has changed. This also needed cursor position + change change notifications, as we render the cursor on the host side if mouse integration is enabled (requires 7.1 Guest Additions as of now). Optimized the BGRA32->YUV IV420 color space conversion as well as the overall amount of pixel data shuffled forth and back. Added a new testcase for the cropping/centering code [build fixes]. bugref:10650

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

Legend:

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

    r105006 r105009  
    913913                RECORDINGVIDEOFRAME Frame =
    914914                {
    915                     (uint16_t)w, (uint16_t)h,
    916                     (uint8_t )pFBInfo->u16BitsPerPixel, RECORDINGPIXELFMT_BRGA32, pFBInfo->u32LineSize,
     915                    { (uint32_t)w, (uint32_t)h,
     916                      (uint8_t )pFBInfo->u16BitsPerPixel, RECORDINGPIXELFMT_BRGA32, pFBInfo->u32LineSize },
    917917                    pFBInfo->pu8FramebufferVRAM + (y * pFBInfo->u32LineSize + x * (pFBInfo->u16BitsPerPixel / 8)),
    918918                    pFBInfo->w * pFBInfo->u32LineSize,
    919                     (uint16_t)x, (uint16_t)y
     919                    { (uint32_t)x, (uint32_t)y }
    920920                };
    921921                i_recordingScreenUpdate(uScreenId, &Frame);
     
    958958                            RECORDINGVIDEOFRAME Frame =
    959959                            {
    960                                 (uint16_t)ulWidth, (uint16_t)ulHeight,
    961                                 (uint8_t )ulBitsPerPixel, RECORDINGPIXELFMT_BRGA32, ulBytesPerLine,
     960                                { (uint32_t)ulWidth, (uint32_t)ulHeight,
     961                                  (uint8_t )ulBitsPerPixel, RECORDINGPIXELFMT_BRGA32, ulBytesPerLine },
    962962                                pAddress, ulHeight * ulBytesPerLine,
    963                                 0, 0
     963                                { 0, 0 }
    964964                            };
    965965
     
    10181018                        RECORDINGVIDEOFRAME Frame =
    10191019                        {
    1020                             (uint16_t)w, (uint16_t)h,
    1021                             (uint8_t)ulBitsPerPixel, RECORDINGPIXELFMT_BRGA32, ulBytesPerLine,
     1020                            { (uint32_t)w, (uint32_t)h,
     1021                              (uint8_t)ulBitsPerPixel, RECORDINGPIXELFMT_BRGA32, ulBytesPerLine },
    10221022                            pu8Dst, h * ulBytesPerLine,
    1023                             (uint16_t)x, (uint16_t)y
     1023                            { (uint32_t)x, (uint32_t)y }
    10241024                        };
    10251025
     
    22822282            RECORDINGVIDEOFRAME Frame =
    22832283            {
    2284                 (uint16_t)pFBInfo->w, (uint16_t)pFBInfo->h,
    2285                 (uint8_t)pFBInfo->u16BitsPerPixel, RECORDINGPIXELFMT_BRGA32, pFBInfo->u32LineSize, //pFBInfo->w * (pFBInfo->u16BitsPerPixel / 8),
    2286                 pFBInfo->pu8FramebufferVRAM, pFBInfo->h * pFBInfo->u32LineSize, 0, 0
     2284                { (uint32_t)pFBInfo->w, (uint32_t)pFBInfo->h,
     2285                  (uint8_t)pFBInfo->u16BitsPerPixel, RECORDINGPIXELFMT_BRGA32, pFBInfo->u32LineSize },
     2286                pFBInfo->pu8FramebufferVRAM, pFBInfo->h * pFBInfo->u32LineSize,
     2287                { 0, 0 }
    22872288            };
    22882289
  • trunk/src/VBox/Main/src-client/RecordingInternals.cpp

    r105006 r105009  
    3737# include <iprt/formats/bmp.h>
    3838#endif
    39 
    40 #include "../src-client/Remotery.h"
    4139
    4240
  • trunk/src/VBox/Main/src-client/RecordingUtils.cpp

    r105006 r105009  
    436436
    437437        /* Bitmaps (DIBs) are stored upside-down (thanks, OS/2), so work from the bottom up. */
    438         uint32_t offSrc = cbRGBBuf - uBytesPerLine;
     438        size_t offSrc = cbRGBBuf - uBytesPerLine;
    439439
    440440        /* Do the copy. */
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