Cameron Gutman
dd9569913b
Remove hardcoded block for YUV444 on non-Vulkan renderers
2024-07-26 01:20:48 -05:00
ns6089
da0244c538
Support YUV 4:4:4 formats
2024-07-24 20:54:13 -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
b5b2731d5f
Add support for rendering software decoded frames with Vulkan
2024-07-06 16:49:35 -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
Cameron Gutman
e76780e105
Add a new prepareToRender() callback for renders to perform their initial window clears
...
This consolidates all the clearing that was strewn across the codebase.
2024-06-25 23:12:18 -05:00
Cameron Gutman
76d0eb6b63
Avoid trying VDPAU when Vulkan is preferred
...
The VDPAU renderer causes interoperability issues with Vulkan.
2024-04-18 00:41:24 -05:00
Cameron Gutman
f2535f1e6e
Avoid D3D9 fallback on lack of codec support unless a D3D11 FL11.0 GPU wasn't found
...
We'd rather not waste time (and risk crashes) loading the D3D9 driver if the GPU doesn't have the physical decoding hardware at all.
2024-03-26 23:59:18 -05:00
Cameron Gutman
cefa567f95
Demote DXVA2 renderer to second pass of hwaccels
2024-03-26 23:04:54 -05:00
Cameron Gutman
a093a0ae59
Restore AVSampleDisplayLayer renderer for dGPU/eGPU systems
...
These sometimes have issues importing decoded frames for Metal rendering.
2024-03-24 17:47:29 -05:00
Cameron Gutman
2a05b890d8
Enable transparent resizing and display changes for supported renderers
2023-12-17 21:15:40 -06:00
Cameron Gutman
d4050f3a4f
Add HDR metadata to each AVFrame
2023-12-16 17:02:53 -06:00
Cameron Gutman
333d97160e
Add opt-in for Vulkan rendering for SDR content with PREFER_VULKAN=1
2023-12-13 01:03:27 -06:00
Cameron Gutman
aac5ad3fd0
Add a libplacebo-based Vulkan renderer for HDR and Vulkan video decoding support
...
Vulkan H.264/HEVC video decoding isn't supported with Fedora's Mesa binaries due to
patent issues, so only the VAAPI/DRM-PRIME import path was tested locally with ANV.
HDR video is getting tonemapped to my SDR monitor reasonably, so HDR output probably
works with GameScope but I haven't confirmed yet.
See #1117
2023-12-12 23:54:23 -06:00
Cameron Gutman
9cba449092
Add config option to allow EGL usage when built with MMAL
2023-10-15 13:03:47 -05:00
Cameron Gutman
2127e1d90b
Allow h264_v4l2m2m to be used in RPi builds if manually specified
2023-10-05 18:37:14 -05:00
Cameron Gutman
9d73aa6b4a
Fix DrmRenderer not falling back to swframes if DRM PRIME is available
2023-10-05 18:13:52 -05:00
Cameron Gutman
dc556d3c9b
Try to fix Windows build
2023-09-23 13:33:21 -04:00
Cameron Gutman
f7bb4611e9
Replace uses of strcpy() and sprintf()
2023-09-23 11:15:21 -04:00
Cameron Gutman
1df0da4d4a
Also use test frame decoding parameters when creating a test renderer
2023-09-14 18:21:53 -05:00
Cameron Gutman
1dd6cdb567
Use the correct width and height of the test frame when performing the test decode
...
Using the stream resolution instead of the test frame resolution was causing all non-720p streams to fail on the VisionFive 2 board with the wave5 driver.
It also likely fixes a similar interoperability issue with the qcom-venus driver that was reported in #1042
2023-09-14 18:16:45 -05:00
Cameron Gutman
ebc4c71c72
Fix handling of non-standard hwaccel decoders that also set AV_CODEC_CAP_HARDWARE
2023-09-04 23:40:59 -05:00
Cameron Gutman
1a2f1ed620
Enable AV1 RFI on all decoders capable of HEVC RFI
2023-08-13 16:41:48 -05:00
ns6089
9764174070
Add host processing latency to ffmpeg stats overlay
2023-07-20 22:30:26 -05:00
Cameron Gutman
ce60a146dc
Move RPi decoder hacks to correct location for new selection logic
2023-07-15 15:22:02 -05:00
Cameron Gutman
cd4a6f3e17
Rewrite FFmpeg decoder selection logic to dynamically discover compatible decoders
...
This avoids having to maintain a hardcoded list of all known H.264/HEVC/AV1 decoders
and ensures new/unknown decoders will just work automatically (assuming we have
a renderer that can process their output pixel format).
2023-07-15 15:12:58 -05:00
Casey Korver
ea06ec0133
Correct spelling mistakes found with Codespell
2023-07-09 13:21:18 -05:00
Cameron Gutman
9055496a19
Add AV1 test frames
2023-07-05 19:47:45 -05:00
Cameron Gutman
a81c6a1c5e
Initial work on AV1 support
2023-07-03 00:45:36 -05:00
Cameron Gutman
68daa90b7e
Refactor non-hwaccel decoders to use a single list of known codec names
2023-04-02 17:31:31 -05:00
Cameron Gutman
fb39ad896e
Add h264_omx and hevc_omx decoders used by the Vision Five 2
2023-04-02 17:17:25 -05:00
Cameron Gutman
f16b5cd337
Expose glslow config option
2023-03-26 20:27:03 -05:00
Cameron Gutman
90f26dfa45
Support direct KMSDRM output for platforms with slow GL implementations
2023-03-26 19:46:22 -05:00
Cameron Gutman
30a5f405f5
Enable HEVC RFI for the FFmpeg software decoder
2022-10-25 23:19:19 -05:00
Cameron Gutman
8465a27a97
Deprioritize VAAPI for Gallium and Nvidia drivers and work around RFI latency bug
2022-10-16 21:51:10 -05:00
Cameron Gutman
a860bd8dd5
Enable HEVC RFI on Tegra
2022-10-14 23:41:09 -05:00
Cameron Gutman
704ce4ff0c
Add environment variable for overriding decoder capabilities
2022-10-14 23:39:49 -05:00
Cameron Gutman
e6c4332445
Revert "Use Rec 2020 colorspace for WCG support even if HDR is off on the host"
...
Rec 2020 conversion causes colors to be blown out in SDR
This reverts commit 472e8ee92ea94adbe03efc9efd7d115745593c12.
2022-10-13 01:19:49 -05:00
Cameron Gutman
472e8ee92e
Use Rec 2020 colorspace for WCG support even if HDR is off on the host
2022-10-13 00:14:10 -05:00
Cameron Gutman
c55af7fff3
Add a decoder/renderer callback to specify the desired color range
2022-10-12 23:59:01 -05:00
Cameron Gutman
7a39daf179
Implement Rec 601 Full Range support in SDLRenderer
2022-10-12 23:52:29 -05:00
Cameron Gutman
fbbbd5e0b8
Use new LiRequestIdrFrame() API
2022-10-05 00:53:31 -05:00
Cameron Gutman
bc68aad67b
Print the frame number if decoding fails
2022-10-04 23:38:54 -05:00
Cameron Gutman
483a601867
Display SDR/HDR status in performance overlay
2022-09-28 17:44:22 -05:00
Cameron Gutman
ad3ed97472
Fix handling of 3 byte Annex B start sequences
2022-09-05 17:56:42 -05:00
Cameron Gutman
bf4332b9e7
Prefer D3D11VA in non-FSE modes for improved performance
2022-08-21 17:50:56 -05:00
Cameron Gutman
be2f4433db
Avoid hardcoding VIDEO_FORMAT_H265_MAIN10 for HDR/10-bit color
2022-06-26 16:22:05 -05:00
Cameron Gutman
2bb2745f91
Enhance frame pacing logic for HDR renderers
2022-05-07 16:21:17 -05:00