Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • videolan/vlc
  • chouquette/vlc
  • bakiewicz.marek122/vlc
  • devnexen/vlc
  • rohanrajpal/vlc
  • blurrrb/vlc
  • gsoc/gsoc2019/darkapex/vlc
  • b1ue/vlc
  • fkuehne/vlc
  • magsoft/vlc
  • chub/vlc
  • cramiro9/vlc
  • robUx4/vlc
  • rom1v/vlc
  • akshayaky/vlc
  • tmk907/vlc
  • akymaster/vlc
  • govind.sharma/vlc
  • psilokos/vlc
  • xjbeta/vlc
  • jahan/vlc
  • 1480c1/vlc
  • amanchande/vlc
  • aaqib/vlc
  • rist/vlc
  • apol/vlc
  • mindfreeze/vlc
  • alexandre-janniaux/vlc
  • sandsmark/vlc
  • jagannatharjun/vlc
  • gsoc/gsoc2020/matiaslgonzalez/vlc
  • gsoc/gsoc2020/jagannatharjun/vlc
  • mstorsjo/vlc
  • gsoc/gsoc2020/vedenta/vlc
  • gsoc/gsoc2020/arnav-ishaan/vlc
  • gsoc/gsoc2020/andreduong/vlc
  • fuzun/vlc
  • gsoc/gsoc2020/vatsin/vlc
  • gsoc/gsoc2020/sagid/vlc
  • yaron/vlc
  • Phoenix/vlc
  • Garf/vlc
  • ePiratWorkarounds/vlc
  • tguillem/vlc
  • jnqnfe/vlc
  • mdc/vlc
  • Vedaa/vlc
  • rasa/vlc
  • quink/vlc
  • yealo/vlc
  • aleksey_ak/vlc
  • ePirat/vlc
  • ilya.yanok/vlc
  • asenat/vlc
  • m/vlc
  • bunjee/vlc
  • BLumia/vlc
  • sagudev/vlc
  • hamedmonji30/vlc
  • nullgemm/vlc
  • DivyamAhuja/vlc
  • thesamesam/vlc
  • dag7/vlc
  • snehil101/vlc
  • haasn/vlc
  • jbk/vlc
  • ValZapod/vlc
  • mfkl/vlc
  • WangChuan/vlc
  • core1024/vlc
  • GhostVaibhav/vlc
  • dfuhrmann/vlc
  • davide.prade/vlc
  • tmatth/vlc
  • Courmisch/vlc
  • zouya/vlc
  • hpi/vlc
  • EwoutH/vlc
  • aleung27/vlc
  • hengwu0/vlc
  • saladin/vlc
  • ashuio/vlc
  • richselwood/vlc
  • verma16Ayush/vlc
  • chemicalflash/vlc
  • PoignardAzur/vlc
  • huangjieNT/vlc
  • Blake-Haydon/vlc
  • AnuthaDev/vlc
  • gsoc/gsoc2021/mpd/vlc
  • nicolas_lequec/vlc
  • sambassaly/vlc
  • thresh/vlc
  • bonniegong/vlc
  • myaashish/vlc
  • stavros.vagionitis/vlc
  • ileoo/vlc
  • louis-santucci/vlc
  • cchristiansen/vlc
  • sabyasachi07/vlc
  • AbduAmeen/vlc
  • ashishb0410/vlc
  • urbanhusky/vlc
  • davidepietrasanta/vlc
  • riksleutelstad/vlc
  • jeremyVignelles/vlc
  • komh/vlc
  • iamjithinjohn/vlc
  • JohannesKauffmann/vlc2
  • kunglao/vlc
  • natzberg/vlc
  • jill/vlc
  • cwendling/vlc
  • adufou/vlc
  • ErwanAirone/vlc
  • HasinduDilshan10/vlc
  • vagrantc/vlc
  • rafiv/macos-bigsur-icon
  • Aymeriic/vlc
  • saranshg20/vlc
  • metzlove24/vlc
  • linkfanel/vlc
  • Ds886/vlc
  • metehan-arslan/vlc
  • Skantes/vlc
  • kgsandundananjaya96/vlc
  • mitchcapper/vlc
  • advaitgupta/vlc
  • StefanBruens/vlc
  • ratajs/vlc
  • T.M.F.B.3761/vlc
  • m222059/vlc
  • casemerrick/vlc
  • joshuaword2alt/vlc
  • sjwaddy/vlc
  • dima/vlc
  • Ybalrid/vlc
  • umxprime/vlc
  • eschmidt/vlc
  • vannieuwenhuysenmichelle/vlc
  • badcf00d/vlc
  • wesinator/vlc
  • louis/vlc
  • xqq/vlc
  • EmperorYP7/vlc
  • NicoLiam/vlc
  • loveleen/vlc
  • rofferom/vlc
  • rbultje/vlc
  • TheUnamed/vlc
  • pratiksharma341/vlc
  • Saurab17/vlc
  • purist.coder/vlc
  • Shuicheng/vlc
  • mdrrubel292/vlc
  • silverbleu00/vlc
  • metif12/vlc
  • asher-m/vlc
  • jeffk/vlc
  • Brandonbr1/vlc
  • beautyyuyanli/vlc
  • rego21/vlc
  • muyangren907/vlc
  • collectionbylawrencejason/vlc
  • evelez/vlc
  • GSMgeeth/vlc
  • Oneric/vlc
  • TJ5/vlc
  • XuanTung95/vlc
  • darrenjenny21/vlc
  • Trenly/vlc
  • RockyTDR/vlc
  • mjakubowski/vlc
  • caprica/vlc
  • ForteFrankie/vlc
  • seannamiller19/vlc
  • junlon2006/vlc
  • kiwiren6666/vlc
  • iuseiphonexs/vlc
  • fenngtun/vlc
  • Rajdutt999/vlc
  • typx/vlc
  • leon.vitanos/vlc
  • robertogarci0938/vlc
  • gsoc/gsoc2022/luc65r/vlc-mpd
  • skeller/vlc
  • MCJack123/vlc
  • luc65r/vlc-mpd
  • popov895/vlc
  • claucambra/vlc
  • brad/vlc
  • matthewmurua88/vlc
  • Tomas8874/vlc
  • philenotfound/vlc
  • makita-do3/vlc
  • LZXCorp/vlc
  • mar0x/vlc
  • senojetkennedy0102/vlc
  • shaneb243/vlc
  • ahmadbader/vlc
  • rajduttcse26/vlc-audio-filters
  • Juniorzito8415/vlc
  • achernyakov/vlc
  • lucasjetgroup/vlc
  • pupdoggy666/vlc
  • gmde9363/vlc
  • alexnwayne/vlc
  • bahareebrahimi781/vlc
  • hamad633666/vlc
  • umghof3112/vlc
  • joe0199771874/vlc
  • Octocats66666666/vlc
  • jjm_223/vlc
  • btech10110.19/vlc
  • sunnykfc028/vlc-audio-filters
  • loic/vlc
  • nguyenminhducmx1/vlc
  • JanekKrueger/vlc
  • bstubbington2/vlc
  • rcombs/vlc
  • Ordissimo/vlc
  • king7532/vlc
  • noobsauce101/vlc
  • schong0525/vlc
  • myQwil/vlc
  • apisbg91/vlc
  • geeboy0101017/vlc
  • kim.faughey/vlc
  • nurupo/vlc
  • yyusea/vlc
  • 0711235879.khco/vlc
  • ialo/vlc
  • iloveyeye2/vlc
  • gdtdftdqtd/vlc
  • leandroconsiglio/vlc
  • AndyHTML2012/vlc
  • ncz/vlc
  • lucenticus/vlc
  • knr1931/vlc
  • kjoonlee/vlc
  • chandrakant100/vlc-qt
  • johge42/vlc
  • polter/vlc
  • hexchain/vlc
  • Tushwrld/vlc
  • mztea928/vlc
  • jbelloncastro/vlc
  • alvinhochun/vlc
  • ghostpiratecrow/vlc
  • ujjwaltwitx/vlc
  • alexsonarin06/vlc
  • adrianbon76/vlc
  • altsod/vlc
  • damien.lucas44/vlc
  • dmytrivtaisa/vlc
  • utk202/vlc
  • aaxhrj/vlc
  • thomas.hermes/vlc
  • structurenewworldorder/vlc
  • slomo/vlc
  • wantlamy/vlc
  • musc.o3cminc/vlc
  • thebarshablog/vlc
  • kerrick/vlc
  • kratos142518/vlc
  • leogps/vlc
  • vacantron/vlc
  • luna_koly/vlc
  • Ratio2/vlc
  • anuoshemohammad/vlc
  • apsun/vlc
  • aaa1115910/vlc
  • alimotmoyo/vlc
  • Ambossmann/vlc
  • Sam-LearnsToCode/vlc
  • Chilledheart/vlc
  • Labnann/vlc
  • ktcoooot1/vlc
  • mohit-marathe/vlc
  • johnddx/vlc
  • manstabuk/vlc
  • Omar-ahmed314/vlc
  • vineethkm/vlc
  • 9Enemi86/vlc
  • radoslav.m.panteleev/vlc
  • ashishami2002/vlc
  • Corbax/vlc
  • firnasahmed/vlc
  • pelayarmalam4/vlc
  • c0ff330k/vlc
  • shikhindahikar/vlc
  • l342723951/vlc
  • christianschwandner/vlc
  • douniwan5788/vlc
  • 7damian7/vlc
  • ferdnyc/vlc
  • f.ales1/vlc
  • pandagby/vlc
  • BaaBaa/vlc
  • jewe37/vlc
  • w00drow/vlc
  • russelltg/vlc
  • ironicallygod/vlc
  • soumyaDghosh/vlc
  • linzihao1999/vlc
  • deyayush6/vlc
  • mibi88/vlc
  • newabdallah10/vlc
  • jhorbincolombia/vlc
  • rimvihaqueshupto/vlc
  • andrewkhon98/vlc
  • fab78/vlc
  • lapaz17/vlc
  • amanna13/vlc
  • mdakram28/vlc
  • 07jw1980/vlc
  • sohamgupta/vlc
  • Eson-Jia1/vlc
  • Sumou/vlc
  • vikram-kangotra/vlc
  • chalice191/vlc
  • olivercalder/vlc
  • aaasg4001/vlc
  • zipdox/vlc
  • kwizart/vlc
  • Dragon-S/vlc
  • jdemeule/vlc
  • gabriel_lt/vlc
  • locutusofborg/vlc
  • sammirata/vlc-librist
  • another/vlc
  • Benjamin_Loison/vlc
  • ahmedmoselhi/vlc
  • petergaal/vlc
  • huynhsontung/vlc
  • dariusmihut/vlc
  • tvermaashutosh/vlc
  • buti/vlc
  • Niram7777/vlc
  • rohan-here/vlc
  • balaji-sivasakthi/vlc
  • rlindner81/vlc
  • Kakadus/vlc
  • djain/vlc
  • ABBurmeister/vlc
  • craighuggins/vlc
  • orbea/vlc
  • maxos/vlc
  • aakarshmj/vlc
  • kblaschke/vlc
  • ankitm/vlc
  • advait-0/vlc
  • mohak2003/vlc
  • yselkowitz/vlc
  • AZM999/vlc-azm
  • andrey.turkin/vlc
  • Disha-Baghel/vlc
  • nowrep/vlc
  • Apeng/vlc
  • Choucroute_melba/vlc
  • autra/vlc
  • eclipseo/vlc
  • fhuber/vlc
  • olafhering/vlc
  • sdasda7777/vlc
  • 1div0/vlc
  • skosnits/vlc-extended-playlist-support
  • dnicolson/vlc
  • Timshel/vlc
  • octopols/vlc
  • MangalK/vlc
  • nima64/vlc
  • misawai/vlc
  • Alexander-Wilms/vlc
  • Maxime2/vlc-fork-for-visualizer
  • ww/vlc
  • jeske/vlc
  • sgross-emlix/vlc
  • morenonatural/vlc
  • freakingLovesVLC/vlc
  • borisgolovnev/vlc
  • mpromonet/vlc
  • diogo.simao-marques/vlc
  • masstock/vlc
  • pratikpatel8982/vlc
  • hugok79/vlc
  • longervision/vlc
  • abhiudaysurya/vlc
  • rishabhgarg/vlc
  • tumic/vlc
  • cart/vlc
  • shubham442/vlc
  • Aditya692005/vlc
  • sammirata/vlc4
  • syrykh/vlc
  • Vvorcun/macos-new-icon
  • AyaanshC/vlc
  • nasso/vlc
  • Quark/vlc
  • sebastinas/vlc
  • rhstone/vlc
  • talregev/vlc
  • Managor/vlc
