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
27 extern "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  * \param p_instance libvlc instance
44  * \return empty media list, or NULL on error
45  */
48 
49 /**
50  * Release media list created with libvlc_media_list_new().
51  *
52  * \param p_ml a media list created with libvlc_media_list_new()
53  */
54 LIBVLC_API void
56 
57 /**
58  * Retain reference to a media list
59  *
60  * \param p_ml a media list created with libvlc_media_list_new()
61  */
62 LIBVLC_API void
64 
65 /**
66  * Associate media instance with this media list instance.
67  * If another media instance was present it will be released.
68  * The libvlc_media_list_lock should NOT be held upon entering this function.
69  *
70  * \param p_ml a media list instance
71  * \param p_md media instance to add
72  */
73 LIBVLC_API void
75 
76 /**
77  * Get media instance from this media list instance. This action will increase
78  * the refcount on the media instance.
79  * The libvlc_media_list_lock should NOT be held upon entering this function.
80  *
81  * \param p_ml a media list instance
82  * \return media instance
83  */
86 
87 /**
88  * Add media instance to media list
89  * The libvlc_media_list_lock should be held upon entering this function.
90  *
91  * \param p_ml a media list instance
92  * \param p_md a media instance
93  * \return 0 on success, -1 if the media list is read-only
94  */
95 LIBVLC_API int
97 
98 /**
99  * Insert media instance in media list on a position
100  * The libvlc_media_list_lock should be held upon entering this function.
101  *
102  * \param p_ml a media list instance
103  * \param p_md a media instance
104  * \param i_pos position in array where to insert
105  * \return 0 on success, -1 if the media list is read-only
106  */
107 LIBVLC_API int
109  libvlc_media_t *p_md, int i_pos );
110 
111 /**
112  * Remove media instance from media list on a position
113  * The libvlc_media_list_lock should be held upon entering this function.
114  *
115  * \param p_ml a media list instance
116  * \param i_pos position in array where to insert
117  * \return 0 on success, -1 if the list is read-only or the item was not found
118  */
119 LIBVLC_API int
121 
122 /**
123  * Get count on media list items
124  * The libvlc_media_list_lock should be held upon entering this function.
125  *
126  * \param p_ml a media list instance
127  * \return number of items in media list
128  */
129 LIBVLC_API int
131 
132 /**
133  * List media instance in media list at a position
134  * The libvlc_media_list_lock should be held upon entering this function.
135  *
136  * \param p_ml a media list instance
137  * \param i_pos position in array where to insert
138  * \return media instance at position i_pos, or NULL if not found.
139  * In case of success, libvlc_media_retain() is called to increase the refcount
140  * on the media.
141  */
144 /**
145  * Find index position of List media instance in media list.
146  * Warning: the function will return the first matched position.
147  * The libvlc_media_list_lock should be held upon entering this function.
148  *
149  * \param p_ml a media list instance
150  * \param p_md media instance
151  * \return position of media instance or -1 if media not found
152  */
153 LIBVLC_API int
155  libvlc_media_t *p_md );
156 
157 /**
158  * This indicates if this media list is read-only from a user point of view
159  *
160  * \param p_ml media list instance
161  * \retval true read-only
162  * \retval false read/write
163  */
165 
166 /**
167  * Get lock on media list items
168  *
169  * \param p_ml a media list instance
170  */
171 LIBVLC_API void
173 
174 /**
175  * Release lock on media list items
176  * The libvlc_media_list_lock should be held upon entering this function.
177  *
178  * \param p_ml a media list instance
179  */
180 LIBVLC_API void
182 
183 /**
184  * Get libvlc_event_manager from this media list instance.
185  * The p_event_manager is immutable, so you don't have to hold the lock
186  *
187  * \param p_ml a media list instance
188  * \return libvlc_event_manager
189  */
192 
193 /** @} media_list */
194 
195 # ifdef __cplusplus
196 }
197 # endif
198 
199 #endif /* _LIBVLC_MEDIA_LIST_H */
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.
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 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 libvlc_media_t * libvlc_media_list_media(libvlc_media_list_t *p_ml)
Get media instance from this media list instance.
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:304
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:43
#define LIBVLC_API
Definition: libvlc.h:42
LIBVLC_API void libvlc_media_list_lock(libvlc_media_list_t *p_ml)
Get lock on media list items.
LIBVLC_API void libvlc_media_list_retain(libvlc_media_list_t *p_ml)
Retain reference to a media list.
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 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 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_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 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_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...
struct libvlc_instance_t libvlc_instance_t
This structure is opaque.
Definition: libvlc.h:76
struct libvlc_media_list_t libvlc_media_list_t
Definition: libvlc_media_list.h:38
LIBVLC_API libvlc_media_list_t * libvlc_media_list_new(libvlc_instance_t *p_instance)
Create an empty media list.