[vlc-devel] [PATCH 5/5] qt: medialib: use new requestThumbnail() API

Romain Vimont rom1v at videolabs.io
Thu Jan 7 13:24:01 UTC 2021


A new medialibrary API has been added to request asynchronous thumbnail
generation from a media id:
https://code.videolan.org/videolan/medialibrary/-/merge_requests/350

This avoids to retrieve a Media from the media id beforehand via a
blocking call (executing SQL queries) on the UI thread.
---
 modules/misc/medialibrary/medialibrary.cpp | 23 +++++++++++-----------
 1 file changed, 12 insertions(+), 11 deletions(-)

diff --git a/modules/misc/medialibrary/medialibrary.cpp b/modules/misc/medialibrary/medialibrary.cpp
index 1d7a12547c..6c4583f66e 100644
--- a/modules/misc/medialibrary/medialibrary.cpp
+++ b/modules/misc/medialibrary/medialibrary.cpp
@@ -598,13 +598,24 @@ int MediaLibrary::Control( int query, va_list args )
             *va_arg( args, vlc_ml_media_t**) = CreateAndConvert<vlc_ml_media_t>( media.get() );
             return VLC_SUCCESS;
         }
+        case VLC_ML_MEDIA_GENERATE_THUMBNAIL:
+        {
+            auto mediaId = va_arg( args, int64_t );
+            auto sizeType = va_arg( args, int );
+            auto width = va_arg( args, uint32_t );
+            auto height = va_arg( args, uint32_t );
+            auto position = va_arg( args, double );
+            auto res = m_ml->requestThumbnail( mediaId,
+                                               static_cast<medialibrary::ThumbnailSizeType>( sizeType ),
+                                               width, height, position );
+            return res == true ? VLC_SUCCESS : VLC_EGENERIC;
+        }
         case VLC_ML_MEDIA_UPDATE_PROGRESS:
         case VLC_ML_MEDIA_GET_MEDIA_PLAYBACK_STATE:
         case VLC_ML_MEDIA_SET_MEDIA_PLAYBACK_STATE:
         case VLC_ML_MEDIA_GET_ALL_MEDIA_PLAYBACK_STATES:
         case VLC_ML_MEDIA_SET_ALL_MEDIA_PLAYBACK_STATES:
         case VLC_ML_MEDIA_SET_THUMBNAIL:
-        case VLC_ML_MEDIA_GENERATE_THUMBNAIL:
         case VLC_ML_MEDIA_ADD_EXTERNAL_MRL:
         case VLC_ML_MEDIA_SET_TYPE:
         case VLC_ML_MEDIA_ADD_BOOKMARK:
@@ -1228,16 +1239,6 @@ int MediaLibrary::controlMedia( int query, va_list args )
             m->setThumbnail( mrl, static_cast<medialibrary::ThumbnailSizeType>( sizeType ) );
             return VLC_SUCCESS;
         }
-        case VLC_ML_MEDIA_GENERATE_THUMBNAIL:
-        {
-            auto sizeType = va_arg( args, int );
-            auto width = va_arg( args, uint32_t );
-            auto height = va_arg( args, uint32_t );
-            auto position = va_arg( args, double );
-            auto res = m->requestThumbnail( static_cast<medialibrary::ThumbnailSizeType>( sizeType ),
-                                            width, height, position );
-            return res == true ? VLC_SUCCESS : VLC_EGENERIC;
-        }
         case VLC_ML_MEDIA_ADD_EXTERNAL_MRL:
         {
             auto mrl = va_arg( args, const char* );
-- 
2.30.0



More information about the vlc-devel mailing list