nvidia capture sdk · nvidia capture sdk: the “capture” part nvfbc nvifr brute force, capture...
TRANSCRIPT
![Page 1: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/1.jpg)
April 4-7, 2016 | Silicon Valley
Shounak Deshpande, NVIDIA
GET TO KNOW THE NVIDIA GRIDTM SDK
![Page 2: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/2.jpg)
2
AGENDA
Background
NVIDIA GRID SDK
Measuring Performance
Maximizing Performance
Interactive Question-Answer Session
![Page 3: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/3.jpg)
3
CLOUD\REMOTE GRAPHICS
VDI Enterprise, Remote Workstation
VMWare, CITRIX, Dassault, and more
Game streaming
GeForceNow
Windows DirectX / OpenGL
Linux OpenGL
![Page 4: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/4.jpg)
4
REMOTE GRAPHICS ECOSYSTEM
CLIENT
Decode Render
User input
SERVER
Render
Capture
Encode
Remote Graphics Server Network Client
IP Network
CPU NIC
![Page 5: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/5.jpg)
5
GRID SW AND HW STACK COMPONENTS
Virtualization
Graphics Shim layers (app streaming)
Platform Virtualization (VDI)
Hypervisors (VDI)
Full Virtualization (VDI)
HW Platforms Client
Anything
Server AWS G2 Instance
GRID K520, M30 GPU
Tesla M60 GPU
NVIDIA Quadro GPUs
Streaming
Capture (Pixel grabbing)
HW Accelerated video compression
HW Accelerated video decoding
![Page 6: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/6.jpg)
6
NVIDIA GRID SDK
![Page 7: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/7.jpg)
7
NVIDIA CAPTURE SDK (Formerly known as NVIDIA GRID SDK)
Goal: Enable Low Latency Remote Graphics Solutions by harnessing NVIDIA GPUs OS: Windows 7+, Linux (CentOS, Debian, RedHat, more) Download: https://developer.nvidia.com/grid-app-game-streaming Support: [email protected]
![Page 8: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/8.jpg)
8
NVIDIA CAPTURE SDK COMPONENTS
Interface Definitions
NVENC
Low latency
Hardware Encoder
NVIFR API Low Latency
Render Target
Capture
NVFBC API Low Latency
Desktop Capture
Sample Code
Documentation
GPU Driver NVFBC library NVIFR library
![Page 9: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/9.jpg)
9
NVIDIA CAPTURE SDK: THE “CAPTURE” PART
NVIFR NVFBC
Brute force, capture all on
screen
Orthogonal to Graphics APIs
Easy to integrate with NVENC
API
Easy onboarding, no process
injection
Efficient than GDI-based screen
scraping
One session per display
No-frills RenderTarget capture
Supports Directx9,10,11,
OpenGL APIs
Easy to integrate with NVENC
API
Needs to be injected in target
process
One session per target window
Enables higher density of
streamed apps
![Page 10: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/10.jpg)
10
NVIDIA CAPTURE SDK : INTERFACES
NVFBC: NVIDIA Frame Buffer Capture NVIFR: NVIDIA In-band Frame Render
L
i
n
u
x
W
i
n
d
o
w
s
-ToHWEnc interfaces internally invoke NVENC API (part of NVIDIA Video Codec SDK)
NVIFR - Directx
NVIFRToSys
NVIFRToHWEnc
NVIFR - OpenGL
NVFBC
NVFBCCuda NVFBCToSys
NVFBCToHWEnc NVFBCToDX9Vid
NVFBC NVFBCToCuda
NVFBCToSys
NVFBCToHWEnc
NVIFR - Directx
NVIFRToSys
NVIFRToHWEnc
NVIFRToSys NVIFRToHWEnc
![Page 11: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/11.jpg)
11
Legacy 2014 2015 2016
Lin
ux
HW
SDK
GRID K340, K520, K1, K2, Quadro K2000+
GRID M30, Quadro M6000
Win
dow
s
2.3
•GRID M30 limited
support
•Maxwell NVENC
enhancements –
quarter-res first pass;
lossless encoding; 4:4:4
encoding
•GRID M30 full
support
•NvIFR full
parity for
NVENC features
with Windows
•NVENC RC 2.0
•GRID M30 full
support
•NVENC RC 2.0
3.0
•HEVC support
•Tesla M60 support
•New unified codec-
agnostic interface for
HW encoder
•Driver support for
H.264 YUV 4:4:4
NVIFR
capture+encode for
DX10/DX11
applications
•Enable NVFBC without driver reload
•Windows 10 support
•New NVFBC interface to capture
desktop to DirectX 9 video memory
surface, along with diffmap support
•Timeout API for NVFBC blocking mode
capture
•Separate thread Mouse capture for all
NVFBC interfaces
•Propagate frame timestamp through
NvIFRHWEncode
•HEVC support
•Tesla M60 support
•New unified codec-
agnostic interface for
HW encoder
4.0 5.0
Tesla M60
•GRID K340,
K520, K1, K2,
Quadro 4000+
support
•H.264 encode
support
•Windows 7, 8,
8.1 support
•GRID K340,
K520, K1, K2,
Quadro 4000+
support
•H.264 encode
support
EVOLUTION OF NVIDIA CAPTURE SDK
![Page 12: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/12.jpg)
12
USING NVFBC API
![Page 13: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/13.jpg)
13
USING NVFBC FOR DESKTOP CAPTURE
Enable NVFBC
Create NVFBC capture session object
Setup NVFBC capture session object
Capture
Release NVFBC capture session object
![Page 14: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/14.jpg)
14
CAPTURING A SCREENSHOT WITH NVFBC
Create NVFBC session object
Set up NVFBC session “Capture” starts here
Read Grabbed buffer
![Page 15: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/15.jpg)
15
CAPTURING USING NVFBC
NvFBCCreateEx()
Create NVFBC Session
NVFBC enabled, not in use
NVFBC already in use
Fail
Setup NVFBC Session
Success
Grab()
Success
Success
Begin
NVFBC Not Enabled
NvFBCEnable()
Enable NVFBC
NvFBCGetStatusEx()
Check NVFBC Status
Fail \ Terminate
Release NVFBC Session
Fail
Exit
Fail
Success
![Page 16: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/16.jpg)
16
DESKTOP REMOTING USING NVFBC + NVENC HW ENCODER
Desktop
Composition
[System
Process]
NV GPU
NVFBC Capture Process
Capture Thread Encode Thread
IDirec3DSurface9*
NVFBC NV GPU Driver NVENC API
3D HW
IDirec3DSurface9* Captured buffer
Video Bitstream
packet
NVENC HW
< 1millisec ~ 2 millisec ~ 4 millisec * Latency approx. for 1080p desktop streamed as 720p video
![Page 17: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/17.jpg)
17
USING NVIFR API
![Page 18: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/18.jpg)
18
USING NVIFR FOR APPLICATION STEAMING
Write a Shim layer to host NVIFR
Inject Shim layer into target application
Fetch rendering graphics context
Create NVIFR session object using the context
Setup NVIFR session object
Capture
Release NVIFR session object
![Page 19: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/19.jpg)
19
APP STREAMING USING HW ENCODER
App
Shim
DX/OGL Runtime
NVIFR
Render() or Present()
NV GPU 3D HW
Streaming
Component Compressed
Video Bitstream
NVENC
HW
NVIFR is injected into the application before the graphics runtime, using an
app-level shim layer
![Page 20: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/20.jpg)
20
DIRECTX APP STREAMING USING NVIFR HW ENCODER
Application allocates output buffers and
event handles
Select the rate control mode and encoder preset according to
use case
![Page 21: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/21.jpg)
21
DIRECTX APP STREAMING USING NVIFR HW ENCODER
The event handles passed to
NvIFRSetupHWEncoder will be signaled
when NVENC has finished work
submitted by
NvIFRTransferRenderTargetToHWEncoder
API
![Page 22: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/22.jpg)
22
OPENGL APP STREAMING USING NVIFR HW ENCODER
Create session
Create TransferObject
![Page 23: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/23.jpg)
23
OPENGL APP STREAMING USING NVIFR HW ENCODER
Capture + Encode
Retrieve output bitstream
Release buffers for re-use
![Page 24: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/24.jpg)
24
MEASURING PERFORMANCE
![Page 25: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/25.jpg)
25
MEASURING PERFORMANCE Guidelines
Use high precision timers.
In-process performance measurement is suitable only for generating average numbers.
Measure GPU Utilization. (GPU-Z, NVIDIA SMI, etc.)
Note GPU clock values during measurement.
![Page 26: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/26.jpg)
26
MEASURING PERFORMANCE
Use High Performance Multimedia Timer
for accuracy
![Page 27: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/27.jpg)
27
MEASURING PERFORMANCE
Start Measurement before capture loop
Run through capture\encode loop
Stop Measurement here
![Page 28: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/28.jpg)
28
MAXIMIZING QUALITY & PERFORMANCE
![Page 29: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/29.jpg)
29 NVIDIA CONFIDENTIAL. DO NOT DISTRIBUTE.
MAXIMIZING QUALITY & PERFORMANCE
Goals:
- Low latency
- Smooth playback of streamed video
- Minimum impact on target application\system performance
Challenge:
- Finding the right balance to get maximum CPU-GPU utilization without negative impact
Goals & Challenges
![Page 30: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/30.jpg)
30 NVIDIA CONFIDENTIAL. DO NOT DISTRIBUTE.
MAXIMIZING QUALITY & PERFORMANCE
Know the system’s limits.
Memory management : Ensure there is no time lost for paging
Resource Utilization : GPU-intensive applications need frame rate throttling while lightweight appllications need pipelining and multithreading of capture – encode/post-process tasks
Timing : Ensure capture rate matches display rate
Impact on target : Use parallelism
Guidelines
![Page 31: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/31.jpg)
31 NVIDIA CONFIDENTIAL. DO NOT DISTRIBUTE.
MAXIMIZING QUALITY & PERFORMANCE
Ensure no paging.
- Choose optimal rendering quality settings
- Choose optimal desktop or application window resolution
Loss due to paging (insufficient video memory)
Paging work Encoder Idle
Memory management
![Page 32: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/32.jpg)
32 NVIDIA CONFIDENTIAL. DO NOT DISTRIBUTE.
MAXIMIZING QUALITY & PERFORMANCE Resource Utilization: Multithreading
Capture and encode/post-process should run on different threads
Constraints:
Multiple threads must not concurrently access same DirectX context
NVIFR Capture thread should never stall
NVFBC Capture thread should never miss a display refresh
![Page 33: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/33.jpg)
33 NVIDIA CONFIDENTIAL. DO NOT DISTRIBUTE.
MAXIMIZING QUALITY & PERFORMANCE Resource Utilization : Pipelining
Goal: Minimize time spent by encode thread to wait for capture to complete and vice versa Benefit: Control on timing capture calls, less impact on application rendering performance Triple buffering is sufficient in most cases
Capture
Thread
[write to
buffer # i]
Encode\Post-
process
Thread
[read from
buffer#
(i-1)%N]
Buffer Queue
![Page 34: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/34.jpg)
34 NVIDIA CONFIDENTIAL. DO NOT DISTRIBUTE.
MAXIMIZING PERFORMANCE Resource Utilization: Multiple Contexts with NVIFR
Why use multiple contexts?
NVIFR capture happens in-band, shares the DirectX/OGL context used by the target application.
Any GPU work scheduled by NVIFR on this context reflects as drop in rendering frame rate
Solution:
Use shared buffers to hold captured output, for processing through a separate DirectX/OGL context running on a separate thread.
Game’s D3D Context
NvIFRCopyToSharedSurface
for DX9,
StretchRect to a shared
surface for DX9Ex
ResourceCopyRegion to a
shared surface for Dx1x
Encoder’s D3D Context
NvIFRCopyFromSharedSurface
for DX9,
StretchRect from a shared
surface for DX9Ex
ResourceCopyRegion from a
shared surface for Dx1x
Shared Surface
![Page 35: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/35.jpg)
35 NVIDIA CONFIDENTIAL. DO NOT DISTRIBUTE.
MAXIMIZING QUALITY & PERFORMANCE NUMA
NUMA: Non-Uniform Memory Addressing Create resources in the same part of the memory where the bus holding the GPU is located, reduces contention for bus bandwidth.
![Page 36: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/36.jpg)
36 NVIDIA CONFIDENTIAL. DO NOT DISTRIBUTE.
MAXIMIZING QUALITY & PERFORMANCE QoS
Network bandwidth control : NV_HW_ENC_PARAMS_RC_2PASS_FRAMESIZE_CAP Recovering from packet loss : Reference frame invalidation NV_HW_ENC_PIC_PARAMS::bInvalidateReferenceFrames NV_HW_ENC_PIC_PARAMS::ulInvalidFrameTimeStamps[] Avoiding insertion of IDR frames : Intra-Refresh NV_HW_ENC_PIC_PARAMS::bStartIntraRefresh NV_HW_ENC_PIC_PARAMS::dwIntraRefreshCnt Dynamic bitrate change : NV_HW_ENC_PIC_PARAMS::bDynamicBitRate NV_HW_ENC_PIC_PARAMS::dwNewAvgBitrate,dwNewPeakBitRate,dwNewVBVBufferSize,dwNewVBVInitialDelay
![Page 37: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/37.jpg)
37
COMPATIBILITY
![Page 38: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/38.jpg)
38
NVIDIA CAPTURE SDK – DRIVER COMPATIBILITY
GPU driver maintains backward compatibility with NVIDIA Capture SDK versions.
Compatibility of Upgraded Application (new SDK interfaces) with already deployed old GPU drivers needs special handling in application.
![Page 39: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/39.jpg)
39
MANAGING SDK UPGRADES
Compile for multiple interface versions, select based on highest supported version at run-time
App
IFBC_v1
NvFBCGetGRIDSDKVersion() *
NVFBC
session
Object
IFBC_v2
*Similar API is available for NVIFR
![Page 40: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/40.jpg)
40
QUESTIONS ?
![Page 41: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/41.jpg)
41
REFERENCES
Past GTC talks about related topics available here.
Resources
https://developer.nvidia.com/grid-app-game-streaming
http://www.nvidia.com/object/cloud-get-started.html
http://www.nvidia.com/object/enterprise-virtualization.html
![Page 42: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/42.jpg)
42
NVIDIA VIDEO SDK: HW VIDEO ENCODING
Video Compression for game recording, remote desktop streaming
NVENC HW Encoder
• H.264 support
• HEVC (H.265) support
• Optimized encode settings for low latency streaming
NVIDIA Capture SDK enables easy integration with NVENC API
• NVIFRToHWEnc
• NVFBCToDX9Vid, NVFBCCuda, NVFBCToHWEnc
![Page 43: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/43.jpg)
43
WELCOME TO THE NVIDIA VMWARE COMMUNITY
Web portal with discussions, solution updates and basic sales support
Interact with peers, learn tips / tricks and accelerate NVIDIA GRID vGPU deployment on VMware
Available to any customer who completes a brief questionnaire
Join us today www.nvidia.com/nvc
A community dedicated to NVIDIA and VMware solutions
![Page 44: NVIDIA Capture SDK · NVIDIA CAPTURE SDK: THE “CAPTURE” PART NVFBC NVIFR Brute force, capture all on screen Orthogonal to Graphics APIs Easy to integrate with NVENC API Easy onboarding,](https://reader035.vdocuments.mx/reader035/viewer/2022070107/6024b5a0ebd385284f439fc5/html5/thumbnails/44.jpg)
April 4-7, 2016 | Silicon Valley
THANK YOU
JOIN THE NVIDIA DEVELOPER PROGRAM AT developer.nvidia.com/join
For Queries related to NVIDIA Capture SDK, get in touch with us at: