From 5373ceeaa5168888c3698536a94495a71f9a16e3 Mon Sep 17 00:00:00 2001
From: dec05eba <dec05eba@protonmail.com>
Date: Fri, 2 Apr 2021 01:20:29 +0200
Subject: Matrix: make video thumbnail use correct ratio

---
 src/plugins/Matrix.cpp | 29 ++++++++++++++++++++++-------
 1 file changed, 22 insertions(+), 7 deletions(-)

(limited to 'src/plugins')

diff --git a/src/plugins/Matrix.cpp b/src/plugins/Matrix.cpp
index 6050b18..4ac4da1 100644
--- a/src/plugins/Matrix.cpp
+++ b/src/plugins/Matrix.cpp
@@ -3205,13 +3205,28 @@ namespace QuickMedia {
             char tmp_filename[] = "/tmp/quickmedia_video_frame_XXXXXX";
             int tmp_file = mkstemp(tmp_filename);
             if(tmp_file != -1) {
-                if(video_get_first_frame(filepath.c_str(), tmp_filename, thumbnail_max_size.x, thumbnail_max_size.y)) {
-                    UploadInfo upload_info_ignored; // Ignore because it wont be set anyways. Thumbnails dont have thumbnails.
-                    PluginResult upload_thumbnail_result = upload_file(room, tmp_filename, thumbnail_info, upload_info_ignored, err_msg, false);
-                    if(upload_thumbnail_result != PluginResult::OK) {
-                        close(tmp_file);
-                        remove(tmp_filename);
-                        return upload_thumbnail_result;
+                if(video_get_first_frame(filepath.c_str(), tmp_filename)) {
+                    char tmp_filename_thumbnail[] = "/tmp/quickmedia_thumbnail_XXXXXX";
+                    int tmp_file_thumbnail = mkstemp(tmp_filename_thumbnail);
+                    if(tmp_file_thumbnail != -1) {
+                        std::string thumbnail_path;
+                        if(create_thumbnail(tmp_filename, tmp_filename_thumbnail, thumbnail_max_size))
+                            thumbnail_path = tmp_filename_thumbnail;
+                        else
+                            thumbnail_path = tmp_filename;
+
+                        UploadInfo upload_info_ignored; // Ignore because it wont be set anyways. Thumbnails dont have thumbnails.
+                        PluginResult upload_thumbnail_result = upload_file(room, thumbnail_path, thumbnail_info, upload_info_ignored, err_msg, false);
+                        if(upload_thumbnail_result != PluginResult::OK) {
+                            close(tmp_file_thumbnail);
+                            remove(tmp_filename_thumbnail);
+                            return upload_thumbnail_result;
+                        }
+
+                        close(tmp_file_thumbnail);
+                        remove(tmp_filename_thumbnail);
+                    } else {
+                        fprintf(stderr, "Failed to create temporary file for video thumbnail, ignoring thumbnail...\n");
                     }
                 } else {
                     fprintf(stderr, "Failed to get first frame of video, ignoring thumbnail...\n");
-- 
cgit v1.2.3-70-g09d2