Cameron Gutman
7cf8b46c79
Pass the correct renderer to EGLImageFactory
...
We should be using the EGL renderer's colorspace and color range
rather than the backend renderer's for fallbacks. The former is
what actually gets passed to the host PC during stream init.
2026-08-06 00:29:53 -05:00
Cameron Gutman
c1623ff44e
Switch the default renderer color range to full
2026-08-05 23:56:18 -05:00
Cameron Gutman
b2f0828df8
Use requested color range as a fallback in isFrameFullRange()
2026-08-05 23:54:19 -05:00
Cameron Gutman
3f26217df7
Select color range based on plane COLOR_RANGE property values
2026-08-05 23:49:09 -05:00
Cameron Gutman
4570fba87d
Add full range handling to SdlRenderer
2026-08-05 23:44:11 -05:00
Cameron Gutman
a903c5cef2
Explicitly request limited range for renderers that require it
2026-08-05 23:25:30 -05:00
Cameron Gutman
2bea406f67
Guess frame color metadata if left unspecified
...
Some decoders don't populate metadata, but the renderer may need it
to determine which shader or EGL import parameters to use.
2026-08-05 22:56:34 -05:00
Cameron Gutman
3aa111e825
Fix unused parameter warning on non-macOS platforms
2026-07-26 20:03:04 -05:00
Cameron Gutman
fba7c4119a
Validate that the SPS didn't change in debug builds
2026-07-26 19:39:34 -05:00
Cameron Gutman
acea86de24
Revert "Make h264bitstream dependency optional"
...
This reverts commit 2328713f4e .
2026-07-26 19:23:34 -05:00
Cameron Gutman
2fc0d84aa0
Write the original H.264 SPS if it required no fixups
2026-07-26 18:33:28 -05:00
Cameron Gutman
490229be3f
Fix GEM handle leak in DRM renderer
...
Huge thanks to @oliverlj for identifying this longstanding bug.
This is likely responsible for many different issues with the DRM renderer randomly failing.
2026-07-26 15:22:15 -05:00
Cameron Gutman
2328713f4e
Make h264bitstream dependency optional
2026-07-19 14:11:27 -05:00
Cameron Gutman
4453e4aef1
Add a renderer selection option for macOS
...
There are numerous conflicting reports about which Mac renderer works best (even on the same systems!). I give up, just let the users figure it out.
2026-07-18 16:38:40 -05:00
Cameron Gutman
8b18d58aa0
Add workaround for interoperability issue with out-of-tree FFmpeg zero-copy v4l2m2m patches and libplacebo
...
Fixes #1786
2026-07-08 23:40:08 -05:00
Cameron Gutman
fd34a1fd28
Disable the text outline when line wrapping is required
2026-07-01 23:43:40 -05:00
Cameron Gutman
9067db8915
Switch to UTF-8 for overlay text rendering
2026-07-01 23:24:31 -05:00
Mira
177f845183
Add outline to stream overlay text ( #1887 )
...
Co-authored-by: Cameron Gutman <aicommander@gmail.com >
2026-07-01 23:03:45 -05:00
Cameron Gutman
c9b03f80f8
Partially revert "Use GL_NEAREST when possible without degrading quality"
...
The changes to GL_NEAREST for overlay textures and disabling alpha blending in SDL renderer are left intact.
This reverts commit 0f49dca4c0 .
2026-07-01 21:56:54 -05:00
Cameron Gutman
6e231778a2
Fix blocking during rendering rather than in waitToRender() on MoltenVK
...
MoltenVK does a lazy fetch of the drawable only when it's being modified, so waitToRender() is completely ineffective as is. Rendering a small empty overlay in waitToRender() forces the next drawable wait to happen in waitToRender(), before we pick the current frame to render. This removes one display refresh period of latency when using V-sync.
2026-06-25 20:01:29 -05:00
Cameron Gutman
d997a0d0c8
Dynamically adjust libplacebo swapchain depth on macOS
...
Direct-to-display mode on some Macs (M4 Mac Mini) can retain our drawables, which cuts the frame rate in half if we're in double-buffered mode.
We don't want to use triple-buffered mode all the time because it increases latency when used if not required, so detect delayed presentation and enable it on the fly if needed.
2026-06-23 21:09:20 -05:00
Cameron Gutman
06bd8a730b
Force sRGB Vulkan swapchain on macOS to fix washed out colors
2026-06-23 19:19:56 -05:00
Cameron Gutman
50364fd522
Don't set VK lock/unlock queue functions past libavutil 62
...
They are scheduled for removal at that ABI bump.
2026-06-21 14:01:47 -05:00
Cameron Gutman
bea5355c66
Fix unused parameter warning on Windows and Linux
2026-06-21 14:01:47 -05:00
Cameron Gutman
ca7d61f528
Prefer libplacebo on macOS when available
2026-06-14 19:27:01 -05:00
Cameron Gutman
2b5388e941
Fix non-EGL frontend renderers when compiled without EGL support
2026-06-14 19:16:16 -05:00
Cameron Gutman
a9ad048252
Fix HDR rendering in libplacebo on macOS
2026-06-14 18:58:22 -05:00
Cameron Gutman
51cc5a8537
Remove libplacebo workaround for FFmpeg compiled without Vulkan support
2026-06-14 18:57:46 -05:00
Cameron Gutman
8c6b422040
Implement libplacebo on MoltenVK
2026-06-14 15:45:38 -05:00
Cameron Gutman
ec75f0d8de
Refactor libplacebo renderer to handle non-Vulkan hwcontexts
2026-06-14 12:20:54 -05:00
Cameron Gutman
97240cd5f2
Add workaround for libplacebo crash with Raspbian FFmpeg
...
Fixes #1409
2026-05-24 14:43:02 -05:00
Cameron Gutman
d94b92e247
Use SDL_utf8strlcpy() to avoid MSVC secure CRT warnings
2026-05-23 19:50:32 -05:00
Cameron Gutman
459dcd7b2c
Fix incorrect error print
2026-05-16 16:10:47 -05:00
Cameron Gutman
b33a252739
Fix incorrect apply() return value for legacy DRM clients
2026-05-16 16:09:57 -05:00
Cameron Gutman
87c3179f77
Fix incorrect failure check
2026-05-15 23:23:36 -05:00
Cameron Gutman
9cbba106ad
Use the Metal renderer by default on all Macs
...
Whatever dGPU/eGPU rendering issues existed at the time I wrote that check seem to no longer happen on my RX 480 eGPU test setup running Ventura (our oldest supported OS).
It seems safe enough to enable now, especially since 7d6ce0b4c should catch broken systems and transparently fall back to AVSampleBufferDisplayLayer.
Fixes #1885
2026-05-14 00:45:57 -05:00
Cameron Gutman
7d6ce0b4cc
Implement testRenderFrame() for the VTMetal renderer
...
This can be used to (hopefully) detect cases where importing the decoded frames onto the target GPU fails.
See #1885
2026-05-14 00:34:32 -05:00
Cameron Gutman
5faa5fece8
Don't manually override v4l2m2m buffer counts
...
This causes POLLERR when decoding from meson-vdec on the Libre
Computer Alta (and likely other Amlogic boards). Our requried buffer
counts were already lower than the default 16/20 configuration that
FFmpeg uses, so overriding them was just a memory usage optimization.
2026-04-20 00:25:21 -05:00
Cameron Gutman
51f86caac3
Fix assert on exit using KMSDRM on AMDGPU
...
AMDGPU disallows commits that would leave a CRTC active without
the primary plane enabled. Instead of disabling the primary plane,
simply restore the original state of the plane to avoid this.
2026-04-19 23:17:28 -05:00
Cameron Gutman
5d813ed3df
Fix clamping of signed range properties
2026-04-19 22:17:37 -05:00
Cameron Gutman
0e50a9d457
Only enable D3D11/DXGI debug layer if Graphics Tools are installed
...
Closes #1857
2026-04-13 20:06:24 -05:00
Cameron Gutman
a766c9cafc
Disable texture sharing on Qualcomm GPUs
...
See #1857
2026-04-11 20:14:14 -05:00
Cameron Gutman
94d47e95fe
Fix non-determinism during Vulkan decoder probing on KMSDRM
2026-04-09 21:37:25 -05:00
Cameron Gutman
4ec682dc72
Remove errant assert to fix software decoding on Xe
2026-04-06 21:12:00 -05:00
Cameron Gutman
c8d18f8a8e
Bring back DRM atomic test commit using new DRM master lock
...
The DRM master lock avoids race conditions between Qt taking master
to draw the GUI and the DRM renderer performing a test commit.
2026-04-06 19:25:03 -05:00
Cameron Gutman
9c11dca454
Move DRM master state cleanup into cleanupRenderContext()
2026-04-06 19:24:04 -05:00
Cameron Gutman
5676a076fd
Fix overlay plane selection on drivers without zpos properties
2026-04-01 22:37:12 -05:00
Cameron Gutman
88b4a17fe1
Use AV_CODEC_RECEIVE_FRAME_FLAG_SYNCHRONOUS for decoder probing on FFmpeg 8.1
2026-03-28 16:30:28 -05:00
Cameron Gutman
8326223220
Revert "Use EOS to force decoder test frame output"
...
It causes hangs on defective v4l2m2m decoders, and it's not always
well-supported by out-of-tree decoders either.
This reverts commit 66a30c66f3 .
2026-03-28 16:24:20 -05:00
Cameron Gutman
4aa5ad71c0
Use av_vk_get_optional_device_extensions() on FFmpeg 8.1
2026-03-28 16:17:59 -05:00