403 results
Show changes
Commits on Source (16)
Showing
with 171 additions and 75 deletions
......@@ -4556,7 +4556,7 @@ dnl Libnotify notification plugin
dnl
PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify], [libnotify notification], [auto])
PKG_ENABLE_MODULES_VLC([MEDIALIBRARY], [medialibrary], [medialibrary >= 0.12.0], (medialibrary support), [auto])
PKG_ENABLE_MODULES_VLC([MEDIALIBRARY], [medialibrary], [medialibrary >= 0.13.0], (medialibrary support), [auto])
dnl
dnl Endianness check
......
From ab1de729b73138b1a7b6dfa5e17a6a63063dd2ab Mon Sep 17 00:00:00 2001
From: Alaric Senat <alaric@videolabs.io>
Date: Wed, 27 Mar 2024 11:42:57 +0100
Subject: [PATCH] CacheWorker: Fail when the cache implementation isn't
provided
Allow the library users not to provide an implementation for the cacher.
---
src/CacheWorker.cpp | 20 ++++++++++++++------
src/CacheWorker.h | 2 +-
2 files changed, 15 insertions(+), 7 deletions(-)
diff --git a/src/CacheWorker.cpp b/src/CacheWorker.cpp
index 0b08267a..06b1dfa7 100644
--- a/src/CacheWorker.cpp
+++ b/src/CacheWorker.cpp
@@ -58,14 +58,22 @@ void CacheWorker::setCacher( std::shared_ptr<ICacher> cacher )
m_cacher = std::move( cacher );
}
-void CacheWorker::queueTask( std::shared_ptr<Media> m, bool cache )
+bool CacheWorker::queueTask( std::shared_ptr<Media> m, bool cache )
{
std::lock_guard<compat::Mutex> lock{ m_mutex };
+
+ if ( m_cacher == nullptr )
+ {
+ LOG_WARN( "Cache implementation not provided" );
+ return false;
+ }
+
m_tasks.emplace( std::move( m ), cache );
if ( m_thread.joinable() == false )
m_thread = compat::Thread{ &CacheWorker::run, this };
else
m_cond.notify_all();
+ return true;
}
bool CacheWorker::cacheMedia( std::shared_ptr<Media> m )
@@ -78,8 +86,7 @@ bool CacheWorker::cacheMedia( std::shared_ptr<Media> m )
LOG_DEBUG( "Media ", m->id(), " is already cached" );
return true;
}
- queueTask( std::move( m ), true );
- return true;
+ return queueTask( std::move( m ), true );
}
bool CacheWorker::removeCached( std::shared_ptr<Media> m )
@@ -92,8 +99,7 @@ bool CacheWorker::removeCached( std::shared_ptr<Media> m )
LOG_DEBUG( "Media ", m->id(), " is not cached" );
return false;
}
- queueTask( std::move( m ), false );
- return true;
+ return queueTask( std::move( m ), false );
}
void CacheWorker::cacheSubscriptions()
@@ -117,7 +123,9 @@ void CacheWorker::resume()
void CacheWorker::stop()
{
- m_cacher->interrupt();
+ if ( m_cacher != nullptr )
+ m_cacher->interrupt();
+
{
std::lock_guard<compat::Mutex> lock{ m_mutex };
if ( m_thread.joinable() == false )
diff --git a/src/CacheWorker.h b/src/CacheWorker.h
index 57088c92..01e33c0c 100644
--- a/src/CacheWorker.h
+++ b/src/CacheWorker.h
@@ -73,7 +73,7 @@ private:
void checkCache();
bool removeFromCache( const std::string& mrl );
bool evictIfNeeded( const File& file, Subscription* s, IFile::CacheType cacheType );
- void queueTask( std::shared_ptr<Media> m, bool cache );
+ bool queueTask( std::shared_ptr<Media> m, bool cache );
uint64_t availableSubscriptionCacheSize() const;
uint64_t availableCacheSize() const;
--
2.43.0
2b9e9eb5000fd8ff333d29786c3c8ed9f2e2541cd34652b7087ea0fb6b46bfb354472e20dad7c53c159dd447882427e61233ef6224ad5902bedff37756fd950a medialibrary-0.12.4.tar.bz2
e2a75a1c59c899a7a8828e6b8bf7e106f50ad896e42f3888ab6a9423eddcdde75f4889120781f303a30d182421cf179698e0a5c968d8b0523d5a874274428289 medialibrary-0.13.0.tar.bz2
MEDIALIBRARY_VERSION := 0.12.4
MEDIALIBRARY_VERSION := 0.13.0
MEDIALIBRARY_URL := https://code.videolan.org/videolan/medialibrary/-/archive/$(MEDIALIBRARY_VERSION)/medialibrary-$(MEDIALIBRARY_VERSION).tar.bz2
PKGS += medialibrary
ifeq ($(call need_pkg,"medialibrary >= 0.12.0"),)
ifeq ($(call need_pkg,"medialibrary >= 0.13.0"),)
PKGS_FOUND += medialibrary
endif
......@@ -15,6 +15,7 @@ $(TARBALLS)/medialibrary-$(MEDIALIBRARY_VERSION).tar.bz2:
medialibrary: medialibrary-$(MEDIALIBRARY_VERSION).tar.bz2 .sum-medialibrary
$(UNPACK)
$(APPLY) $(SRC)/medialibrary/Fix-CacheWorker.patch
$(MOVE)
.medialibrary: medialibrary crossfile.meson
......
......@@ -87,15 +87,18 @@ typedef enum vlc_ml_thumbnail_status_t
typedef enum vlc_ml_history_type_t
{
VLC_ML_HISTORY_TYPE_MEDIA,
VLC_ML_HISTORY_TYPE_GLOBAL,
VLC_ML_HISTORY_TYPE_LOCAL,
VLC_ML_HISTORY_TYPE_NETWORK,
} vlc_ml_history_type_t;
typedef enum vlc_ml_playlist_type_t
{
VLC_ML_PLAYLIST_TYPE_ALL,
VLC_ML_PLAYLIST_TYPE_AUDIO,
VLC_ML_PLAYLIST_TYPE_VIDEO,
VLC_ML_PLAYLIST_TYPE_ALL, /**< Playlist containing any kind of tracks */
VLC_ML_PLAYLIST_TYPE_AUDIO, /**< Playlist containing at least one audio track */
VLC_ML_PLAYLIST_TYPE_VIDEO, /**< Playlist containing at least one video track */
VLC_ML_PLAYLIST_TYPE_AUDIO_ONLY, /**< Playlist containing audio tracks only */
VLC_ML_PLAYLIST_TYPE_VIDEO_ONLY, /**< Playlist containing video tracks only */
} vlc_ml_playlist_type_t;
typedef struct vlc_ml_thumbnail_t
......@@ -374,6 +377,7 @@ typedef struct vlc_ml_folder_t
unsigned int i_nb_media; /**< The media count */
unsigned int i_nb_video; /**< The number of video for this folder */
unsigned int i_nb_audio; /**< The number of audio for this volder */
int64_t i_duration; /**< The sum of all the member durations of the folder in ms. */
bool b_present; /**< The folder's presence state */
bool b_banned; /**< Will be true if the user required this folder to be excluded */
} vlc_ml_folder_t;
......@@ -426,15 +430,20 @@ typedef enum vlc_ml_sorting_criteria_t
VLC_ML_SORTING_TRACKNUMBER,
} vlc_ml_sorting_criteria_t;
typedef struct vlc_ml_query_params_t vlc_ml_query_params_t;
struct vlc_ml_query_params_t
/**
* Generic parameter set for medialibrary queries.
*
* \warning Should only be default instanciated with ::vlc_ml_query_params_create().
*/
typedef struct vlc_ml_query_params_t
{
const char* psz_pattern;
uint32_t i_nbResults;
uint32_t i_offset;
vlc_ml_sorting_criteria_t i_sort;
bool b_desc;
};
bool b_favorite_only;
} vlc_ml_query_params_t;
enum vlc_ml_get_queries
{
......@@ -471,12 +480,12 @@ enum vlc_ml_list_queries
VLC_ML_COUNT_GROUPS, /**< arg1 (out): size_t* */
VLC_ML_LIST_PLAYLISTS, /**< arg1 (out): vlc_ml_playlist_list_t** */
VLC_ML_COUNT_PLAYLISTS, /**< arg1 (out): size_t* */
VLC_ML_LIST_HISTORY, /**< arg1 (out): vlc_ml_media_list_t** */
VLC_ML_COUNT_HISTORY, /**< arg1 (out): size_t* */
VLC_ML_LIST_HISTORY_BY_TYPE, /**< arg1 vlc_ml_media_type_t: the media type. arg2 (out): vlc_ml_media_list_t** */
VLC_ML_COUNT_HISTORY_BY_TYPE, /**< arg1 vlc_ml_media_type_t: the media type. arg2 (out): vlc_ml_media_list_t** */
VLC_ML_LIST_STREAM_HISTORY, /**< arg1 (out): vlc_ml_media_list_t** */
VLC_ML_COUNT_STREAM_HISTORY, /**< arg1 (out): size_t* */
VLC_ML_LIST_HISTORY, /**< arg1 vlc_ml_history_type_t; arg2 (out): vlc_ml_media_list_t** */
VLC_ML_COUNT_HISTORY, /**< arg1 vlc_ml_history_type_t; arg2 (out): size_t* */
VLC_ML_LIST_VIDEO_HISTORY, /**< arg1 (out): vlc_ml_media_list_t** */
VLC_ML_COUNT_VIDEO_HISTORY, /**< arg1 (out): vlc_ml_media_list_t** */
VLC_ML_LIST_AUDIO_HISTORY, /**< arg1 (out): vlc_ml_media_list_t** */
VLC_ML_COUNT_AUDIO_HISTORY, /**< arg1 (out): vlc_ml_media_list_t** */
VLC_ML_LIST_ENTRY_POINTS, /**< arg1 bool: list_banned; arg2 (out): vlc_ml_folder_list_t** */
VLC_ML_COUNT_ENTRY_POINTS, /**< arg1 bool: list_banned; arg2 (out): size_t* */
VLC_ML_LIST_FOLDERS, /**< arg1 (out): vlc_ml_folder_list_t** */
......@@ -572,7 +581,7 @@ enum vlc_ml_control
VLC_ML_RESUME_BACKGROUND, /**< no args; can't fail */
/* Misc operations */
VLC_ML_CLEAR_HISTORY, /**< no args; can't fail */
VLC_ML_CLEAR_HISTORY, /**< arg1: vlc_ml_history_type_t; can't fail */
/* Create media */
VLC_ML_NEW_EXTERNAL_MEDIA, /**< arg1: const char*; arg2(out): vlc_ml_media_t** */
......@@ -771,7 +780,7 @@ enum vlc_ml_event_type
/**
* Sent after the history gets changed. It can be either cleaned, or simply
* modified because a media was recently played/removed from the history.
* The history type (media/network) is stored in
* The history type (global/local/network) is stored in
* vlc_ml_event_t::history_changed::history_type
*/
VLC_ML_EVENT_HISTORY_CHANGED,
......@@ -1011,9 +1020,9 @@ static inline int vlc_ml_resume_background( vlc_medialibrary_t* p_ml )
return vlc_ml_control( p_ml, VLC_ML_RESUME_BACKGROUND );
}
static inline int vlc_ml_clear_history( vlc_medialibrary_t* p_ml )
static inline int vlc_ml_clear_history( vlc_medialibrary_t* p_ml, vlc_ml_history_type_t type )
{
return vlc_ml_control( p_ml, VLC_ML_CLEAR_HISTORY );
return vlc_ml_control( p_ml, VLC_ML_CLEAR_HISTORY, type );
}
static inline vlc_ml_media_t* vlc_ml_new_external_media( vlc_medialibrary_t* p_ml, const char* psz_mrl )
......@@ -1668,59 +1677,56 @@ static inline size_t vlc_ml_count_media_labels( vlc_medialibrary_t* p_ml, const
return count;
}
static inline vlc_ml_media_list_t* vlc_ml_list_history( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
static inline vlc_ml_media_list_t* vlc_ml_list_history( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, vlc_ml_history_type_t type )
{
vlc_assert( p_ml != NULL );
vlc_ml_media_list_t* res;
if ( vlc_ml_list( p_ml, VLC_ML_LIST_HISTORY, params, &res ) != VLC_SUCCESS )
if ( vlc_ml_list( p_ml, VLC_ML_LIST_HISTORY, params, (int)type, &res ) != VLC_SUCCESS )
return NULL;
return res;
}
static inline size_t vlc_ml_count_history( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
static inline size_t vlc_ml_count_history( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, vlc_ml_history_type_t type )
{
vlc_assert( p_ml != NULL );
size_t count;
if ( vlc_ml_list( p_ml, VLC_ML_COUNT_HISTORY, params, &count ) != VLC_SUCCESS )
if ( vlc_ml_list( p_ml, VLC_ML_COUNT_HISTORY, params, (int)type, &count ) != VLC_SUCCESS )
return 0;
return count;
}
static inline vlc_ml_media_list_t* vlc_ml_list_history_by_type( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, vlc_ml_media_type_t type )
static inline vlc_ml_media_list_t* vlc_ml_list_video_history( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
{
vlc_assert( p_ml != NULL );
vlc_ml_media_list_t* res;
if ( vlc_ml_list( p_ml, VLC_ML_LIST_HISTORY_BY_TYPE, params, (int)type, &res ) != VLC_SUCCESS )
if ( vlc_ml_list( p_ml, VLC_ML_LIST_VIDEO_HISTORY, params, &res ) != VLC_SUCCESS )
return NULL;
return res;
}
static inline size_t vlc_ml_count_history_by_type( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, vlc_ml_media_type_t type )
static inline size_t vlc_ml_count_video_history( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
{
vlc_assert( p_ml != NULL );
size_t count;
if ( vlc_ml_list( p_ml, VLC_ML_COUNT_HISTORY_BY_TYPE, params, (int)type, &count ) != VLC_SUCCESS )
if ( vlc_ml_list( p_ml, VLC_ML_COUNT_VIDEO_HISTORY, params, &count ) != VLC_SUCCESS )
return 0;
return count;
}
static inline vlc_ml_media_list_t* vlc_ml_list_stream_history( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
static inline vlc_ml_media_list_t* vlc_ml_list_audio_history( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
{
vlc_assert( p_ml != NULL );
vlc_ml_media_list_t* res;
if ( vlc_ml_list( p_ml, VLC_ML_LIST_STREAM_HISTORY, params, &res ) != VLC_SUCCESS )
if ( vlc_ml_list( p_ml, VLC_ML_LIST_AUDIO_HISTORY, params, &res ) != VLC_SUCCESS )
return NULL;
return res;
}
static inline size_t vlc_ml_count_stream_history( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
static inline size_t vlc_ml_count_audio_history( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params )
{
vlc_assert( p_ml != NULL );
size_t count;
if ( vlc_ml_list( p_ml, VLC_ML_COUNT_STREAM_HISTORY, params, &count ) != VLC_SUCCESS )
if ( vlc_ml_list( p_ml, VLC_ML_COUNT_AUDIO_HISTORY, params, &count ) != VLC_SUCCESS )
return 0;
return count;
}
......
......@@ -170,7 +170,7 @@ typedef int (*folder_action_f)(vlc_medialibrary_t*, const char*);
if (!_p_libraryInstance) {
return VLC_EACCES;
}
return vlc_ml_clear_history(_p_libraryInstance);
return vlc_ml_clear_history(_p_libraryInstance, VLC_ML_HISTORY_TYPE_GLOBAL);
}
- (void)sortByCriteria:(enum vlc_ml_sorting_criteria_t)sortCriteria andDescending:(bool)descending
......
......@@ -211,7 +211,7 @@ static void libraryCallback(void *p_data, const vlc_ml_event_t *p_event)
object:nil];
dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INTERACTIVE, 0), ^{
const vlc_ml_query_params_t queryParameters = {};
vlc_ml_query_params_t queryParameters = vlc_ml_query_params_create();
// Preload video and audio count for gui
self->_initialVideoCount = vlc_ml_count_video_media(self->_p_mediaLibrary, &queryParameters);
......@@ -219,8 +219,10 @@ static void libraryCallback(void *p_data, const vlc_ml_event_t *p_event)
self->_initialAlbumCount = vlc_ml_count_albums(self->_p_mediaLibrary, &queryParameters);
self->_initialArtistCount = vlc_ml_count_artists(self->_p_mediaLibrary, &queryParameters, true);
self->_initialGenreCount = vlc_ml_count_genres(self->_p_mediaLibrary, &queryParameters);
self->_initialRecentsCount = vlc_ml_count_history_by_type(self->_p_mediaLibrary, &((vlc_ml_query_params_t){ .i_nbResults = self->_recentMediaLimit }), VLC_ML_MEDIA_TYPE_VIDEO);
self->_initialRecentAudioCount = vlc_ml_count_history_by_type(self->_p_mediaLibrary, &((vlc_ml_query_params_t){ .i_nbResults = self->_recentMediaLimit }), VLC_ML_MEDIA_TYPE_AUDIO);
queryParameters.i_nbResults = self->_recentMediaLimit;
self->_initialRecentsCount = vlc_ml_count_video_history(self->_p_mediaLibrary, &queryParameters);
self->_initialRecentAudioCount = vlc_ml_count_audio_history(self->_p_mediaLibrary, &queryParameters);
});
}
return self;
......@@ -468,7 +470,12 @@ static void libraryCallback(void *p_data, const vlc_ml_event_t *p_event)
dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INTERACTIVE, 0), ^{
const vlc_ml_query_params_t queryParameters = { .i_nbResults = countLimit };
// we don't set the sorting criteria here as they are not applicable to history
vlc_ml_media_list_t *p_media_list = vlc_ml_list_history_by_type(self->_p_mediaLibrary, &queryParameters, type);
vlc_ml_media_list_t *p_media_list = NULL;
if (type == VLC_ML_MEDIA_TYPE_VIDEO)
p_media_list = vlc_ml_list_video_history(self->_p_mediaLibrary, &queryParameters);
else if (type == VLC_ML_MEDIA_TYPE_AUDIO)
p_media_list = vlc_ml_list_audio_history(self->_p_mediaLibrary, &queryParameters);
NSArray * const mediaArray = [NSArray arrayFromVlcMediaList:p_media_list];
if (mediaArray == nil) {
return;
......
......@@ -84,8 +84,7 @@ static void convertMLItemToPlaylistMedias(vlc_medialibrary_t* ml, const MLItemId
}
else
{
vlc_ml_query_params_t query;
memset(&query, 0, sizeof(vlc_ml_query_params_t));
vlc_ml_query_params_t query = vlc_ml_query_params_create();
ml_unique_ptr<vlc_ml_media_list_t> media_list(vlc_ml_list_media_of( ml, &query, itemId.type, itemId.id));
if (media_list == nullptr || media_list->i_nb_items == 0)
return;
......@@ -345,8 +344,7 @@ void MediaLib::mlInputItem(const QVector<MLItemId>& itemIdVector, QJSValue callb
{
ml_unique_ptr<vlc_ml_media_list_t> list;
vlc_ml_query_params_t query;
memset(&query, 0, sizeof(vlc_ml_query_params_t));
vlc_ml_query_params_t query = vlc_ml_query_params_create();
list.reset(vlc_ml_list_media_of(ml, &query, mlId.type, mlId.id));
......
......@@ -606,10 +606,9 @@ MLListCacheLoader::MLOp::MLOp(MLItemId parentId, QString searchPattern, vlc_ml_s
vlc_ml_query_params_t MLListCacheLoader::MLOp::getQueryParams(size_t offset, size_t limit) const
{
vlc_ml_query_params_t params;
params.psz_pattern = m_searchPattern.isNull()
? nullptr
: m_searchPattern.constData();
vlc_ml_query_params_t params = vlc_ml_query_params_create();
if (!m_searchPattern.isNull())
params.psz_pattern = m_searchPattern.constData();
params.i_nbResults = limit;
params.i_offset = offset;
params.i_sort = m_sort;
......
......@@ -404,7 +404,7 @@ void MLBookmarkModel::updateMediaId(uint64_t revision, const QString mediaUri)
ctx.newMLid = mlMedia->i_id;
vlc_ml_release( mlMedia );
}
vlc_ml_query_params_t params{};
vlc_ml_query_params_t params = vlc_ml_query_params_create();
params.i_sort = sort;
params.b_desc = desc;
ctx.newBookmarks.reset( vlc_ml_list_media_bookmarks( ml, &params, ctx.newMLid ) );
......@@ -447,7 +447,7 @@ void MLBookmarkModel::refresh(MLBookmarkModel::RefreshOperation forceClear )
//ML thread
[mediaId, sort = m_sort, desc = m_desc]
(vlc_medialibrary_t* ml, Ctx& ctx) {
vlc_ml_query_params_t params{};
vlc_ml_query_params_t params = vlc_ml_query_params_create();
params.i_sort = sort;
params.b_desc = desc;
ctx.newBookmarks.reset( vlc_ml_list_media_bookmarks( ml, &params, mediaId ) );
......
......@@ -127,7 +127,7 @@ QStringList getGenreMediaThumbnails(vlc_medialibrary_t* p_ml, const int count, c
{
QStringList thumbnails;
vlc_ml_query_params_t params {};
vlc_ml_query_params_t params = vlc_ml_query_params_create();
// NOTE: We retrieve twice the count to maximize our chances to get a valid thumbnail.
params.i_nbResults = count * 2;
......@@ -143,7 +143,7 @@ ThumbnailList extractChildMediaThumbnailsOrIDs(vlc_medialibrary_t *p_ml, const i
{
ThumbnailList result;
vlc_ml_query_params_t params {};
vlc_ml_query_params_t params = vlc_ml_query_params_create();
// NOTE: We retrieve twice the count to maximize our chances to get a valid thumbnail.
params.i_nbResults = count * 2;
......
......@@ -48,8 +48,7 @@ const int PLAYLIST_COVERY = 2;
void appendMediaIntoPlaylist(vlc_medialibrary_t* ml, int64_t playlistId, const std::vector<MLItemId>& itemList)
{
vlc_ml_query_params_t query;
memset(&query, 0, sizeof(vlc_ml_query_params_t));
vlc_ml_query_params_t query = vlc_ml_query_params_create();
for (auto itemId : itemList)
{
......@@ -463,9 +462,9 @@ static inline vlc_ml_playlist_type_t qmlToMLPlaylistType(MLPlaylistListModel::Pl
case MLPlaylistListModel::PlaylistType::PLAYLIST_TYPE_ALL:
return VLC_ML_PLAYLIST_TYPE_ALL;
case MLPlaylistListModel::PlaylistType::PLAYLIST_TYPE_AUDIO:
return VLC_ML_PLAYLIST_TYPE_AUDIO;
return VLC_ML_PLAYLIST_TYPE_AUDIO_ONLY;
case MLPlaylistListModel::PlaylistType::PLAYLIST_TYPE_VIDEO:
return VLC_ML_PLAYLIST_TYPE_VIDEO;
return VLC_ML_PLAYLIST_TYPE_VIDEO_ONLY;
default:
vlc_assert_unreachable();
}
......
......@@ -2,10 +2,9 @@
vlc_ml_query_params_t MLQueryParams::toCQueryParams() const
{
vlc_ml_query_params_t params;
params.psz_pattern = searchPatternUtf8.isNull()
? nullptr
: searchPatternUtf8.constData();
vlc_ml_query_params_t params = vlc_ml_query_params_create();
if (!searchPatternUtf8.isNull())
params.psz_pattern = searchPatternUtf8.constData();
params.i_nbResults = nbResults;
params.i_offset = offset;
params.i_sort = sort;
......
......@@ -76,7 +76,7 @@ void MLRecentsModel::clearHistory()
m_mediaLib->runOnMLThread(this,
//ML thread
[](vlc_medialibrary_t* ml){
vlc_ml_clear_history(ml);
vlc_ml_clear_history(ml, VLC_ML_HISTORY_TYPE_GLOBAL);
});
}
......@@ -103,14 +103,14 @@ MLRecentsModel::createMLLoader() const
size_t MLRecentsModel::Loader::count(vlc_medialibrary_t* ml, const vlc_ml_query_params_t* queryParams) const
{
return vlc_ml_count_history( ml, queryParams );
return vlc_ml_count_history( ml, queryParams, VLC_ML_HISTORY_TYPE_GLOBAL );
}
std::vector<std::unique_ptr<MLItem>>
MLRecentsModel::Loader::load(vlc_medialibrary_t* ml, const vlc_ml_query_params_t* queryParams) const
{
ml_unique_ptr<vlc_ml_media_list_t> media_list{ vlc_ml_list_history(
ml, queryParams ) };
ml, queryParams, VLC_ML_HISTORY_TYPE_GLOBAL ) };
if ( media_list == nullptr )
return {};
......
......@@ -52,14 +52,14 @@ void MLRecentsVideoModel::onVlcMlEvent(const MLEvent & event) /* override */
size_t MLRecentsVideoModel::Loader::count(vlc_medialibrary_t* ml, const vlc_ml_query_params_t* queryParams) const /* override */
{
return vlc_ml_count_history_by_type(ml, queryParams, VLC_ML_MEDIA_TYPE_VIDEO);
return vlc_ml_count_video_history(ml, queryParams);
}
std::vector<std::unique_ptr<MLItem>>
MLRecentsVideoModel::Loader::load(vlc_medialibrary_t* ml, const vlc_ml_query_params_t* queryParams) const /* override */
{
ml_unique_ptr<vlc_ml_media_list_t> media_list {
vlc_ml_list_history_by_type(ml, queryParams, VLC_ML_MEDIA_TYPE_VIDEO)
vlc_ml_list_video_history(ml, queryParams)
};
if (media_list == nullptr)
......
......@@ -164,14 +164,14 @@ MLUrlModel::createMLLoader() const
size_t MLUrlModel::Loader::count(vlc_medialibrary_t* ml, const vlc_ml_query_params_t* queryParams) const
{
return vlc_ml_count_stream_history( ml, queryParams );
return vlc_ml_count_history( ml, queryParams, VLC_ML_HISTORY_TYPE_NETWORK );
}
std::vector<std::unique_ptr<MLItem>>
MLUrlModel::Loader::load(vlc_medialibrary_t* ml, const vlc_ml_query_params_t* queryParams) const
{
ml_unique_ptr<vlc_ml_media_list_t> media_list;
media_list.reset( vlc_ml_list_stream_history(ml, queryParams) );
media_list.reset( vlc_ml_list_history(ml, queryParams, VLC_ML_HISTORY_TYPE_NETWORK) );
if ( media_list == nullptr )
return {};
......
......@@ -256,9 +256,7 @@ MLVideoGroupsModel::Loader::load(vlc_medialibrary_t* ml,
// NOTE: When it's a group of one we convert it to a MLVideo.
if (group.i_nb_total_media == 1)
{
vlc_ml_query_params_t query;
memset(&query, 0, sizeof(vlc_ml_query_params_t));
vlc_ml_query_params_t query = vlc_ml_query_params_create();
ml_unique_ptr<vlc_ml_media_list_t> list(vlc_ml_list_group_media(ml,
&query, group.i_id));
......
......@@ -248,16 +248,16 @@ static int vlclua_ml_list_show( lua_State* L, vlc_ml_show_list_t* list )
static void vlclua_ml_assign_params( lua_State *L, vlc_ml_query_params_t *params, uint8_t paramIndex )
{
*params = vlc_ml_query_params_create();
if (!lua_istable(L, paramIndex))
{
memset(params, 0, sizeof(*params));
return;
}
lua_getfield(L, 1, "favorite_only" );
lua_getfield(L, 1, "limit" );
lua_getfield(L, 1, "offset" );
lua_getfield(L, 1, "desc" );
lua_getfield(L, 1, "sort" );
lua_getfield(L, 1, "pattern" );
params->b_favorite_only = lua_toboolean( L, -6 );
params->i_nbResults = lua_tointeger( L, -5 );
params->i_offset = lua_tointeger( L, -4 );
params->b_desc = lua_toboolean( L, -3 );
......
......@@ -136,7 +136,7 @@ void MetadataExtractor::populateItem( medialibrary::parser::IItem& item, input_i
item.setDuration( MS_FROM_VLC_TICK(inputItem->i_duration) );
for ( auto i = 0; i < inputItem->es_vec.size; ++i )
for ( auto i = 0u; i < inputItem->es_vec.size; ++i )
{
medialibrary::parser::IItem::Track t;
const es_format_t *p_es = &inputItem->es_vec.data[i].es;
......
......@@ -485,6 +485,8 @@ bool Convert( const medialibrary::IFolder* input, vlc_ml_folder_t& output )
output.i_nb_audio = input->nbAudio();
output.i_nb_video = input->nbVideo();
output.i_duration = input->duration();
output.b_banned = input->isBanned();
if ( strdup_helper( input->name(), output.psz_name ) == false )
......