Cameron Gutman
876375f7e9
Add additional codec negotiation improvements
...
- Fix picking incompatible YUV444 codec if software decoding was forced
- Prefer AV1 over HEVC when using HDR with software decoding
- Display software decoding warning when using an HDR codec without hardware decoding
2024-08-20 23:03:09 -05:00
Cameron Gutman
e662e93a53
Prioritize AV1 over HEVC for HDR with software decoding
...
dav1d is much faster than FFmpeg's HEVC decoder
2024-08-20 01:30:33 -05:00
Cameron Gutman
7c6954b5f6
Add HDR support with software decoding using libplacebo
...
Not supported on macOS yet.
2024-08-20 01:28:00 -05:00
Cameron Gutman
416003248b
Enable Vulkan renderer on Windows ARM64 builds
2024-08-20 00:43:03 -05:00
Cameron Gutman
6d6cd6fc35
Improve codec autoselection logic
...
- Deprioritize codecs that don't have hardware decoding rather than rejecting them outright
- Allow AV1 to be negotiated with autoselection if no other codec is available
- Take into account YUV444 preference when picking an optimal codec
- Arrange codec preference in ascending order of computational complexity when hardware decoding is unavailable
2024-08-19 23:41:42 -05:00
Cameron Gutman
17448c02b0
Move host settings to the other column to balance column length
2024-08-19 21:44:52 -05:00
Cameron Gutman
f3a75e8e76
Add experimental option to unlock bitrate to 500 Mbps
...
Fixes #1375
Fixes #1343
Closes #1377
2024-08-19 21:43:00 -05:00
Cameron Gutman
bed3a6ecd8
Print the friendly name of the unsupported AVPixelFormat in SDLRenderer
2024-08-19 20:58:45 -05:00
Cameron Gutman
e01c42153c
Allow software decoding if YUV444 is selected rather than falling back to YUV420
2024-08-19 20:58:16 -05:00
Cameron Gutman
9df65cb814
Allow selection of AV1 or HEVC for software decoding when HDR or YUV444 are enabled
...
These advanced features often/always are only supported with AV1 or HEVC.
2024-08-19 20:57:11 -05:00
Cameron Gutman
5765c254cd
Add software fallback for YUV444 using libswscale
2024-08-19 19:20:17 -05:00
Cameron Gutman
ea724a05a6
Fix compilation with older FFmpeg versions
2024-08-19 01:03:03 -05:00
Cameron Gutman
369f614b59
Rewrite format handling in DRM renderer
2024-08-19 00:57:07 -05:00
Cameron Gutman
8606b2c95e
Add support for VUYX and XV30LE for YUV 4:4:4
2024-08-18 23:45:26 -05:00
Cameron Gutman
fafddddfe0
Fix size and pitch calculation for dumb buffer uploads
2024-08-18 23:08:20 -05:00
Cameron Gutman
1bb16be183
Allow DrmRenderer to act as a non-DRM hwaccel backend
...
This case basically works like a degenerate case of a DRM hwaccel
without DRM master where we just provide EGL export functionality
except that we don't even need a DRM FD in this case.
There are patches floating around the FFmpeg list for this:
https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=12604
2024-08-17 17:04:30 -05:00
Cameron Gutman
8e2aa87c4f
Avoid using D3D11VA on very old Intel GPUs
...
Fixes #1348
Fixes #1381
2024-08-16 00:32:46 -05:00
ns6089
2aea070d93
Fix resetting bitrate when YUV444 is enabled
2024-08-15 22:56:46 -05:00
Cameron Gutman
19660174b7
Check that the new keypair is usable before persisting it
2024-08-15 22:50:49 -05:00
Cameron Gutman
665352ec95
Remove support for Intel's vendor-specific HEVC RExt profiles
...
These aren't supported upstream (and probably never will be) and recent
Intel drivers for Tiger Lake and later support the Microsoft standard
HEVC RExt profiles now.
2024-08-13 00:50:32 -05:00
Cameron Gutman
ab791cf4c8
Add support for the official DXVA HEVC Rext GUIDs defined in the Win11 24H2 SDK
2024-08-02 21:22:43 -05:00
Cameron Gutman
ef7dff32aa
Don't use Vulkan Video on Intel GPUs on Windows
...
Intel's Windows drivers are either totally broken or just don't play nicely with FFmpeg currently.
2024-08-02 21:16:52 -05:00
Cameron Gutman
9227ebfec9
Fix compiler warnings introduced by ComPtr refactoring
2024-08-02 21:15:18 -05:00
Cameron Gutman
f138827cdf
Add handling for AV1 High profile in D3D11VA/DXVA2
...
This doesn't seem to be supported by FFmpeg or any actual hardware yet
2024-07-30 23:21:49 -05:00
Cameron Gutman
e25919e0f9
Use for each loop to destroy objects in arrays
...
Also fixes incorrect release of m_VideoPixelShaders objects
2024-07-30 22:58:59 -05:00
Cameron Gutman
99749d4730
Use ComPtr for lifetime management in DXVA2
2024-07-30 22:41:29 -05:00
Cameron Gutman
9e811f54f1
Use ComPtr for lifetime management in D3D11VA
2024-07-30 22:29:38 -05:00
Cameron Gutman
0bb0d27d64
Implement YUV 4:4:4 decoding with D3D11VA on Intel GPUs
2024-07-30 21:12:11 -05:00
Cameron Gutman
6c6f808365
Tweak the YUV444 tooltip text
2024-07-26 01:24:27 -05:00
Cameron Gutman
dd9569913b
Remove hardcoded block for YUV444 on non-Vulkan renderers
2024-07-26 01:20:48 -05:00
Cameron Gutman
778eb07c5f
Reject YUV444 rendering using D3D11VA until it properly supported
2024-07-26 01:19:26 -05:00
Cameron Gutman
e2ffeae3f6
Add YUV444 support to VT Metal renderer
2024-07-26 00:39:13 -05:00
Cameron Gutman
eb6d16fdcf
Remove guards for older macOS and SDK versions
2024-07-26 00:38:54 -05:00
Cameron Gutman
e548697a36
Move VT decoding support detection into a single base class
2024-07-26 00:35:32 -05:00
Cameron Gutman
c707dab70a
Plumb YUV444 logic into additional renderers
2024-07-25 06:36:40 -05:00
ns6089
da0244c538
Support YUV 4:4:4 formats
2024-07-24 20:54:13 -05:00
Cameron Gutman
ff332d45f8
Fix false compiler warnings about missing return from non-void function
2024-07-24 20:45:52 -05:00
Cameron Gutman
9e92c07cb7
Use VK_NULL_HANDLE instead of nullptr to initialize VkSurfaceKHR field
...
Fixes #1367
2024-07-24 20:38:36 -05:00
Cameron Gutman
7f009a4b8e
Switch to 32-bit floating point audio
...
Excluding Steam Link due to CPU and API limitations
2024-07-17 20:37:50 -05:00
Cameron Gutman
8ac378f467
Enable libplacebo Vulkan renderer on x64 Windows builds
2024-07-16 19:12:37 -05:00
Cameron Gutman
e226091c19
Require macOS 11 or later
2024-07-13 17:26:27 -05:00
Cameron Gutman
45ccd1a811
Add plane selection workaround for Spacemit driver bug
...
Expose plane bug workaround logic through new envvars:
- DRM_MIN_PLANE_ZPOS
- DRM_ALLOW_PRIMARY_PLANE
2024-07-12 19:37:56 -05:00
Cameron Gutman
52583f5c71
Consolidate decoder checks to reduce code duplication
2024-07-12 19:02:20 -05:00
Cameron Gutman
952ebcd0d2
Prefer zero-copy formats for non-hwaccel hardware decoders
...
SpacemiT K1's BSP has a version of FFmpeg that contains both
v4l2m2m and their own *_stcodec decoders. Not only is their
V4L2 driver for their mvx decoder seemingly totally broken
(output buffers are all zeros), but it doesn't have any of
the DRM_PRIME support work that is maintained out of tree.
The result is we use a broken copyback decoder instead of
a (mostly) working zero-copy decoder because we didn't
include any logic to rank non-hwaccel decoders by pixfmt
like we have with device type for hwaccel decoders.
2024-07-12 18:45:46 -05:00
Cameron Gutman
d5a198b764
YUV420P10 is also compatible with PlVkRenderer
2024-07-06 17:24:46 -05:00
Cameron Gutman
b5b2731d5f
Add support for rendering software decoded frames with Vulkan
2024-07-06 16:49:35 -05:00
Cameron Gutman
d085722911
Don't attempt to use mismatched 8-bit formats with 10-bit codecs
...
In addition to silently truncating the samples, this also tickles
some nasty bugs in the VF2's out-of-tree OMX decoder.
2024-07-06 02:27:46 -05:00
Cameron Gutman
2e29ef8d74
Simplify codec selection and prioritization logic
2024-07-06 00:50:32 -05:00
Cameron Gutman
34fa7167b1
Force AV_CODEC_CAP_HARDWARE set for OMX decoders
...
There are at least 2 out-of-tree OMX decoder implementations
that both lack AV_CODEC_CAP_HARDWARE, so they trick us into
thinking that neither of them is hardware accelerated.
Fixes false decoder warnings when linked against the patched
FFmpeg builds shipping on VisionFive 2 and LicheePi 4A SBCs.
2024-07-05 23:04:10 -05:00
Cameron Gutman
27b173b76b
Add a GenericHwAccelRenderer for unknown hwaccels
...
This will get us limited hardware acceleration even for hwaccels
that we don't know about yet.
2024-07-05 22:49:52 -05:00