From 044c7f3ce90e22ebdbebb4aff4cb99d16bf9dbe6 Mon Sep 17 00:00:00 2001 From: John Preston Date: Fri, 21 Jan 2022 17:57:06 +0300 Subject: [PATCH] Generate opaque good thumbnails for non-sticker Webm. --- Telegram/SourceFiles/data/data_document_media.cpp | 6 +++++- Telegram/SourceFiles/media/clip/media_clip_reader.cpp | 7 +------ .../media/streaming/media_streaming_document.cpp | 3 +++ 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/Telegram/SourceFiles/data/data_document_media.cpp b/Telegram/SourceFiles/data/data_document_media.cpp index 1b24abe004..058b6b02f9 100644 --- a/Telegram/SourceFiles/data/data_document_media.cpp +++ b/Telegram/SourceFiles/data/data_document_media.cpp @@ -58,7 +58,11 @@ enum class FileType { QByteArray data, FileType type) { if (type == FileType::Video || type == FileType::VideoSticker) { - return ::Media::Clip::PrepareForSending(path, data).thumbnail; + auto result = ::Media::Clip::PrepareForSending(path, data); + if (result.isWebmSticker && type == FileType::Video) { + result.thumbnail = Images::Opaque(std::move(result.thumbnail)); + } + return result.thumbnail; } else if (type == FileType::AnimatedSticker) { return Lottie::ReadThumbnail(Lottie::ReadContent(data, path)); } else if (type == FileType::Theme) { diff --git a/Telegram/SourceFiles/media/clip/media_clip_reader.cpp b/Telegram/SourceFiles/media/clip/media_clip_reader.cpp index 2c2552c2ae..f27f01397c 100644 --- a/Telegram/SourceFiles/media/clip/media_clip_reader.cpp +++ b/Telegram/SourceFiles/media/clip/media_clip_reader.cpp @@ -859,12 +859,7 @@ Ui::PreparedFileInformation::Video PrepareForSending(const QString &fname, const auto readFrame = (readResult == internal::ReaderImplementation::ReadResult::Success); if (readFrame && reader->renderFrame(result.thumbnail, hasAlpha, QSize())) { if (hasAlpha && !result.isWebmSticker) { - auto cacheForResize = QImage(); - auto request = FrameRequest(); - request.framew = request.outerw = result.thumbnail.width(); - request.frameh = request.outerh = result.thumbnail.height(); - request.factor = 1; - result.thumbnail = PrepareFrameImage(request, result.thumbnail, hasAlpha, cacheForResize); + result.thumbnail = Images::Opaque(std::move(result.thumbnail)); } result.duration = static_cast(durationMs / 1000); } diff --git a/Telegram/SourceFiles/media/streaming/media_streaming_document.cpp b/Telegram/SourceFiles/media/streaming/media_streaming_document.cpp index d45c84c285..d936acc040 100644 --- a/Telegram/SourceFiles/media/streaming/media_streaming_document.cpp +++ b/Telegram/SourceFiles/media/streaming/media_streaming_document.cpp @@ -239,6 +239,9 @@ void Document::validateGoodThumbnail() { Qt::IgnoreAspectRatio, Qt::SmoothTransformation); } + if (!sticker && information.alpha) { + result = Images::Opaque(std::move(result)); + } return result; }(); auto bytes = QByteArray();