vlc | branch: master | Benjamin Arnaud <benjamin.arn...@videolabs.io> | Thu Mar 11 10:16:45 2021 +0100| [5a5b2836a2bdc9e5d6e235554a8efd1991b18ab8] | committer: Pierre Lamot
medialibrary: Add playlist insert, move and remove Signed-off-by: Pierre Lamot <pie...@videolabs.io> > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=5a5b2836a2bdc9e5d6e235554a8efd1991b18ab8 --- include/vlc_media_library.h | 31 ++++++++++++++++++++++++++++- modules/misc/medialibrary/medialibrary.cpp | 32 ++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 1 deletion(-) diff --git a/include/vlc_media_library.h b/include/vlc_media_library.h index ab8bcf14d8..eeaa1460f6 100644 --- a/include/vlc_media_library.h +++ b/include/vlc_media_library.h @@ -503,7 +503,10 @@ enum vlc_ml_control /* Playlist management */ VLC_ML_PLAYLIST_CREATE, /**< arg1: const char*; arg2(out): vlc_ml_playlist_t**; can fail */ VLC_ML_PLAYLIST_DELETE, /**< arg1: playlist id; can fail */ - VLC_ML_PLAYLIST_APPEND /**< arg1: playlist id; arg2: media id; can fail */ + VLC_ML_PLAYLIST_APPEND, /**< arg1: playlist id; arg2: media id; can fail */ + VLC_ML_PLAYLIST_INSERT, /**< arg1: playlist id; arg2: media id; arg3: position; can fail */ + VLC_ML_PLAYLIST_MOVE, /**< arg1: playlist id; arg2: from; arg3: to; can fail */ + VLC_ML_PLAYLIST_REMOVE /**< arg1: playlist id; arg2: position; can fail */ }; /** @@ -1086,6 +1089,32 @@ vlc_ml_playlist_append( vlc_medialibrary_t * p_ml, int64_t i_playlist_id, int64_ return vlc_ml_control( p_ml, VLC_ML_PLAYLIST_APPEND, i_playlist_id, i_media_id ); } +static inline int +vlc_ml_playlist_insert( vlc_medialibrary_t * p_ml, int64_t i_playlist_id, int64_t i_media_id, + uint32_t i_position ) +{ + assert( p_ml != NULL ); + + return vlc_ml_control( p_ml, VLC_ML_PLAYLIST_INSERT, i_playlist_id, i_media_id, i_position ); +} + +static inline int +vlc_ml_playlist_move( vlc_medialibrary_t * p_ml, + int64_t i_playlist_id, uint32_t i_from, uint32_t i_to ) +{ + assert( p_ml != NULL ); + + return vlc_ml_control( p_ml, VLC_ML_PLAYLIST_MOVE, i_playlist_id, i_from, i_to ); +} + +static inline int +vlc_ml_playlist_remove( vlc_medialibrary_t * p_ml, int64_t i_playlist_id, uint32_t i_position ) +{ + assert( p_ml != NULL ); + + return vlc_ml_control( p_ml, VLC_ML_PLAYLIST_REMOVE, i_playlist_id, i_position ); +} + static inline vlc_ml_media_t* vlc_ml_get_media( vlc_medialibrary_t* p_ml, int64_t i_media_id ) { return (vlc_ml_media_t*)vlc_ml_get( p_ml, VLC_ML_GET_MEDIA, i_media_id ); diff --git a/modules/misc/medialibrary/medialibrary.cpp b/modules/misc/medialibrary/medialibrary.cpp index fb3d158706..7f9c218c3d 100644 --- a/modules/misc/medialibrary/medialibrary.cpp +++ b/modules/misc/medialibrary/medialibrary.cpp @@ -651,6 +651,38 @@ int MediaLibrary::Control( int query, va_list args ) return VLC_EGENERIC; return VLC_SUCCESS; } + case VLC_ML_PLAYLIST_INSERT: + { + auto playlist = m_ml->playlist( va_arg( args, int64_t ) ); + if ( playlist == nullptr ) + return VLC_EGENERIC; + int64_t mediaId = va_arg( args, int64_t ); + uint32_t position = va_arg( args, uint32_t ); + if ( playlist->add(mediaId, position) == false ) + return VLC_EGENERIC; + return VLC_SUCCESS; + } + case VLC_ML_PLAYLIST_MOVE: + { + auto playlist = m_ml->playlist( va_arg( args, int64_t ) ); + if ( playlist == nullptr ) + return VLC_EGENERIC; + uint32_t from = va_arg( args, uint32_t ); + uint32_t to = va_arg( args, uint32_t ); + if ( playlist->move(from, to) == false ) + return VLC_EGENERIC; + return VLC_SUCCESS; + } + case VLC_ML_PLAYLIST_REMOVE: + { + auto playlist = m_ml->playlist( va_arg( args, int64_t ) ); + if ( playlist == nullptr ) + return VLC_EGENERIC; + uint32_t position = va_arg( args, uint32_t ); + if ( playlist->remove(position) == false ) + return VLC_EGENERIC; + return VLC_SUCCESS; + } default: return VLC_EGENERIC; } _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits