Cameron Gutman
8ff9d8123d
Switch VT renderer pacing logic to be enabled by the frame pacing checkbox
2020-12-29 20:26:56 -06:00
Cameron Gutman
3defccb6e2
Work around poor video scaling quality on Qualcomm GPUs
2020-12-21 21:00:55 -06:00
Cameron Gutman
9c758f1628
Create power-of-2 overlay surfaces for better performance
...
This lets us take the fast copy path in the DXVA2 renderer.
2020-12-20 17:31:02 -06:00
Cameron Gutman
5f4975ca5c
Fix DXVA2 overlay rendering quality issus
2020-12-20 17:30:06 -06:00
Cameron Gutman
e5bcc793e5
Implement overlay support in EGLRenderer
...
Fixes #405
2020-12-19 23:01:41 -06:00
Cameron Gutman
cd5b0e74e3
Draw background in MMAL renderer on X11
...
Fixes #412
2020-12-19 21:25:20 -06:00
Cameron Gutman
3162d2c17d
Fix aspect ratio of MMAL renderer output
2020-12-19 17:48:36 -06:00
Cameron Gutman
6a54fb649c
Fix synchronization issues between render and overlay update threads in DXVA2
2020-12-18 20:23:52 -06:00
Cameron Gutman
dcbf5affda
Fix use-after-free in VDPAU overlay rendering
2020-12-18 19:39:24 -06:00
Cameron Gutman
027c8dcd41
Add overlay support to VDPAU renderer
2020-12-17 18:35:08 -06:00
Cameron Gutman
94b46a2173
Use a vertex buffer for rendering the DXVA2 overlays
2020-12-16 18:16:35 -06:00
Cameron Gutman
1e7cb7f13e
Replace D3DX9 with SDL_ttf for overlay rendering
2020-12-13 23:43:31 -06:00
Cameron Gutman
d58837421f
Refactor SDL overlay drawing into OverlayManager for sharing with other renderers
2020-12-13 15:51:50 -06:00
Cameron Gutman
59a73817c8
Don't use AntiHooking.dll or use D3DX9 on ARM64
2020-12-12 13:59:47 -06:00
Cameron Gutman
38b59aa1a9
Fix DXVA2 renderer compilation with Qt 6.0
2020-11-21 11:12:40 -06:00
Cameron Gutman
2f3a1a5d79
Work around bug where GLES surface creation repeatedly fails on X11
2020-09-07 23:53:29 -07:00
Cameron Gutman
5a7a49d1d5
Display resolution and codec in OSD
2020-08-20 20:52:05 -07:00
Cameron Gutman
d09dd90a73
Fix hardcoded tick unit duration which is incorrect on Apple silicon
2020-08-12 18:07:10 -07:00
Cameron Gutman
8d2cbf806d
Improve message for broken Intel drivers to indicate that users should update their driver
2020-07-12 15:26:38 -07:00
Cameron Gutman
88ed72fdc1
Use regular VSync when enabled because adaptive VSync still tears
2020-06-20 14:44:21 -07:00
Cameron Gutman
586a93d7aa
Use the new EGL renderer for VAAPI by default
2020-06-13 20:21:54 -07:00
Cameron Gutman
f1c459fd6c
Fix leak of renderer when we fail to create a GL context
2020-06-08 20:39:12 -07:00
Cameron Gutman
728377cba3
Set AV_PKT_FLAG_KEY for key frames
2020-05-25 18:31:19 -07:00
Cameron Gutman
994312c212
Force GL to block after the current frame instead during the next frame
2020-05-16 16:25:13 -07:00
Cameron Gutman
5f25e0d4e2
Add limited support for frame pacing to EGLRenderer
2020-05-16 15:59:10 -07:00
Cameron Gutman
4bbe571f5f
Fix build without FFmpeg and with older EGL 1.5 headers
2020-05-16 13:25:10 -07:00
Cameron Gutman
c58d21375c
EGL 1.4 doesn't have EGLAttrib either
2020-05-16 12:20:52 -07:00
Cameron Gutman
ed128c558f
Add support for EGLRenderer on EGL 1.4
2020-05-16 12:13:00 -07:00
Cameron Gutman
42ced309d3
Restore the original GL attributes after EGLRenderer is destroyed
2020-05-15 20:22:11 -07:00
Cameron Gutman
1fcd306879
Fix EGLRenderer when SDL isn't built with X11 or Wayland backends
2020-05-15 20:01:22 -07:00
Cameron Gutman
26c9ad7f06
Use eglGetProcAddress() for all GLES 2.0 extensions
2020-05-15 19:39:41 -07:00
Cameron Gutman
4b7b01ce0a
Fix EGL build
2020-05-15 17:54:45 -07:00
Cameron Gutman
6632154906
Remove some unnecessary headers and definitions
2020-05-15 16:59:29 -07:00
Cameron Gutman
a1b74e1220
Fix vaExportSurfaceHandle() detection with i965 VAAPI driver
2020-05-14 20:56:24 -07:00
Cameron Gutman
01f6188824
Add VAAPI_FORCE_DIRECT and VAAPI_FORCE_INDIRECT env vars to control rendering technique
2020-05-13 19:45:30 -07:00
Cameron Gutman
283f31a734
Test if vaExportSurfaceHandle() works before claiming EGL export is supported
2020-05-13 19:39:45 -07:00
Cameron Gutman
b800ce9ebe
Allow use of VA drivers without VAEntrypointVideoProc
2020-05-13 19:31:25 -07:00
Cameron Gutman
eb9d54465c
Don't use EGLRenderer if not built with SDL 2.0.10+
2020-05-13 19:19:11 -07:00
Cameron Gutman
eb9e1f81d4
Enable the EGLRenderer to use the render thread
2020-05-13 19:09:20 -07:00
Cameron Gutman
51e9ab83ad
Send a null AVFrame to indicate end of stream to allow renderers to do render thread cleanup
2020-05-13 18:55:21 -07:00
Cameron Gutman
5ed7e03b2e
Merge pull request #365 from xdbob/wayland_for_upstream
...
Introduce a new FFMPEG frontend renderer: EGLRenderer
2020-05-13 18:39:18 -07:00
Cameron Gutman
b4548c1af2
Flush all window events after SDL_CreateRenderer()
2020-05-12 18:41:36 -07:00
Antoine Damhet
0a396f3112
Introduce a new FFMPEG frontend renderer: EGLRenderer
...
Right now this renderer works on X11 & Wayland with VAAPI as a backend.
Some rendering latency benchmarks on my `i7-10510U` (with
`intel-media-driver` 20.1.1 which cause a *huge* regression with the
SDL_Renderer):
| | X11 | Wayland |
| Before | 6.78ms | 22.50ms |
| EGLRenderer | 0.76ms | 00.77ms |
Signed-off-by: Antoine Damhet <antoine.damhet@lse.epita.fr>
2020-05-12 11:11:35 +02:00
Cameron Gutman
514a8575a2
Use the viewport size for computing the overlay position
2020-05-07 18:56:53 -07:00
Cameron Gutman
f30c11ddf4
Properly fix SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH on macOS VTRenderer
2020-05-06 22:20:21 -07:00
Cameron Gutman
dfa63297fc
Fix incorrectly scaled output from the SDL renderer on macOS
2020-05-04 17:48:32 -07:00
Cameron Gutman
1852f74e8b
Add missing return statement
2020-04-26 20:42:01 -07:00
Cameron Gutman
55e3e16860
Try radeonsi if other VAAPI drivers fail
2020-04-26 20:18:46 -07:00
Cameron Gutman
7cf2a55b43
Allow radeonsi to direct render on XWayland
2020-04-26 20:13:00 -07:00
Cameron Gutman
c41cbbd2da
Allow the radeonsi VAAPI driver on XWayland
2020-04-26 20:06:53 -07:00
Cameron Gutman
aaa112c3f3
Don't use VAAPI drivers that lack VPP support
...
intel-media-va-driver (free) is one example of such a driver which
is apparently missing the shaders to perform colorspace conversion.
2020-04-26 15:38:05 -07:00
Cameron Gutman
8cf7f3ac08
Fix absolute mouse positioning on SDL renderer
2020-04-24 19:37:15 -07:00
Cameron Gutman
e56329d05a
Don't render with vaPutSurface() on XWayland
2020-03-27 19:11:03 -07:00
Cameron Gutman
2452e80e57
Add VDPAU driver path fallbacks for AppImage
2020-03-26 19:06:24 -07:00
Cameron Gutman
b9019831a9
Fix failure to try the default VAAPI driver with the modified LIBVA_DRIVERS_PATH
2020-03-26 18:25:52 -07:00
Cameron Gutman
b3b49b440e
Add VAAPI driver path fallbacks for AppImage
2020-03-24 00:09:03 -07:00
Cameron Gutman
ba2488b6e2
Try the iHD VA driver as a fallback to fix Comet Lake and later
2020-03-18 18:39:43 -07:00
Cameron Gutman
4e7e0d67e5
Add a workaround for Mesa Iris returning the wrong VA driver
2020-03-17 17:34:35 -07:00
Cameron Gutman
81221336f4
Rec 601 seems to be a bit more accurate on macOS
2020-03-10 23:21:00 -07:00
Cameron Gutman
ecfc758ce4
Attach colorspace data to CVPixelBuffer. Fixes #323
2020-03-10 22:21:09 -07:00
Cameron Gutman
7ee323f0d5
Fix deprecation warning on macOS
2020-02-29 15:54:10 -08:00
Cameron Gutman
979de190dc
Cap resolution options at 1080p on Steam Link and Raspberry Pi due to hardware limitations
2020-02-23 00:43:43 -08:00
Cameron Gutman
46bcbda972
MMAL is always full-screen
2020-02-23 00:25:01 -08:00
Cameron Gutman
43bdc353fb
Fix 720p streaming on MMAL
2020-02-23 00:22:44 -08:00
Cameron Gutman
57a1c5eb76
Disable the window mode options for always full-screen renderers
2020-02-09 11:35:05 -08:00
Cameron Gutman
77386f8dfc
Reduce buffering for MMAL to avoid requiring 128 MB VRAM split
2020-02-08 17:56:30 -08:00
Cameron Gutman
529fdf0341
Add decoder options dictionary to prepareDecoderContext()
2020-02-08 17:47:26 -08:00
Cameron Gutman
4794f44a6d
Charge decoders for time spent holding on to frames
2020-01-26 20:15:11 -08:00
Cameron Gutman
f0119b1231
Add support for the out-of-tree Jetson FFmpeg NVMPI decoders
...
https://github.com/jocover/jetson-ffmpeg
2020-01-26 19:16:03 -08:00
Cameron Gutman
4c579aa826
Provide another frame if avcodec_receive_frame() returns EAGAIN
2020-01-26 15:36:22 -08:00
Cameron Gutman
b9463b3c0e
Allow NV12 and NV21 to be selected for non-hwaccel decoders using the SDL renderer
2020-01-26 15:02:29 -08:00
Cameron Gutman
cede6ce8a9
Add H264_DECODER_HINT and HEVC_DECODER_HINT envvars to specify a decoder manually
2020-01-26 14:40:48 -08:00
Cameron Gutman
956e6e3638
Avoid slicing for hardware decoders that use SDL as the renderer
2020-01-26 14:13:42 -08:00
Cameron Gutman
2e0bd2ec28
Invoke avcodec_receive_frame() during decoder testing
2020-01-15 18:09:59 -08:00
Cameron Gutman
a0151fbc04
Fix memory leak if 10-bit color is not supported
2020-01-15 17:56:11 -08:00
Cameron Gutman
c6638a7154
Add support for 10-bit output in full-screen with DXVA2
2020-01-14 17:12:55 -08:00
Cameron Gutman
5aed8f928a
Add V4L2M2M support using SDL renderer
...
Note: This requires FFmpeg master to work, since it depends on:
https://github.com/FFmpeg/FFmpeg/commit/d61cf1b1ebc2477749d7d7825a072400ed24af9
2020-01-10 20:52:16 -08:00
Cameron Gutman
e1603f0808
Explicitly use Rec 601 for VDPAU
2019-12-16 18:02:28 -08:00
Cameron Gutman
d4c2350d63
Fix DXVA2 rendering with the wrong colorspace on AMD GPUs
2019-12-15 13:29:19 -08:00
Cameron Gutman
5e5470ae12
Specify video transfer matrix for SLVideo
2019-12-15 11:27:47 -08:00
Cameron Gutman
6230a99360
Fix colorspace conversion with SDL as frontend renderer
2019-12-14 17:17:29 -08:00
Cameron Gutman
801adb6af7
Add colorspace support to VAAPI renderer
2019-12-14 16:58:04 -08:00
Cameron Gutman
8b9b96f422
Only enable slicing when CPU decoding
2019-12-14 15:34:48 -08:00
Cameron Gutman
160684f23e
Allow decoders to choose a desired colorspace
2019-12-14 15:25:56 -08:00
Cameron Gutman
af6b8c9b88
Update common-c with colorspace configuration support
2019-12-14 14:40:02 -08:00
Cameron Gutman
de7b973239
Plumb presentation time from server into AVFrame.pts field
2019-11-11 18:03:47 -08:00
Cameron Gutman
c20daa8867
Add compatibility checks for HEVC Main10 in VT backend
2019-11-05 18:36:43 -08:00
Cameron Gutman
5e57a7d5c0
Prevent SDL renderer from trying to render 10-bit output
2019-11-05 17:29:21 -08:00
Cameron Gutman
7c8d27700e
Add 10-bit output support to VDPAU renderer
2019-11-05 17:09:44 -08:00
Cameron Gutman
f8621be5ee
Add an HEVC Main10 test frame
2019-11-05 17:08:25 -08:00
Cameron Gutman
ca26fa2dd0
Add basic HEVC Main10 support in DXVA2 renderer
2019-11-04 22:57:12 -08:00
Cameron Gutman
dbf98ce3a6
Require keyframes even for software H.264 decoding
2019-08-07 22:38:31 -07:00
Cameron Gutman
5db5a088ea
Fix NVDEC artifacts if the renderer is delayed for a bit
2019-08-01 20:25:58 -07:00
Cameron Gutman
bcbd1a5b4b
Fix subsystem print in VAAPI
2019-07-07 15:41:26 -07:00
Cameron Gutman
6468efd7e4
Add VAAPI DRM support
2019-07-07 15:32:38 -07:00
Cameron Gutman
1c225ed04d
Use CUDA acceleration if other hwaccels are unavailable
2019-06-26 21:54:29 -07:00
Cameron Gutman
612b738968
Use the preferred sw_format when reading frames back
2019-06-26 21:25:41 -07:00
Cameron Gutman
87356ef594
Add CUDA acceleration support
2019-06-26 21:02:33 -07:00
Cameron Gutman
4f74fd5354
Fix uninitialized variables and a race condition with CVDisplayLinkStart()
2019-05-21 09:09:16 -07:00
Cameron Gutman
97fb30cdf1
Fix a few bugs in CVDisplayLink integration in VTRenderer
2019-05-19 09:52:59 -07:00
Cameron Gutman
c2b12868bb
Move DisplayLinkVsyncSource back into VTRenderer to reduce latency
2019-05-11 18:33:12 -07:00
Cameron Gutman
53138d7c16
Name threads for easier debugging
2019-05-03 21:18:58 -07:00
Cameron Gutman
18d1d35104
Use QByteArray::reserve() rather than reallocating each time we must resize
2019-05-02 22:54:18 -07:00
Cameron Gutman
99d9de35de
Add NV21 pixel format support to SDL renderer
2019-05-02 22:51:28 -07:00
Cameron Gutman
e6a48481a5
Restore the bulk submission optimization for Steam Link
2019-05-01 22:31:52 -07:00
Cameron Gutman
477fa8fedf
Add logging callbacks for SLAudio and SLVideo
2019-04-28 11:01:54 -07:00
Cameron Gutman
4e936193c7
Request a test frame for MMAL decoder
2019-04-24 21:31:52 -07:00
Cameron Gutman
8878c4a136
Use VAAPI decoder for AMD on Wayland
2019-04-21 15:33:21 -07:00
Cameron Gutman
00926bac81
Fix build warning in SDL renderer
2019-04-21 11:09:11 -07:00
Cameron Gutman
dba479774b
Add DRM renderer for Rockchip devices
2019-04-21 05:22:37 +00:00
Cameron Gutman
5c8a1e632b
Add support for rendering NV12 hwframes with SDL
2019-04-19 22:16:06 -07:00
Cameron Gutman
d65e29111f
Fix some codec selection bugs
2019-04-19 20:57:21 -07:00
Cameron Gutman
1dfca525cf
Refactor renderer initialization to reduce duplication and inconsistency
2019-04-18 20:02:14 -07:00
Cameron Gutman
e51ad1a68a
Fix use-after-free due to stale m_FrontendRenderer pointer. Fixes #214
2019-04-18 19:26:13 -07:00
Cameron Gutman
9c76700f74
Add MMAL renderer for Raspberry Pi
2019-04-16 01:20:21 -07:00
Cameron Gutman
773b1af6f1
Minor refactoring in preparation for non-hwaccel decoder support
2019-04-15 21:56:01 -07:00
Cameron Gutman
b8b633a6cc
Use SDL to render on Wayland for VAAPI
2019-04-12 22:54:21 -07:00
Cameron Gutman
ada2270bd1
Reduce code duplication in renderers
2019-04-12 22:12:53 -07:00
Cameron Gutman
25e5175c54
Refactor parameter passing to decoders and split backend/decode-only and frontend renderers
2019-04-11 22:27:20 -07:00
Cameron Gutman
00a1948b73
Treat AV_CODEC_CAP_HARDWARE codecs as hardware accelerated too
2019-04-09 21:50:22 -07:00
Cameron Gutman
859a5a5e0c
Allow a renderer to opt-out of the render thread and use that for SDL on OGL
2019-04-09 21:46:14 -07:00
Cameron Gutman
6783cf57da
TTF_OpenFontRW retains the SDL_RWops on success, so we must keep the font data around to back it
2019-04-09 21:26:47 -07:00
Cameron Gutman
54383b84ec
Fix random deadlocks on window resize with the software decoder due to processing window messages off the render thread
2019-04-03 20:44:50 -07:00
Cameron Gutman
2d7dcb495c
Remove CAPABILITY_DIRECT_SUBMIT for the video decoder because it can block for significant time periods when D3D9 is reconfiguring display settings (and holding the D3D global lock)
...
This can cause false reports of packet loss.
2019-03-29 23:38:23 -07:00
Cameron Gutman
cabbba2448
Move status update overlay to bottom left for SDL
2019-03-23 21:14:21 -07:00
Cameron Gutman
c48ed7bb0d
Fix undefined variable usage after 2703efedef
2019-03-23 20:25:19 -07:00
Cameron Gutman
c313f1a20b
Embed our data files inside the binary with QRC
2019-03-23 10:45:44 -07:00
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