X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc_playlist.h;h=49372b288904b4aae1976cc4705254615bca5243;hb=88a9bbf30fcb8a5371440699d6cce7e12b7667fe;hp=d11f65d0216067f21170594accd2ca1629af0912;hpb=bad878b521c47f66ee4cde3ed75d1db362f3c2fc;p=vlc diff --git a/include/vlc_playlist.h b/include/vlc_playlist.h index d11f65d021..49372b2889 100644 --- a/include/vlc_playlist.h +++ b/include/vlc_playlist.h @@ -153,33 +153,16 @@ struct playlist_item_t typedef enum { PLAYLIST_STOPPED,PLAYLIST_RUNNING,PLAYLIST_PAUSED } playlist_status_t; -typedef struct playlist_private_t playlist_private_t; - /** Structure containing information about the playlist */ struct playlist_t { VLC_COMMON_MEMBERS - struct playlist_services_discovery_support_t { - /* the playlist items for category and onelevel */ - playlist_item_t* p_cat; - playlist_item_t* p_one; - services_discovery_t * p_sd; /**< Loaded service discovery modules */ - } ** pp_sds; - int i_sds; /**< Number of service discovery modules */ - playlist_item_array_t items; /**< Arrays of items */ playlist_item_array_t all_items; /**< Array of items and nodes */ - playlist_item_array_t items_to_delete; /**< Array of items and nodes to - delete... At the very end. This sucks. */ playlist_item_array_t current; /**< Items currently being played */ int i_current_index; /**< Index in current array */ - /** Reset current item array */ - bool b_reset_currently_playing; - mtime_t last_rebuild_date; - - int i_last_playlist_id; /**< Last id to an item */ /* Predefined items */ playlist_item_t * p_root_category; /**< Root of category tree */ @@ -188,46 +171,6 @@ struct playlist_t playlist_item_t * p_ml_category; /** < "Library" in CATEGORY view */ playlist_item_t * p_local_onelevel; /** < "Playlist" in ONELEVEL view */ playlist_item_t * p_ml_onelevel; /** < "Library" in ONELEVEL view */ - - bool b_tree; /**< Display as a tree */ - - bool b_doing_ml; /**< Doing media library stuff, - * get quicker */ - bool b_auto_preparse; - - /* Runtime */ - input_thread_t * p_input; /**< the input thread associated - * with the current item */ - int i_sort; /**< Last sorting applied to the playlist */ - int i_order; /**< Last ordering applied to the playlist */ - mtime_t gc_date; - bool b_cant_sleep; - - struct { - /* Current status. These fields are readonly, only the playlist - * main loop can touch it*/ - playlist_status_t i_status; /**< Current status of playlist */ - playlist_item_t * p_item; /**< Currently playing/active item */ - playlist_item_t * p_node; /**< Current node to play from */ - } status; - - struct { - /* Request. Use this to give orders to the playlist main loop */ - playlist_status_t i_status; /**< requested playlist status */ - playlist_item_t * p_node; /**< requested node to play from */ - playlist_item_t * p_item; /**< requested item to play in the node */ - - int i_skip; /**< Number of items to skip */ - - bool b_request;/**< Set to true by the requester - The playlist sets it back to false - when processing the request */ - vlc_mutex_t lock; /**< Lock to protect request */ - } request; - - /* All other data is PRIVATE. You can't access it - * outside of src/input */ - playlist_private_t *p; }; /** Helper to add an item */ @@ -250,6 +193,7 @@ struct playlist_add_t #define SORT_TRACK_NUMBER 9 #define SORT_DESCRIPTION 10 #define SORT_RATING 11 +#define SORT_URI 12 #define ORDER_NORMAL 0 #define ORDER_REVERSE 1 @@ -278,8 +222,8 @@ enum pl_locked_state #define PL_LOCK vlc_object_lock( p_playlist ) #define PL_UNLOCK vlc_object_unlock( p_playlist ) -VLC_EXPORT( playlist_t *, __pl_Yield, ( vlc_object_t * ) ); -#define pl_Yield( a ) __pl_Yield( VLC_OBJECT(a) ) +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) ) @@ -321,19 +265,15 @@ 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 *) ); -/********************** 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 *)); - /* 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 @@ -344,6 +284,17 @@ VLC_EXPORT( int, playlist_RecursiveNodeSort, ( playlist_t *, playlist_item_t *, */ 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 ********************************************************/ @@ -365,9 +316,6 @@ VLC_EXPORT( playlist_item_t* , playlist_ItemNewWithType, ( playlist_t *,const ch /*************************** Item deletion **************************/ VLC_EXPORT( int, playlist_DeleteFromInput, ( playlist_t *, int, bool ) ); -/*************************** Item fields accessors **************************/ -VLC_EXPORT( int, playlist_ItemSetName, (playlist_item_t *, const char * ) ); - /******************** 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 ) ); @@ -425,31 +373,21 @@ static inline int playlist_Import( playlist_t *p_playlist, const char *psz_file) #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_Yield( 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 currently running */ -#define playlist_IsPlaying( pl ) ( pl->status.i_status == PLAYLIST_RUNNING && \ - !(pl->request.b_request && pl->request.i_status == PLAYLIST_STOPPED) ) - -#define playlist_IsStopped( pl ) ( pl->status.i_status == PLAYLIST_STOPPED || \ - (pl->request.b_request && pl->request.i_status == PLAYLIST_STOPPED) ) - /** 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 -/** Tell the current item id in current playing context */ -#define playlist_CurrentId( pl ) pl->status.p_item->i_id - /** Ask the playlist to do some work */ -#define playlist_Signal( p_playlist ) vlc_object_signal( p_playlist ) +VLC_EXPORT( void, playlist_Signal, ( playlist_t * ) ); /** @} */ # ifdef __cplusplus