Cameron Gutman
|
2bf3f1b94b
|
Refactor Steam Link support files
|
2019-03-22 22:51:08 -07:00 |
|
Cameron Gutman
|
e95ff989b1
|
Allow DXVA2 renderer blacklists to be bypassed
|
2019-03-21 20:44:30 -07:00 |
|
Cameron Gutman
|
018e8999e2
|
Add connection status overlay for the VT renderer
|
2019-03-18 20:56:53 -07:00 |
|
Cameron Gutman
|
202a643e5a
|
Fix size of the status update overlay on DXVA2
|
2019-03-17 15:12:25 -07:00 |
|
Cameron Gutman
|
c75b9c9221
|
Add connection status overlay for DXVA2 and SDL
|
2019-03-17 15:08:21 -07:00 |
|
Cameron Gutman
|
052194714a
|
Adjust thread priorities based on recent refactoring
|
2019-03-17 00:45:31 -07:00 |
|
Cameron Gutman
|
bf5d43d0cf
|
Use SDL_HINT_OVERRIDE for critical hints
|
2019-03-17 00:18:15 -07:00 |
|
Cameron Gutman
|
f2ac570949
|
Rebuild SDL2 (5dc13016cf) with USE_D3D9EX
|
2019-03-16 23:52:40 -07:00 |
|
Cameron Gutman
|
e5a8b49c93
|
Limit the number of queued frames in Pacer to prevent excessive memory consumption if the renderer gets blocked for a while
|
2019-02-18 12:13:45 -08:00 |
|
Cameron Gutman
|
80a40ac5f9
|
Increase frame drop threshold
|
2019-02-16 23:13:35 -08:00 |
|
Cameron Gutman
|
a1956350b1
|
Rename pacing drop to jitter drop to be less confusing for users
|
2019-02-16 23:04:25 -08:00 |
|
Cameron Gutman
|
ab4127f940
|
Use presence of a frame after rendering rather than render time for frame dropping
|
2019-02-15 22:44:52 -08:00 |
|
Cameron Gutman
|
f03d12b677
|
Use a separate render thread even with a V-Sync source
|
2019-02-15 22:09:50 -08:00 |
|
Cameron Gutman
|
81c6202582
|
Rename renderFrameAtVsync() to renderFrame() in preparation for further refactoring
|
2019-02-15 21:07:02 -08:00 |
|
Cameron Gutman
|
6cab2bec61
|
Don't trust VT to tell us whether decode is supported
|
2019-02-15 19:10:21 -08:00 |
|
Cameron Gutman
|
38b8a59fe5
|
Adjust overlay color for more contrast
|
2019-02-15 18:53:40 -08:00 |
|
Cameron Gutman
|
b1799009b3
|
Use the Path class to lookup ModeSeven.ttf
|
2019-02-15 18:13:36 -08:00 |
|
Cameron Gutman
|
aba806bc32
|
Implement debug overlay for VideoToolbox renderer
|
2019-02-13 20:55:52 -08:00 |
|
Cameron Gutman
|
b1fb3f2391
|
Set FFmpeg log level at debug until first frame is rendered
|
2019-02-13 18:34:59 -08:00 |
|
Cameron Gutman
|
f83853c2fb
|
OverlayManager now manages font size for the overlays
|
2019-02-12 22:36:56 -08:00 |
|
Cameron Gutman
|
46bd8ad83d
|
Add debug overlay for SDL renderer
|
2019-02-12 21:55:15 -08:00 |
|
Cameron Gutman
|
5788fa7204
|
Make OverlayManager own the overlay color setting
|
2019-02-12 20:39:10 -08:00 |
|
Cameron Gutman
|
d077c6450f
|
Split SdlRenderer from renderer.h
|
2019-02-12 19:58:36 -08:00 |
|
Cameron Gutman
|
6ed512e762
|
Provide a renderer callback when the overlay data changes
|
2019-02-12 18:43:38 -08:00 |
|
Cameron Gutman
|
947970e07b
|
Shortcut decoder initialization when only using it for capability testing
|
2019-02-12 18:42:53 -08:00 |
|
Cameron Gutman
|
1fd099db70
|
Log when StretchRect() fails
|
2019-02-09 18:47:57 -08:00 |
|
Cameron Gutman
|
8bb6d4d0d9
|
Fix VDPAU scaling on AMD cards. Fixes #171
|
2019-01-29 20:52:41 -08:00 |
|
Cameron Gutman
|
21aad643f3
|
Use 32 pixel alignment for HEVC to fix Intel green line issue
|
2019-01-28 21:26:27 -08:00 |
|
Cameron Gutman
|
8687448966
|
Use StretchRect() on Intel GPUs or if VideoProcessBlt() fails
|
2019-01-28 19:18:43 -08:00 |
|
Cameron Gutman
|
4471a858db
|
Fix miscounted pacer dropped frames in non-pacing mode
|
2019-01-22 21:21:29 -08:00 |
|
Cameron Gutman
|
22e712af5a
|
Add v-sync text to stats overlay
|
2019-01-22 20:55:58 -08:00 |
|
Cameron Gutman
|
9799b82d53
|
Improve long render time logic
|
2019-01-22 20:55:35 -08:00 |
|
Cameron Gutman
|
78915e0b99
|
Use a separate render thread when not using frame pacing
|
2019-01-22 20:31:31 -08:00 |
|
Cameron Gutman
|
a4edd9d202
|
Submit frame directly from the decoder thread to avoid interference from the main thread
|
2019-01-21 20:27:37 -08:00 |
|
Cameron Gutman
|
7747624c80
|
Revert "Wake up main thread immediately after new frame is pushed"
This reverts commit aab7191a44 .
|
2019-01-21 20:10:13 -08:00 |
|
Cameron Gutman
|
aab7191a44
|
Wake up main thread immediately after new frame is pushed
|
2019-01-21 18:57:14 -08:00 |
|
Cameron Gutman
|
1f972b1828
|
Require several consecutive long render times to drop a frame
|
2019-01-21 17:58:42 -08:00 |
|
Cameron Gutman
|
58b77cf589
|
Fix inaccurate pacer drop and network drop percentages and add total FPS stat
|
2019-01-21 17:43:15 -08:00 |
|
Cameron Gutman
|
c064f87889
|
Drop a frame if the rendering time exceeds the v-sync period
|
2019-01-20 19:59:29 -08:00 |
|
Cameron Gutman
|
d6b4c8e7da
|
Avoid blocking decoding operations during Present calls
|
2019-01-20 14:08:53 -08:00 |
|
Cameron Gutman
|
b19c4bfc5d
|
Add performance overlay for DXVA2 renderer
|
2019-01-19 23:05:56 -08:00 |
|
Cameron Gutman
|
8612e6726d
|
Remove accidentally enabled debug prints
|
2018-12-25 14:05:55 -08:00 |
|
Cameron Gutman
|
cfabaf334e
|
Add frame pacing toggle
|
2018-12-25 12:57:00 -08:00 |
|
Cameron Gutman
|
c054536fab
|
Count Pacer delay in frame stats
|
2018-12-25 12:09:45 -08:00 |
|
Cameron Gutman
|
d5a1189053
|
Avoid VAAPI on AMD drivers due to a bad memory leak
|
2018-10-14 20:37:13 -07:00 |
|
Cameron Gutman
|
4f84843b00
|
Fixup H.264 SPS for VideoToolbox compatibility. Fixes #98
|
2018-10-12 17:59:53 -07:00 |
|
Cameron Gutman
|
9075f309ad
|
Disable annoying stream stats prints
|
2018-10-02 20:12:53 -07:00 |
|
Cameron Gutman
|
a0249b4337
|
Add video stats for performance overlay
|
2018-09-25 00:47:59 -07:00 |
|
Cameron Gutman
|
b1de66d878
|
Directly use the AVBufferSampleDisplayLayer as the rendering view's layer to increase efficiency
|
2018-09-22 18:34:15 -07:00 |
|
Cameron Gutman
|
af9fb0e091
|
Fix GetVideoProcessorCaps() failure handling
|
2018-09-21 17:29:53 -07:00 |
|
Cameron Gutman
|
f96911e1ba
|
Use DXVA2_VideoProcProgressiveDevice since we don't need any fancy image processing or deinterlacing
|
2018-09-21 17:07:28 -07:00 |
|
Cameron Gutman
|
8a0089eb81
|
Print driver information in VDPAU and VAAPI renderers
|
2018-09-20 21:23:16 -07:00 |
|
Cameron Gutman
|
8002c65693
|
Block Intel drivers earlier than 4836 from using HEVC due to artifacting issues. Fixes #32
|
2018-09-14 20:20:47 -07:00 |
|
Cameron Gutman
|
7ca2ca8045
|
Print the GPU driver version on Windows
|
2018-09-13 14:54:30 -07:00 |
|
Cameron Gutman
|
12496e4432
|
Refactor audio rendering into a separate class
|
2018-09-13 06:23:06 -07:00 |
|
Cameron Gutman
|
9dcd856099
|
Blacklist Kepler GPUs for HEVC due to hybrid decode support present in some drivers
|
2018-09-09 10:48:01 -07:00 |
|
Cameron Gutman
|
93c683be3a
|
Allow renderers that force V-sync on to run without it when streaming higher than the display refresh rate
|
2018-09-08 15:27:21 -07:00 |
|
Cameron Gutman
|
c9a7c15f98
|
Improve unsupported FPS options and performance
|
2018-09-08 15:09:46 -07:00 |
|
Cameron Gutman
|
475a39cb73
|
Recreate the decoder when moving to a new display to allow Pacer to get the new refresh rate
|
2018-09-06 19:42:53 -07:00 |
|
Cameron Gutman
|
4dba74e2f9
|
Fix handling of undefined and non-matching refresh rate
|
2018-09-06 19:16:59 -07:00 |
|
Cameron Gutman
|
9aa487418f
|
Force V-Sync enabled for DXVA2 windowed with DWM composition enabled
|
2018-09-03 23:34:15 -07:00 |
|
Cameron Gutman
|
dae21f2638
|
Detect native panel resolution on Retina displays. Fixes #59
|
2018-09-04 00:21:37 -04:00 |
|
Cameron Gutman
|
af6e99cbac
|
Select the highest full-screen refresh rate that our stream FPS evenly divides
|
2018-09-03 22:54:41 -04:00 |
|
Cameron Gutman
|
2c068a99a3
|
Allow FFmpeg renderers to enforce V-sync being enabled or disabled
|
2018-09-03 20:57:09 -04:00 |
|
Cameron Gutman
|
fa93364ddd
|
Ensure the CVDisplayLink is synchronized to the display that our window is on
|
2018-09-03 20:19:24 -04:00 |
|
Cameron Gutman
|
9b1eef3f63
|
Pass AV_HWACCEL_FLAG_IGNORE_LEVEL for VDPAU per FFmpeg documentation recommendation
|
2018-09-03 17:06:21 -04:00 |
|
Cameron Gutman
|
ed6c07fd4b
|
Display all frames even if they are corrupt or missing references (as will happen during reference frame invalidation)
|
2018-09-02 18:45:29 -04:00 |
|
Cameron Gutman
|
b7cbec0b1c
|
Pass RFI flags to decoder
|
2018-08-25 13:36:54 -07:00 |
|
Cameron Gutman
|
9be9934b8c
|
Add reference frame invalidation for the software decoder
|
2018-08-25 12:38:04 -07:00 |
|
Cameron Gutman
|
408f93732b
|
Fix 'invalid VADisplay' errors on renderer destruction
|
2018-08-25 11:21:52 -07:00 |
|
Cameron Gutman
|
7e560aa09e
|
Use MMCSS when streaming with the DXVA renderer
|
2018-08-21 00:53:41 -07:00 |
|
Cameron Gutman
|
7d9478b774
|
Fix FlipEx on Windows 7
|
2018-08-21 00:49:29 -07:00 |
|
Cameron Gutman
|
0fa0ab43c9
|
Fix broken Alt+Tab behavior on Windows
|
2018-08-20 22:48:48 -07:00 |
|
Cameron Gutman
|
9e9fe2a2cf
|
Work around DWM bug on Windows 7 causing horrible performance
|
2018-08-20 21:17:25 -07:00 |
|
Cameron Gutman
|
5bf88cfe96
|
Fix Mac build
|
2018-08-20 18:57:11 -07:00 |
|
Cameron Gutman
|
f7d3c10c9d
|
Plumb the ability to disable V-sync through the video renderers
|
2018-08-20 18:19:42 -07:00 |
|
Cameron Gutman
|
6b395c816f
|
Allow Pacer to wait for frames up until a few ms before v-sync for better smoothness and lower latency
|
2018-08-20 17:53:35 -07:00 |
|
Cameron Gutman
|
d6e7173af0
|
Add a VsyncSource for renderers that already block for V-sync
|
2018-08-20 17:24:47 -07:00 |
|
Cameron Gutman
|
1a60484abc
|
Use hardware vertex processing if available
|
2018-08-19 22:45:17 -07:00 |
|
Cameron Gutman
|
62f765b2b4
|
Switch DXVA2 to IDirect3D9Ex APIs for more detailed control of rendering
|
2018-08-19 21:53:39 -07:00 |
|
Cameron Gutman
|
845e84adb7
|
Avoid the test frame for DXVA2 and VT APIs to address flickering in full-screen on Win7
|
2018-08-19 00:59:04 -07:00 |
|
Cameron Gutman
|
c1b1719914
|
Recreate the VT decoder if the display layer fails. Minor fix to Path class.
|
2018-08-16 23:09:40 -07:00 |
|
Cameron Gutman
|
9fbdd794b9
|
Improve support for full-screen exclusive mode
|
2018-08-16 22:25:14 -07:00 |
|
Cameron Gutman
|
345e800abd
|
Always submit frames to Pacer if it's using a frame queue
|
2018-08-16 17:59:33 -07:00 |
|
Cameron Gutman
|
404eaa44e4
|
Implement frame pacing for Windows using D3DKMTWaitForVerticalBlankEvent
|
2018-08-16 01:29:53 -07:00 |
|
Cameron Gutman
|
8e257ab241
|
Remove unused function
|
2018-08-16 00:04:28 -07:00 |
|
Cameron Gutman
|
fabbad5370
|
Fix build error on Windows and warnings
|
2018-08-16 00:02:43 -07:00 |
|
Cameron Gutman
|
7d61acb2a8
|
Use Pacer to drive all rendering
|
2018-08-15 23:57:03 -07:00 |
|
Cameron Gutman
|
f6a451d6e7
|
Add PoC VsyncSource for Windows using DwmFlush(). Soon to be replaced with D3DKMTWaitForVerticalBlankEvent().
|
2018-08-15 23:20:56 -07:00 |
|
Cameron Gutman
|
e68a15c825
|
Move the Vsync logic from VTRenderer into a VsyncSource
|
2018-08-15 22:02:15 -07:00 |
|
Cameron Gutman
|
f929cffce7
|
Let Pacer know what the display Hz and stream FPS are so it can make better drop decisions
|
2018-08-15 21:10:35 -07:00 |
|
Cameron Gutman
|
f171588616
|
Pass the maximum frame rate into FFmpeg renderers
|
2018-08-15 20:41:19 -07:00 |
|
Cameron Gutman
|
f714a5d0cb
|
Refactor frame pacing from VT renderer into a separate class for sharing with other renderers
|
2018-08-14 19:13:17 -07:00 |
|
Cameron Gutman
|
611d9ac1ba
|
Pass the chroma type to the VDPAU video mixer
|
2018-08-13 20:02:55 -07:00 |
|
Cameron Gutman
|
d3c2f50b20
|
Remove custom VAAPI logging functions
|
2018-08-11 20:32:28 -07:00 |
|
Cameron Gutman
|
f1ee1eeb63
|
Avoid using window systems that SDL wasn't compiled to support
|
2018-08-11 20:19:20 -07:00 |
|
Cameron Gutman
|
bb18519e44
|
WIP Wayland rendering code for VAAPI
|
2018-08-11 19:43:36 -07:00 |
|
Cameron Gutman
|
c61182bcb2
|
Allow FFmpeg decoder to self-heal in cases of UAC dialogs and other unexpected loss of hardware state
|
2018-08-09 18:39:38 -07:00 |
|
Cameron Gutman
|
b6763bb9f0
|
Fix VDPAU rendering at 4K
|
2018-08-05 16:33:08 -07:00 |
|
Cameron Gutman
|
6d9c0c96c9
|
Fix streaming with non-aligned resolutions with DXVA2 on my Quadro P400
|
2018-08-05 15:25:40 -07:00 |
|
Cameron Gutman
|
b04bc5117d
|
Fix scaling logic in the Linux renderers using the new helper function
|
2018-08-04 22:31:14 -07:00 |
|
Cameron Gutman
|
5cbb38091b
|
Create new utility function for scaling with aspect ratio and use it for DXVA2
|
2018-08-04 22:22:15 -07:00 |
|
Cameron Gutman
|
b076744f00
|
Support HEVC software decoding and forcing HEVC without GPU support
|
2018-08-04 16:45:31 -07:00 |
|
Cameron Gutman
|
3117e360f4
|
Retry surface creation to work around transient VDP_STATUS_RESOURCES errors
|
2018-08-03 18:26:55 -07:00 |
|
Cameron Gutman
|
48a770edec
|
Enable HEVC support on NVIDIA GPUs with VDPAU
|
2018-08-03 02:49:43 -07:00 |
|
Cameron Gutman
|
fca402138f
|
Add VDPAU renderer
|
2018-08-03 02:11:44 -07:00 |
|
Cameron Gutman
|
2853e498b0
|
Minor debugging improvements
|
2018-08-02 23:24:44 -07:00 |
|
Cameron Gutman
|
509dba2264
|
Enable ffmpeg logging during codec initialization
|
2018-08-02 22:48:40 -07:00 |
|
Cameron Gutman
|
0c18bcdd5e
|
Fix DXVA 2 regression on Windows
|
2018-08-02 22:28:59 -07:00 |
|
Cameron Gutman
|
624578f286
|
Fix decoder reinitialization after test frame
|
2018-08-02 21:57:16 -07:00 |
|
Cameron Gutman
|
c18e99c9ec
|
Validate that the codec is functional before using it. Fixes streaming failure with VAAPI if hardware lacks codec support
|
2018-08-02 21:37:46 -07:00 |
|
Cameron Gutman
|
e250e08242
|
Fix AMD vendor ID
|
2018-07-31 18:22:10 -07:00 |
|
Cameron Gutman
|
141ee11e2f
|
Avoid HEVC on GPUs using hybrid decoding. Fixes #14
|
2018-07-31 18:09:09 -07:00 |
|
Cameron Gutman
|
df26f731eb
|
Improve debugging messages
|
2018-07-28 16:06:26 -07:00 |
|
Cameron Gutman
|
9e6aadffa1
|
Populate the DXVA2_VideoDesc with format details from the AVFrame
|
2018-07-26 21:04:05 -07:00 |
|
Cameron Gutman
|
0bde932550
|
Prevent HEVC streaming with the software decoder for performance reasons
|
2018-07-26 19:26:22 -07:00 |
|
Cameron Gutman
|
cf3cbd627d
|
Use full-screen windowed mode to avoid having to enable V-Sync on DXVA2
|
2018-07-22 15:42:17 -07:00 |
|
Cameron Gutman
|
ad57a55d12
|
Add (untested) Steam Link video decoding/rendering
|
2018-07-21 20:29:05 -07:00 |
|
Cameron Gutman
|
eb536c2273
|
Overhaul platform and decoder/renderer detection
|
2018-07-21 17:00:09 -07:00 |
|
R. Aidan Campbell
|
c816a6198c
|
fix macos build: for macos, Q_OS_UNIX is also defined
|
2018-07-21 14:31:37 -07:00 |
|
Cameron Gutman
|
399154f5f5
|
Implement VAAPI rendering for X11
|
2018-07-21 00:16:03 -07:00 |
|
Cameron Gutman
|
20288210be
|
Fix VT video centering after transition from windowed to full screen
|
2018-07-20 19:37:54 -07:00 |
|
Cameron Gutman
|
10b5245919
|
Reset the decoder when D3D state is lost
|
2018-07-20 15:31:57 -07:00 |
|
Cameron Gutman
|
faaf9dfa07
|
Fix crashes when restarting streaming with DXVA2 renderer due to leaked surface references
|
2018-07-20 13:10:54 -07:00 |
|
Cameron Gutman
|
e85ca2a6c9
|
Reduce VideoToolbox renderer video latency
|
2018-07-18 22:25:46 -07:00 |
|
Cameron Gutman
|
e32aace443
|
Draw a black background behind the rendering
|
2018-07-18 22:07:43 -07:00 |
|
Cameron Gutman
|
bd8e4a4bce
|
Fix DXVA video centering
|
2018-07-18 21:48:46 -07:00 |
|
Cameron Gutman
|
06501bd4b7
|
Fix video scaling on DXVA2
|
2018-07-18 19:10:14 -07:00 |
|
Cameron Gutman
|
a4ad58d9ec
|
Fix some Clang static analysis warnings
|
2018-07-18 18:39:33 -07:00 |
|
Cameron Gutman
|
1b85dcc829
|
Improve frame pacing on VideoToolbox renderer
|
2018-07-18 00:11:17 -07:00 |
|
Cameron Gutman
|
c97e298b80
|
Use the queueFrame() helper
|
2018-07-17 20:05:59 -07:00 |
|
Cameron Gutman
|
a89cadc520
|
Separate FFmpeg decoder from the Session class (#4)
|
2018-07-17 20:00:16 -07:00 |
|