VLC
3.0.15
|
Go to the source code of this file.
Data Structures | |
struct | playlist_item_array_t |
struct | playlist_export_t |
Helper structure to export to file part of the playlist. More... | |
struct | playlist_item_t |
playlist item / node More... | |
struct | playlist_t |
Structure containing information about the playlist. More... | |
Macros | |
#define | VLC_DEFINE_SORT_FUNCTIONS |
#define | DEF(s) s, |
#define | PLAYLIST_END -1 |
#define | PL_LOCK playlist_Lock( p_playlist ) |
#define | PL_UNLOCK playlist_Unlock( p_playlist ) |
#define | PL_ASSERT_LOCKED playlist_AssertLocked( p_playlist ) |
#define | playlist_Play(p) playlist_Control(p,PLAYLIST_PLAY, pl_Unlocked ) |
#define | playlist_TogglePause(p) playlist_Control(p, PLAYLIST_TOGGLE_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) ) |
#define | playlist_Pause(p) playlist_Control(p, PLAYLIST_PAUSE, pl_Unlocked) |
#define | playlist_Resume(p) playlist_Control(p, PLAYLIST_RESUME, pl_Unlocked) |
#define | playlist_VolumeDown(a, b, c) playlist_VolumeUp(a, -(b), c) |
Typedefs | |
typedef struct playlist_export_t | playlist_export_t |
Helper structure to export to file part of the playlist. More... | |
Enumerations | |
enum | playlist_item_flags_e { PLAYLIST_DBL_FLAG = 0x04, PLAYLIST_RO_FLAG = 0x08, PLAYLIST_SUBITEM_STOP_FLAG = 0x40, PLAYLIST_NO_INHERIT_FLAG = 0x80 } |
enum | playlist_status_t { PLAYLIST_STOPPED, PLAYLIST_RUNNING, PLAYLIST_PAUSED } |
Playlist status. More... | |
enum | { SORT_ID, SORT_TITLE, SORT_TITLE_NODES_FIRST, SORT_ARTIST, SORT_GENRE, SORT_DURATION, SORT_TITLE_NUMERIC, SORT_ALBUM, SORT_TRACK_NUMBER, SORT_DESCRIPTION, SORT_RATING, SORT_URI, SORT_DISC_NUMBER, SORT_DATE, SORT_RANDOM, NUM_SORT_FNS =SORT_RANDOM } |
enum | { ORDER_NORMAL = 0, ORDER_REVERSE = 1 } |
enum | pl_locked_state { pl_Locked = true, pl_Unlocked = false } |
enum | { PLAYLIST_PLAY, PLAYLIST_VIEWPLAY, PLAYLIST_TOGGLE_PAUSE, PLAYLIST_STOP, PLAYLIST_SKIP, PLAYLIST_PAUSE, PLAYLIST_RESUME } |
Playlist commands. More... | |
Functions | |
void | playlist_Lock (playlist_t *) |
Locks the playlist. More... | |
void | playlist_Unlock (playlist_t *) |
Unlocks the playlist. More... | |
void | playlist_AssertLocked (playlist_t *) |
void | playlist_Deactivate (playlist_t *) |
Stops the playlist forever (but do not destroy it yet). More... | |
void | playlist_Control (playlist_t *p_playlist, int i_query, int b_locked,...) |
Do a playlist action. More... | |
static void | playlist_ViewPlay (playlist_t *pl, playlist_item_t *node, playlist_item_t *item) |
input_thread_t * | playlist_CurrentInput (playlist_t *p_playlist) |
Get current playing input. More... | |
input_thread_t * | playlist_CurrentInputLocked (playlist_t *p_playlist) |
Get current playing input. More... | |
mtime_t | playlist_GetNodeDuration (playlist_item_t *) |
Get the duration of all items in a node. More... | |
void | playlist_Clear (playlist_t *, bool) |
Clear the playlist. More... | |
int | playlist_TreeMove (playlist_t *, playlist_item_t *, playlist_item_t *, int) |
Moves an item. More... | |
int | playlist_TreeMoveMany (playlist_t *, int, playlist_item_t **, playlist_item_t *, int) |
Moves an array of items. More... | |
int | playlist_RecursiveNodeSort (playlist_t *, playlist_item_t *, int, int) |
Sort a node recursively. More... | |
playlist_item_t * | playlist_CurrentPlayingItem (playlist_t *) |
int | playlist_Status (playlist_t *) |
int | playlist_Export (playlist_t *p_playlist, const char *psz_name, bool b_playlist, const char *psz_type) |
Export a node of the playlist to a certain type of playlistfile. More... | |
int | playlist_Import (playlist_t *p_playlist, const char *psz_file) |
Open a playlist file, add its content to the current playlist. More... | |
int | playlist_ServicesDiscoveryAdd (playlist_t *, const char *) |
Add a service discovery module. More... | |
int | playlist_ServicesDiscoveryRemove (playlist_t *, const char *) |
Remove a services discovery module by name. More... | |
bool | playlist_IsServicesDiscoveryLoaded (playlist_t *, const char *) |
Check whether a given SD is loaded. More... | |
int | playlist_ServicesDiscoveryControl (playlist_t *, const char *, int,...) |
Query a services discovery. More... | |
int | playlist_SetRenderer (playlist_t *p_pl, vlc_renderer_item_t *p_item) |
Sets a renderer or remove the current one. More... | |
int | playlist_Add (playlist_t *, const char *, bool) |
Playlist add. More... | |
int | playlist_AddExt (playlist_t *, const char *, const char *, bool, int, const char *const *, unsigned, bool) |
Add a MRL into the playlist or the media library, duration and options given. More... | |
int | playlist_AddInput (playlist_t *, input_item_t *, bool, bool) |
Add an input item to the playlist node. More... | |
playlist_item_t * | playlist_NodeAddInput (playlist_t *, input_item_t *, playlist_item_t *, int) |
Add an input item to a given node. More... | |
int | playlist_NodeAddCopy (playlist_t *, playlist_item_t *, playlist_item_t *, int) |
Copy an item (and all its children, if any) into another node. More... | |
playlist_item_t * | playlist_ItemGetById (playlist_t *, int) |
Finds a playlist item by ID. More... | |
playlist_item_t * | playlist_ItemGetByInput (playlist_t *, const input_item_t *) |
Finds a playlist item by input item. More... | |
int | playlist_LiveSearchUpdate (playlist_t *, playlist_item_t *, const char *, bool) |
Launch the recursive search in the playlist. More... | |
playlist_item_t * | playlist_NodeCreate (playlist_t *, const char *, playlist_item_t *p_parent, int i_pos, int i_flags) |
Create a playlist node. More... | |
playlist_item_t * | playlist_ChildSearchName (playlist_item_t *, const char *) |
Search a child of a node by its name. More... | |
void | playlist_NodeDelete (playlist_t *, playlist_item_t *) |
Remove all the children of a node and removes the node. More... | |
audio_output_t * | playlist_GetAout (playlist_t *) |
float | playlist_VolumeGet (playlist_t *) |
int | playlist_VolumeSet (playlist_t *, float) |
int | playlist_VolumeUp (playlist_t *, int, float *) |
Raises the volume. More... | |
int | playlist_MuteSet (playlist_t *, bool) |
int | playlist_MuteGet (playlist_t *) |
static int | playlist_MuteToggle (playlist_t *pl) |
void | playlist_EnableAudioFilter (playlist_t *, const char *, bool) |
static bool | playlist_IsEmpty (playlist_t *p_playlist) |
Tell if the playlist is empty. More... | |
static int | playlist_CurrentSize (playlist_t *p_playlist) |
Tell the number of items in the current playing context. More... | |
VLC playlist control interface
The VLC playlist system has a tree structure. This allows advanced categorization, like for SAP streams (which are grouped by "sap groups").
The base structure for all playlist operations is the playlist_item_t. This is essentially a node within the playlist tree. Each playlist item references an input_item_t which contains the input stream info, such as location, name and meta-data.
A playlist item is uniquely identified by its input item: playlist_ItemGetByInput(). A single input item cannot be used by more than one playlist item at a time; if necessary, a copy of the input item can be made instead.
The same playlist tree is visible to all user interfaces. To arbitrate access, a lock is used, see playlist_Lock() and playlist_Unlock().
Under the playlist root item node, the top-level items are the main media sources and include:
So, here is an example:
* Inputs array * - input 1 -> name = foo 1 uri = ... * - input 2 -> name = foo 2 uri = ... * * Playlist items tree * - playlist (id 1) * - category 1 (id 2) * - foo 2 (id 6 - input 2) * - media library (id 2) * - foo 1 (id 5 - input 1) *
Sometimes, an item creates subitems. This happens for the directory access for example. In that case, if the item is under the "playlist" top-level item and playlist is configured to be flat then the item will be deleted and replaced with new subitems. If the item is under another top-level item, it will be transformed to a node and removed from the list of all items without nodes.
For "standard" item addition, you can use playlist_Add(), playlist_AddExt() (more options) or playlist_AddInput() if you already created your input item. This will add the item at the root of "Playlist" or of "Media library" in each of the two trees.
You can create nodes with playlist_NodeCreate() and can create items from existing input items to be placed under any node with playlist_NodeAddInput().
To delete an item, use playlist_NodeDelete( p_item ).
The playlist defines the following event variables:
The playlist contains rate-variable which is propagated to current input if available also rate-slower/rate-faster is in use.