feat: add vaapi path for video wallpapers on generic gpus
C++ / fmt (pull_request) Failing after 6s
C++ / build (pull_request) Failing after 10s
C++ / clang-tidy (pull_request) Failing after 11s
JS/TS / fmt (pull_request) Successful in 10s
JS/TS / lint (pull_request) Successful in 8s
Python / static (pull_request) Failing after 32s
Rust / build (pull_request) Successful in 52s
Python / verify (pull_request) Failing after 1m23s
Rust / fmt (pull_request) Successful in 51s
Rust / clippy (pull_request) Successful in 1m2s

This commit is contained in:
2026-10-27 02:15:16 +01:00
parent e655ec5bc7
commit b0cb43f75c
39 changed files with 1670 additions and 599 deletions
+58
View File
@@ -0,0 +1,58 @@
#pragma once
#include <EGL/egl.h>
#include <cstdint>
#include <functional>
#include <memory>
#include <QSize>
#include <QString>
namespace ZShell::wallpaper {
class VideoDecoder {
public:
virtual ~VideoDecoder();
void setReadyCallback(std::function<void()> callback);
void setFrameCallback(std::function<void()> callback);
virtual bool start(const QString& path) = 0;
virtual void stop() = 0;
virtual bool importCurrentFrame() = 0;
virtual void deleteTexture() = 0;
[[nodiscard]] uint32_t textureId() const;
[[nodiscard]] uint32_t chromaTextureId() const;
[[nodiscard]] int colorMatrix() const;
[[nodiscard]] int colorRange() const;
[[nodiscard]] QSize frameSize() const;
[[nodiscard]] virtual const char* backendName() const = 0;
protected:
std::function<void()> m_readyCb;
std::function<void()> m_frameCb;
uint32_t m_texY = 0;
uint32_t m_texUV = 0;
int m_matrix = 1;
int m_range = 0;
QSize m_size;
};
enum class VideoBackend {
Auto,
Nvidia,
Vaapi,
None,
};
std::unique_ptr<VideoDecoder> createVideoDecoder(
EGLDisplay display, VideoBackend hint = VideoBackend::Auto);
const char* resolveBackendName(VideoBackend hint = VideoBackend::Auto);
} // namespace ZShell::wallpaper