mirror of https://code.videolan.org/videolan/vlc
medialibrary: Add playlist insert, move and remove
Signed-off-by: Pierre Lamot <pierre@videolabs.io>
This commit is contained in:
parent
de9d4165a5
commit
5a5b2836a2
|
@ -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 );
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue