diff --git a/ffmpegthumbnailer.h b/ffmpegthumbnailer.h --- a/ffmpegthumbnailer.h +++ b/ffmpegthumbnailer.h @@ -23,13 +23,13 @@ #include #include -class FFMpegThumbnailer : public QObject, public ThumbCreator +class FFMpegThumbnailer : public QObject, public ThumbCreatorV3 { Q_OBJECT public: FFMpegThumbnailer(); virtual ~FFMpegThumbnailer(); - virtual bool create(const QString& path, int width, int height, QImage& img) override; + virtual bool createV3(const QString& path, int width, int height, QImage& img, qreal devicePixelRatio) override; virtual Flags flags() const override; virtual QWidget* createConfigurationWidget() override; virtual void writeConfiguration(const QWidget* configurationWidget) override; diff --git a/ffmpegthumbnailer.cpp b/ffmpegthumbnailer.cpp --- a/ffmpegthumbnailer.cpp +++ b/ffmpegthumbnailer.cpp @@ -42,17 +42,22 @@ { } -bool FFMpegThumbnailer::create(const QString& path, int width, int /*height*/, QImage& img) +bool FFMpegThumbnailer::createV3(const QString& path, int width, int /*height*/, QImage& img, qreal devicePixelRatio) { - m_Thumbnailer.setThumbnailSize(width); + m_Thumbnailer.setThumbnailSize(width * devicePixelRatio); // 20% seek inside the video to generate the preview m_Thumbnailer.setSeekPercentage(20); //Smart frame selection is very slow compared to the fixed detection //TODO: Use smart detection if the image is single colored. //m_Thumbnailer.setSmartFrameSelection(true); m_Thumbnailer.generateThumbnail(path, img); - return !img.isNull(); + if (!img.isNull()) { + img.setDevicePixelRatio(devicePixelRatio); + return true; + } + + return false; } ThumbCreator::Flags FFMpegThumbnailer::flags() const