mirror of https://code.videolan.org/videolan/vlc
medialibrary: Add playlist support
Signed-off-by: Pierre Lamot <pierre@videolabs.io>
This commit is contained in:
parent
fac2d91c88
commit
b431e9da08
|
@ -498,6 +498,11 @@ enum vlc_ml_control
|
|||
VLC_ML_MEDIA_REMOVE_BOOKMARK, /**< arg1: media id; arg2: int64_t */
|
||||
VLC_ML_MEDIA_REMOVE_ALL_BOOKMARKS, /**< arg1: media id */
|
||||
VLC_ML_MEDIA_UPDATE_BOOKMARK, /**< arg1: media id; arg2: int64_t; arg3: const char*; arg4: const char* */
|
||||
|
||||
/* 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 */
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -1045,6 +1050,35 @@ vlc_ml_media_remove_all_bookmarks( vlc_medialibrary_t* p_ml, int64_t i_media_id
|
|||
return vlc_ml_control( p_ml, VLC_ML_MEDIA_REMOVE_ALL_BOOKMARKS, i_media_id );
|
||||
}
|
||||
|
||||
static inline vlc_ml_playlist_t*
|
||||
vlc_ml_playlist_create( vlc_medialibrary_t * p_ml, const char * name)
|
||||
{
|
||||
assert( p_ml != NULL );
|
||||
|
||||
vlc_ml_playlist_t* result;
|
||||
|
||||
if (vlc_ml_control( p_ml, VLC_ML_PLAYLIST_CREATE, name, &result ) != VLC_SUCCESS )
|
||||
return NULL;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static inline int
|
||||
vlc_ml_playlist_delete( vlc_medialibrary_t * p_ml, int64_t i_playlist_id )
|
||||
{
|
||||
assert( p_ml != NULL );
|
||||
|
||||
return vlc_ml_control( p_ml, VLC_ML_PLAYLIST_DELETE, i_playlist_id );
|
||||
}
|
||||
|
||||
static inline int
|
||||
vlc_ml_playlist_append( vlc_medialibrary_t * p_ml, int64_t i_playlist_id, int64_t i_media_id )
|
||||
{
|
||||
assert( p_ml != NULL );
|
||||
|
||||
return vlc_ml_control( p_ml, VLC_ML_PLAYLIST_APPEND, i_playlist_id, i_media_id );
|
||||
}
|
||||
|
||||
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 );
|
||||
|
|
|
@ -623,6 +623,31 @@ int MediaLibrary::Control( int query, va_list args )
|
|||
case VLC_ML_MEDIA_REMOVE_ALL_BOOKMARKS:
|
||||
case VLC_ML_MEDIA_UPDATE_BOOKMARK:
|
||||
return controlMedia( query, args );
|
||||
case VLC_ML_PLAYLIST_CREATE:
|
||||
{
|
||||
auto name = va_arg( args, const char * );
|
||||
auto playlist = m_ml->createPlaylist( name );
|
||||
if ( playlist == nullptr )
|
||||
return VLC_EGENERIC;
|
||||
auto result = va_arg( args, vlc_ml_playlist_t** );
|
||||
*result = CreateAndConvert<vlc_ml_playlist_t>( playlist.get() );
|
||||
return VLC_SUCCESS;
|
||||
}
|
||||
case VLC_ML_PLAYLIST_DELETE:
|
||||
{
|
||||
if ( m_ml->deletePlaylist( va_arg( args, int64_t ) ) == false )
|
||||
return VLC_EGENERIC;
|
||||
return VLC_SUCCESS;
|
||||
}
|
||||
case VLC_ML_PLAYLIST_APPEND:
|
||||
{
|
||||
auto playlist = m_ml->playlist( va_arg( args, int64_t ) );
|
||||
if ( playlist == nullptr )
|
||||
return VLC_EGENERIC;
|
||||
if ( playlist->append(va_arg( args, int64_t )) == false )
|
||||
return VLC_EGENERIC;
|
||||
return VLC_SUCCESS;
|
||||
}
|
||||
default:
|
||||
return VLC_EGENERIC;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue