#pragma once #include #include class QProcess; namespace ZShell::wallpaper { class VideoTranscoder : public QObject { Q_OBJECT public: explicit VideoTranscoder(QObject* parent = nullptr); [[nodiscard]] QString cacheDir() const; [[nodiscard]] QString transcodeTarget(const QString& path) const; [[nodiscard]] bool needsTranscode(const QString& path) const; void start(const QString& src, const QString& dst); static bool isHardwareCodec(const QString& codec); signals: void transcoded(const QString& dst, bool ok); private: [[nodiscard]] QString codecName(const QString& path) const; QProcess* m_process = nullptr; }; } // namespace ZShell::wallpaper