VLC 4.0.0-dev
libvlc_media_list.h
Go to the documentation of this file.
1/*****************************************************************************
2 * libvlc_media_list.h: libvlc_media_list API
3 *****************************************************************************
4 * Copyright (C) 1998-2008 VLC authors and VideoLAN
5 *
6 * Authors: Pierre d'Herbemont
7 *
8 * This program is free software; you can redistribute it and/or modify it
9 * under the terms of the GNU Lesser General Public License as published by
10 * the Free Software Foundation; either version 2.1 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public License
19 * along with this program; if not, write to the Free Software Foundation,
20 * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
21 *****************************************************************************/
22
23#ifndef LIBVLC_MEDIA_LIST_H
24#define LIBVLC_MEDIA_LIST_H 1
25
26# ifdef __cplusplus
27extern "C" {
28# endif
29
30/** \defgroup libvlc_media_list LibVLC media list
31 * \ingroup libvlc
32 * A LibVLC media list holds multiple @ref libvlc_media_t media descriptors.
33 * @{
34 * \file
35 * LibVLC media list (playlist) external API
36 */
37
39
40/**
41 * Create an empty media list.
42 *
43 * \return empty media list, or NULL on error
44 */
46
47/**
48 * Release media list created with libvlc_media_list_new().
49 *
50 * \param p_ml a media list created with libvlc_media_list_new()
51 */
52LIBVLC_API void
54
55/**
56 * Retain reference to a media list
57 *
58 * \param p_ml a media list created with libvlc_media_list_new()
59 * \return the same object
60 */
63
64/**
65 * Associate media instance with this media list instance.
66 * If another media instance was present it will be released.
67 * The libvlc_media_list_lock should NOT be held upon entering this function.
68 *
69 * \param p_ml a media list instance
70 * \param p_md media instance to add
71 */
72LIBVLC_API void
74
75/**
76 * Get media instance from this media list instance. This action will increase
77 * the refcount on the media instance.
78 * The libvlc_media_list_lock should NOT be held upon entering this function.
79 *
80 * \param p_ml a media list instance
81 * \return media instance
82 */
85
86/**
87 * Add media instance to media list
88 * The libvlc_media_list_lock should be held upon entering this function.
89 *
90 * \param p_ml a media list instance
91 * \param p_md a media instance
92 * \return 0 on success, -1 if the media list is read-only
93 */
94LIBVLC_API int
96
97/**
98 * Insert media instance in media list on a position
99 * The libvlc_media_list_lock should be held upon entering this function.
100 *
101 * \param p_ml a media list instance
102 * \param p_md a media instance
103 * \param i_pos position in array where to insert
104 * \return 0 on success, -1 if the media list is read-only
105 */
106LIBVLC_API int
108 libvlc_media_t *p_md, int i_pos );
109
110/**
111 * Remove media instance from media list on a position
112 * The libvlc_media_list_lock should be held upon entering this function.
113 *
114 * \param p_ml a media list instance
115 * \param i_pos position in array where to insert
116 * \return 0 on success, -1 if the list is read-only or the item was not found
117 */
118LIBVLC_API int
120
121/**
122 * Get count on media list items
123 * The libvlc_media_list_lock should be held upon entering this function.
124 *
125 * \param p_ml a media list instance
126 * \return number of items in media list
127 */
128LIBVLC_API int
130
131/**
132 * List media instance in media list at a position
133 * The libvlc_media_list_lock should be held upon entering this function.
134 *
135 * \param p_ml a media list instance
136 * \param i_pos position in array where to insert
137 * \return media instance at position i_pos, or NULL if not found.
138 * In case of success, libvlc_media_retain() is called to increase the refcount
139 * on the media.
140 */
143/**
144 * Find index position of List media instance in media list.
145 * Warning: the function will return the first matched position.
146 * The libvlc_media_list_lock should be held upon entering this function.
147 *
148 * \param p_ml a media list instance
149 * \param p_md media instance
150 * \return position of media instance or -1 if media not found
151 */
152LIBVLC_API int
154 libvlc_media_t *p_md );
155
156/**
157 * This indicates if this media list is read-only from a user point of view
158 *
159 * \param p_ml media list instance
160 * \retval true read-only
161 * \retval false read/write
162 */
164
165/**
166 * Get lock on media list items
167 *
168 * \param p_ml a media list instance
169 */
170LIBVLC_API void
172
173/**
174 * Release lock on media list items
175 * The libvlc_media_list_lock should be held upon entering this function.
176 *
177 * \param p_ml a media list instance
178 */
179LIBVLC_API void
181
182/**
183 * Get libvlc_event_manager from this media list instance.
184 * The p_event_manager is immutable, so you don't have to hold the lock
185 *
186 * \param p_ml a media list instance
187 * \return libvlc_event_manager
188 */
191
192/** @} media_list */
193
194# ifdef __cplusplus
195}
196# endif
197
198#endif /* _LIBVLC_MEDIA_LIST_H */
struct libvlc_event_manager_t libvlc_event_manager_t
Event manager that belongs to a libvlc object, and from whom events can be received.
Definition: libvlc.h:313
LIBVLC_API int libvlc_media_list_remove_index(libvlc_media_list_t *p_ml, int i_pos)
Remove media instance from media list on a position The libvlc_media_list_lock should be held upon en...
LIBVLC_API libvlc_media_t * libvlc_media_list_media(libvlc_media_list_t *p_ml)
Get media instance from this media list instance.
LIBVLC_API libvlc_media_list_t * libvlc_media_list_retain(libvlc_media_list_t *p_ml)
Retain reference to a media list.
LIBVLC_API void libvlc_media_list_release(libvlc_media_list_t *p_ml)
Release media list created with libvlc_media_list_new().
LIBVLC_API int libvlc_media_list_index_of_item(libvlc_media_list_t *p_ml, libvlc_media_t *p_md)
Find index position of List media instance in media list.
LIBVLC_API bool libvlc_media_list_is_readonly(libvlc_media_list_t *p_ml)
This indicates if this media list is read-only from a user point of view.
LIBVLC_API libvlc_media_list_t * libvlc_media_list_new(void)
Create an empty media list.
LIBVLC_API void libvlc_media_list_lock(libvlc_media_list_t *p_ml)
Get lock on media list items.
LIBVLC_API int libvlc_media_list_count(libvlc_media_list_t *p_ml)
Get count on media list items The libvlc_media_list_lock should be held upon entering this function.
LIBVLC_API void libvlc_media_list_set_media(libvlc_media_list_t *p_ml, libvlc_media_t *p_md)
Associate media instance with this media list instance.
LIBVLC_API int libvlc_media_list_insert_media(libvlc_media_list_t *p_ml, libvlc_media_t *p_md, int i_pos)
Insert media instance in media list on a position The libvlc_media_list_lock should be held upon ente...
LIBVLC_API libvlc_event_manager_t * libvlc_media_list_event_manager(libvlc_media_list_t *p_ml)
Get libvlc_event_manager from this media list instance.
struct libvlc_media_list_t libvlc_media_list_t
Definition: libvlc_media_list.h:38
LIBVLC_API void libvlc_media_list_unlock(libvlc_media_list_t *p_ml)
Release lock on media list items The libvlc_media_list_lock should be held upon entering this functio...
LIBVLC_API libvlc_media_t * libvlc_media_list_item_at_index(libvlc_media_list_t *p_ml, int i_pos)
List media instance in media list at a position The libvlc_media_list_lock should be held upon enteri...
LIBVLC_API int libvlc_media_list_add_media(libvlc_media_list_t *p_ml, libvlc_media_t *p_md)
Add media instance to media list The libvlc_media_list_lock should be held upon entering this functio...
struct libvlc_media_t libvlc_media_t
Definition: libvlc_media.h:46
#define LIBVLC_API
Definition: libvlc.h:42