Skip to content
Snippets Groups Projects
Select Git revision
4 results Searching

CurrentCallVC.mm

Blame
    • Anthony Léonard's avatar
      14e7bf33
      video: OpenGL rendering of incoming frames · 14e7bf33
      Anthony Léonard authored
      
      The previous system to display the incoming video frames was relying
      on CGImage generation with raw framebuffer which were then set as the
      content of the CallView. This way of doing it is not efficient as it
      implies buffer copies and is discouraged by Apple for pictures that
      change often. Moreover, this process was done by the
      VideoReceiveThread from the daemon which was then blocked by those
      copies without being able to decode further incoming frames. This is
      why a lag was appearing and increasing on high resolution stream.
      
      The new system now isolates frame delivering to the UI and their
      rendering. The VideoReceiveThread just update the current frame buffer
      and size without copy and another thread send those data to an OpenGL
      texture on screen refresh which also enables to automatically skip
      frames in case of heavy load.
      
      Change-Id: I0b79ddce66f52a3db1eee19945733ff93e7ce34f
      Reviewed-by: default avatarKateryna Kostiuk <kateryna.kostiuk@savoirfairelinux.com>
      14e7bf33
      History
      video: OpenGL rendering of incoming frames
      Anthony Léonard authored
      
      The previous system to display the incoming video frames was relying
      on CGImage generation with raw framebuffer which were then set as the
      content of the CallView. This way of doing it is not efficient as it
      implies buffer copies and is discouraged by Apple for pictures that
      change often. Moreover, this process was done by the
      VideoReceiveThread from the daemon which was then blocked by those
      copies without being able to decode further incoming frames. This is
      why a lag was appearing and increasing on high resolution stream.
      
      The new system now isolates frame delivering to the UI and their
      rendering. The VideoReceiveThread just update the current frame buffer
      and size without copy and another thread send those data to an OpenGL
      texture on screen refresh which also enables to automatically skip
      frames in case of heavy load.
      
      Change-Id: I0b79ddce66f52a3db1eee19945733ff93e7ce34f
      Reviewed-by: default avatarKateryna Kostiuk <kateryna.kostiuk@savoirfairelinux.com>
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    managerimpl.cpp 102.70 KiB