📄 vlc_playlist.h
字号:
/* Used by playlist_Import */#define PLAYLIST_INSERT 0x0001#define PLAYLIST_APPEND 0x0002#define PLAYLIST_GO 0x0004#define PLAYLIST_PREPARSE 0x0008#define PLAYLIST_SPREPARSE 0x0010#define PLAYLIST_NO_REBUILD 0x0020#define PLAYLIST_END -666enum pl_locked_state{ pl_Locked = true, pl_Unlocked = false};/***************************************************************************** * Prototypes *****************************************************************************//* Helpers */#define PL_LOCK vlc_object_lock( p_playlist )#define PL_UNLOCK vlc_object_unlock( p_playlist )VLC_EXPORT( playlist_t *, __pl_Hold, ( vlc_object_t * ) );#define pl_Hold( a ) __pl_Hold( VLC_OBJECT(a) )VLC_EXPORT( void, __pl_Release, ( vlc_object_t * ) );#define pl_Release(a) __pl_Release( VLC_OBJECT(a) )/* Playlist control */#define playlist_Play(p) playlist_Control(p,PLAYLIST_PLAY, pl_Unlocked )#define playlist_Pause(p) playlist_Control(p,PLAYLIST_PAUSE, pl_Unlocked )#define playlist_Stop(p) playlist_Control(p,PLAYLIST_STOP, pl_Unlocked )#define playlist_Next(p) playlist_Control(p,PLAYLIST_SKIP, pl_Unlocked, 1)#define playlist_Prev(p) playlist_Control(p,PLAYLIST_SKIP, pl_Unlocked, -1)#define playlist_Skip(p,i) playlist_Control(p,PLAYLIST_SKIP, pl_Unlocked, i)/** * Do a playlist action. * If there is something in the playlist then you can do playlist actions. * Possible queries are listed in vlc_common.h * \param p_playlist the playlist to do the command on * \param i_query the command to do * \param b_locked TRUE if playlist is locked when entering this function * \param variable number of arguments * \return VLC_SUCCESS or an error */VLC_EXPORT( int, playlist_Control, ( playlist_t *p_playlist, int i_query, bool b_locked, ... ) );/** Get current playing input. The object is retained. */VLC_EXPORT( input_thread_t *, playlist_CurrentInput, ( playlist_t *p_playlist ) );/** Clear the playlist * \param b_locked TRUE if playlist is locked when entering this function */VLC_EXPORT( void, playlist_Clear, ( playlist_t *, bool ) );/** Enqueue an input item for preparsing */VLC_EXPORT( int, playlist_PreparseEnqueue, (playlist_t *, input_item_t *) );/** Enqueue a playlist item and all of its children if any for preparsing */VLC_EXPORT( int, playlist_PreparseEnqueueItem, (playlist_t *, playlist_item_t *) );/** Request the art for an input item to be fetched */VLC_EXPORT( int, playlist_AskForArtEnqueue, (playlist_t *, input_item_t *) );/* Playlist sorting */VLC_EXPORT( int, playlist_TreeMove, ( playlist_t *, playlist_item_t *, playlist_item_t *, int ) );VLC_EXPORT( int, playlist_RecursiveNodeSort, ( playlist_t *, playlist_item_t *,int, int ) );VLC_EXPORT( playlist_item_t *, playlist_CurrentPlayingItem, ( playlist_t * ) );VLC_EXPORT( int, playlist_CurrentId, ( playlist_t * ) );VLC_EXPORT( bool, playlist_IsPlaying, ( playlist_t * ) );VLC_EXPORT( int, playlist_Status, ( playlist_t * ) );/** * Export a node of the playlist to a certain type of playlistfile * \param p_playlist the playlist to export * \param psz_filename the location where the exported file will be saved * \param p_export_root the root node to export * \param psz_type the type of playlist file to create (m3u, pls, ..) * \return VLC_SUCCESS on success */VLC_EXPORT( int, playlist_Export, ( playlist_t *p_playlist, const char *psz_name, playlist_item_t *p_export_root, const char *psz_type ) );/********************** Services discovery ***********************//** Add a list of comma-separated service discovery modules */VLC_EXPORT( int, playlist_ServicesDiscoveryAdd, (playlist_t *, const char *));/** Remove a services discovery module by name */VLC_EXPORT( int, playlist_ServicesDiscoveryRemove, (playlist_t *, const char *));/** Check whether a given SD is loaded */VLC_EXPORT( bool, playlist_IsServicesDiscoveryLoaded, ( playlist_t *,const char *));/******************************************************** * Item management ********************************************************//*************************** Item creation **************************/VLC_EXPORT( playlist_item_t* , playlist_ItemNewWithType, ( playlist_t *,const char *,const char *, int , const char *const *, int, int) );/** Create a new item, without adding it to the playlist * \param p_obj a vlc object (anyone will do) * \param psz_uri the mrl of the item * \param psz_name a text giving a name or description of the item * \return the new item or NULL on failure */#define playlist_ItemNew( a , b, c ) \ playlist_ItemNewWithType( VLC_OBJECT(a) , b , c, 0, NULL, -1, 0 )/*************************** Item deletion **************************/VLC_EXPORT( int, playlist_DeleteFromInput, ( playlist_t *, int, bool ) );/******************** Item addition ********************/VLC_EXPORT( int, playlist_Add, ( playlist_t *, const char *, const char *, int, int, bool, bool ) );VLC_EXPORT( int, playlist_AddExt, ( playlist_t *, const char *, const char *, int, int, mtime_t, const char *const *,int, bool, bool ) );VLC_EXPORT( int, playlist_AddInput, ( playlist_t *, input_item_t *, int, int, bool, bool ) );VLC_EXPORT( int, playlist_BothAddInput, ( playlist_t *, input_item_t *,playlist_item_t *,int , int, int*, int*, bool ) );/********************** Misc item operations **********************/VLC_EXPORT( playlist_item_t*, playlist_ItemToNode, (playlist_t *,playlist_item_t *, bool) );/********************************** Item search *************************/VLC_EXPORT( playlist_item_t *, playlist_ItemGetById, (playlist_t *, int, bool ) );VLC_EXPORT( playlist_item_t *, playlist_ItemGetByInput, (playlist_t *,input_item_t *, bool ) );VLC_EXPORT( playlist_item_t *, playlist_ItemGetByInputId, (playlist_t *, int, playlist_item_t *) );VLC_EXPORT( int, playlist_LiveSearchUpdate, (playlist_t *, playlist_item_t *, const char *) );/******************************************************** * Tree management ********************************************************/VLC_EXPORT( int, playlist_NodeChildrenCount, (playlist_t *,playlist_item_t* ) );/* Node management */VLC_EXPORT( playlist_item_t *, playlist_NodeCreate, ( playlist_t *, const char *, playlist_item_t * p_parent, int i_flags, input_item_t * ) );VLC_EXPORT( int, playlist_NodeAppend, (playlist_t *,playlist_item_t*,playlist_item_t *) );VLC_EXPORT( int, playlist_NodeInsert, (playlist_t *,playlist_item_t*,playlist_item_t *, int) );VLC_EXPORT( int, playlist_NodeRemoveItem, (playlist_t *,playlist_item_t*,playlist_item_t *) );VLC_EXPORT( playlist_item_t *, playlist_ChildSearchName, (playlist_item_t*, const char* ) );VLC_EXPORT( int, playlist_NodeDelete, ( playlist_t *, playlist_item_t *, bool , bool ) );VLC_EXPORT( int, playlist_NodeEmpty, ( playlist_t *, playlist_item_t *, bool ) );VLC_EXPORT( void, playlist_NodesPairCreate, (playlist_t *, const char *, playlist_item_t **, playlist_item_t **, bool ) );VLC_EXPORT( playlist_item_t *, playlist_GetPreferredNode, ( playlist_t *p_playlist, playlist_item_t *p_node ) );VLC_EXPORT( playlist_item_t *, playlist_GetNextLeaf, ( playlist_t *p_playlist, playlist_item_t *p_root, playlist_item_t *p_item, bool b_ena, bool b_unplayed ) );VLC_EXPORT( playlist_item_t *, playlist_GetPrevLeaf, ( playlist_t *p_playlist, playlist_item_t *p_root, playlist_item_t *p_item, bool b_ena, bool b_unplayed ) );VLC_EXPORT( playlist_item_t *, playlist_GetLastLeaf, ( playlist_t *p_playlist, playlist_item_t *p_root ) );/*********************************************************************** * Inline functions ***********************************************************************//** Open a playlist file, add its content to the current playlist */static inline int playlist_Import( playlist_t *p_playlist, const char *psz_file){ char psz_uri[256+10]; input_item_t *p_input; snprintf( psz_uri, 256+9, "file/://%s", psz_file ); const char *const psz_option = "meta-file"; p_input = input_item_NewExt( p_playlist, psz_uri, psz_file, 1, &psz_option, -1 ); playlist_AddInput( p_playlist, p_input, PLAYLIST_APPEND, PLAYLIST_END, true, false ); input_Read( p_playlist, p_input, true ); return VLC_SUCCESS;}/** Small helper tp get current playing input or NULL. Release the input after use. */#define pl_CurrentInput(a) __pl_CurrentInput( VLC_OBJECT(a) )static inline input_thread_t * __pl_CurrentInput( vlc_object_t * p_this ){ playlist_t * p_playlist = pl_Hold( p_this ); if( !p_playlist ) return NULL; input_thread_t * p_input = playlist_CurrentInput( p_playlist ); pl_Release( p_this ); return p_input;}/** Tell if the playlist is empty */#define playlist_IsEmpty( pl ) ( pl->items.i_size == 0 )/** Tell the number of items in the current playing context */#define playlist_CurrentSize( pl ) pl->current.i_size/** Ask the playlist to do some work */VLC_EXPORT( void, playlist_Signal, ( playlist_t * ) );/** @} */# ifdef __cplusplus}# endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -