QVisu
Qt-based visualization for smart homes
|
Classes | |
struct | playlist_export_t |
struct | playlist_item_t |
struct | playlist_t |
struct | playlist_add_t |
Macros | |
#define | VLC_DEFINE_SORT_FUNCTIONS |
#define | DEF(s) s, |
#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 -666 |
#define | PL_LOCK playlist_Lock( p_playlist ) |
#define | PL_UNLOCK playlist_Unlock( p_playlist ) |
#define | PL_ASSERT_LOCKED playlist_AssertLocked( p_playlist ) |
#define | pl_Get(a) pl_Get( VLC_OBJECT(a) ) |
#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) ) |
#define | AOUT_VOLUME_DEFAULT 256 |
#define | AOUT_VOLUME_MAX 512 |
#define | playlist_VolumeDown(a, b, c) playlist_VolumeUp(a, -(b), c) |
#define | pl_CurrentInput(a) __pl_CurrentInput( VLC_OBJECT(a) ) |
Typedefs | |
typedef struct playlist_export_t | playlist_export_t |
Enumerations | |
enum | playlist_item_flags_e { PLAYLIST_SAVE_FLAG = 0x0001, PLAYLIST_SKIP_FLAG = 0x0002, PLAYLIST_DBL_FLAG = 0x0004, PLAYLIST_RO_FLAG = 0x0008, PLAYLIST_REMOVE_FLAG = 0x0010, PLAYLIST_EXPANDED_FLAG = 0x0020, PLAYLIST_SUBITEM_STOP_FLAG = 0x0040 } |
enum | playlist_status_t { PLAYLIST_STOPPED, PLAYLIST_RUNNING, PLAYLIST_PAUSED } |
enum | { SORT_RANDOM, NUM_SORT_FNS =SORT_RANDOM } |
enum | { ORDER_NORMAL = 0, ORDER_REVERSE = 1 } |
enum | pl_locked_state { pl_Locked = true, pl_Unlocked = false } |
Functions | |
VLC_API playlist_t * | pl_Get (vlc_object_t *) |
VLC_API void | playlist_Lock (playlist_t *) |
VLC_API void | playlist_Unlock (playlist_t *) |
VLC_API void | playlist_AssertLocked (playlist_t *) |
VLC_API void | playlist_Deactivate (playlist_t *) |
VLC_API int | playlist_Control (playlist_t *p_playlist, int i_query, bool b_locked,...) |
VLC_API input_thread_t * | playlist_CurrentInput (playlist_t *p_playlist) VLC_USED |
VLC_API mtime_t | playlist_GetNodeDuration (playlist_item_t *) |
VLC_API void | playlist_Clear (playlist_t *, bool) |
VLC_API int | playlist_PreparseEnqueue (playlist_t *, input_item_t *) |
VLC_API int | playlist_AskForArtEnqueue (playlist_t *, input_item_t *) |
VLC_API int | playlist_TreeMove (playlist_t *, playlist_item_t *, playlist_item_t *, int) |
VLC_API int | playlist_TreeMoveMany (playlist_t *, int, playlist_item_t **, playlist_item_t *, int) |
VLC_API int | playlist_RecursiveNodeSort (playlist_t *, playlist_item_t *, int, int) |
VLC_API playlist_item_t * | playlist_CurrentPlayingItem (playlist_t *) VLC_USED |
VLC_API int | playlist_Status (playlist_t *) |
VLC_API int | playlist_Export (playlist_t *p_playlist, const char *psz_name, playlist_item_t *p_export_root, const char *psz_type) |
VLC_API int | playlist_Import (playlist_t *p_playlist, const char *psz_file) |
VLC_API int | playlist_ServicesDiscoveryAdd (playlist_t *, const char *) |
VLC_API int | playlist_ServicesDiscoveryRemove (playlist_t *, const char *) |
VLC_API bool | playlist_IsServicesDiscoveryLoaded (playlist_t *, const char *) VLC_DEPRECATED |
VLC_API int | playlist_ServicesDiscoveryControl (playlist_t *, const char *, int,...) |
VLC_API int | playlist_DeleteFromInput (playlist_t *, input_item_t *, bool) |
VLC_API int | playlist_Add (playlist_t *, const char *, const char *, int, int, bool, bool) |
VLC_API int | playlist_AddExt (playlist_t *, const char *, const char *, int, int, mtime_t, int, const char *const *, unsigned, bool, bool) |
VLC_API int | playlist_AddInput (playlist_t *, input_item_t *, int, int, bool, bool) |
VLC_API playlist_item_t * | playlist_NodeAddInput (playlist_t *, input_item_t *, playlist_item_t *, int, int, bool) |
VLC_API int | playlist_NodeAddCopy (playlist_t *, playlist_item_t *, playlist_item_t *, int) |
VLC_API playlist_item_t * | playlist_ItemGetById (playlist_t *, int) VLC_USED |
VLC_API playlist_item_t * | playlist_ItemGetByInput (playlist_t *, input_item_t *) VLC_USED |
VLC_API int | playlist_LiveSearchUpdate (playlist_t *, playlist_item_t *, const char *, bool) |
VLC_API playlist_item_t * | playlist_NodeCreate (playlist_t *, const char *, playlist_item_t *p_parent, int i_pos, int i_flags, input_item_t *) |
VLC_API int | playlist_NodeAppend (playlist_t *, playlist_item_t *, playlist_item_t *) |
VLC_API int | playlist_NodeInsert (playlist_t *, playlist_item_t *, playlist_item_t *, int) |
VLC_API int | playlist_NodeRemoveItem (playlist_t *, playlist_item_t *, playlist_item_t *) |
VLC_API playlist_item_t * | playlist_ChildSearchName (playlist_item_t *, const char *) VLC_USED |
VLC_API int | playlist_NodeDelete (playlist_t *, playlist_item_t *, bool, bool) |
VLC_API 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_USED |
VLC_API 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_USED |
VLC_API audio_output_t * | playlist_GetAout (playlist_t *) |
VLC_API float | playlist_VolumeGet (playlist_t *) |
VLC_API int | playlist_VolumeSet (playlist_t *, float) |
VLC_API int | playlist_VolumeUp (playlist_t *, int, float *) |
VLC_API int | playlist_MuteSet (playlist_t *, bool) |
VLC_API int | playlist_MuteGet (playlist_t *) |
VLC_API void | playlist_EnableAudioFilter (playlist_t *, const char *, bool) |
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 input_item_t. This contains all information needed to play a stream and get info, ie, mostly, mrl and metadata. This structure contains a unique i_id field. ids are not recycled when an item is destroyed.
Input items are not used directly, but through playlist items. The playlist items are themselves in a tree structure. They only contain a link to the input item, a unique id and a few flags. the playlist item id is NOT the same as the input item id. Several playlist items can be attached to a single input item. The input item is refcounted and is automatically destroyed when it is not used anymore.
The top-level items are the main media sources and include: playlist, media library, SAP, Shoutcast, devices, ...
It is envisioned that a third tree will appear: VLM, but it's not done yet
The playlist also stores, for utility purposes, an array of all input items, an array of all playlist items and an array of all playlist items and nodes (both are represented by the same structure).
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_DeleteFromInput( p_item ) which will remove all occurrences of the input.
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
XXX Be really carefull, playlist_item_t->i_id and input_item_t->i_id are not the same. Yes, the situation is pretty bad.
#define pl_CurrentInput | ( | a | ) | __pl_CurrentInput( VLC_OBJECT(a) ) |
Small helper tp get current playing input or NULL. Release the input after use.
#define VLC_DEFINE_SORT_FUNCTIONS |
typedef struct playlist_export_t playlist_export_t |
Helper structure to export to file part of the playlist
enum playlist_status_t |
Playlist status
VLC_API int playlist_AskForArtEnqueue | ( | playlist_t * | , |
input_item_t * | |||
) |
Request the art for an input item to be fetched
VLC_API void playlist_Clear | ( | playlist_t * | , |
bool | |||
) |
Clear the playlist
b_locked | TRUE if playlist is locked when entering this function |
VLC_API int playlist_Control | ( | playlist_t * | p_playlist, |
int | i_query, | ||
bool | b_locked, | ||
... | |||
) |
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
p_playlist | the playlist to do the command on |
i_query | the command to do |
b_locked | TRUE if playlist is locked when entering this function |
variable | number of arguments |
VLC_API input_thread_t* playlist_CurrentInput | ( | playlist_t * | p_playlist | ) |
Get current playing input. The object is retained.
VLC_API int playlist_Export | ( | playlist_t * | p_playlist, |
const char * | psz_name, | ||
playlist_item_t * | p_export_root, | ||
const char * | psz_type | ||
) |
Export a node of the playlist to a certain type of playlistfile
p_playlist | the playlist to export |
psz_filename | the location where the exported file will be saved |
p_export_root | the root node to export |
psz_type | the type of playlist file to create (m3u, pls, ..) |
VLC_API mtime_t playlist_GetNodeDuration | ( | playlist_item_t * | ) |
Get the duration of all items in a node.
VLC_API int playlist_Import | ( | playlist_t * | p_playlist, |
const char * | psz_file | ||
) |
Open a playlist file, add its content to the current playlist
VLC_API bool playlist_IsServicesDiscoveryLoaded | ( | playlist_t * | , |
const char * | |||
) |
Check whether a given SD is loaded
VLC_API int playlist_PreparseEnqueue | ( | playlist_t * | , |
input_item_t * | |||
) |
Enqueue an input item for preparsing
VLC_API int playlist_ServicesDiscoveryAdd | ( | playlist_t * | , |
const char * | |||
) |
Add a list of comma-separated service discovery modules
VLC_API int playlist_ServicesDiscoveryControl | ( | playlist_t * | , |
const char * | , | ||
int | , | ||
... | |||
) |
Query a services discovery
VLC_API int playlist_ServicesDiscoveryRemove | ( | playlist_t * | , |
const char * | |||
) |
Remove a services discovery module by name