VLC 4.0.0-dev
Loading...
Searching...
No Matches
libvlc_renderer_discoverer.h
Go to the documentation of this file.
1/*****************************************************************************
2 * libvlc_renderer_discoverer.h: libvlc external API
3 *****************************************************************************
4 * Copyright © 2016 VLC authors and VideoLAN
5 *
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU Lesser General Public License as published by
8 * the Free Software Foundation; either version 2.1 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public License
17 * along with this program; if not, write to the Free Software Foundation,
18 * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
19 *****************************************************************************/
20
21#ifndef VLC_LIBVLC_RENDERER_DISCOVERER_H
22#define VLC_LIBVLC_RENDERER_DISCOVERER_H 1
23
24# ifdef __cplusplus
25extern "C" {
26# endif
27
28/**
29 * @defgroup libvlc_renderer_discoverer LibVLC renderer discoverer
30 * @ingroup libvlc
31 * LibVLC renderer discoverer finds available renderers available on the local
32 * network
33 * @{
34 * @file
35 * LibVLC renderer discoverer external API
36 */
37
39
40/**
41 * Renderer discoverer description
42 *
43 * \see libvlc_renderer_discoverer_list_get()
44 */
50
51/** The renderer can render audio */
52#define LIBVLC_RENDERER_CAN_AUDIO 0x0001
53/** The renderer can render video */
54#define LIBVLC_RENDERER_CAN_VIDEO 0x0002
55
56/**
57 * Renderer item
58 *
59 * This struct is passed by a @ref libvlc_renderer_discoverer_cbs when a new
60 * renderer is added or deleted.
61 *
62 * An item is valid until the @ref libvlc_renderer_discoverer_cbs::on_item_removed
63 * callback is called with the same pointer.
64 */
66
67/**
68 * Hold a renderer item, i.e. creates a new reference
69 *
70 * This functions need to called from the libvlc_renderer_discoverer_cbs::on_item_added
71 * callback if the libvlc user wants to use this item after. (for display or
72 * for passing it to the mediaplayer for example).
73 *
74 * \version LibVLC 4.0.0 or later
75 *
76 * \return the current item
77 */
80
81/**
82 * Releases a renderer item, i.e. decrements its reference counter
83 *
84 * \version LibVLC 3.0.0 or later
85 */
86LIBVLC_API void
88
89/**
90 * Get the human readable name of a renderer item
91 *
92 * \version LibVLC 3.0.0 or later
93 *
94 * \return the name of the item (can't be NULL, must *not* be freed)
95 */
96LIBVLC_API const char *
98
99/**
100 * Get the type (not translated) of a renderer item. For now, the type can only
101 * be "chromecast" ("upnp", "airplay" may come later).
102 *
103 * \version LibVLC 3.0.0 or later
104 *
105 * \return the type of the item (can't be NULL, must *not* be freed)
106 */
107LIBVLC_API const char *
109
110/**
111 * Get the icon uri of a renderer item
112 *
113 * \version LibVLC 3.0.0 or later
114 *
115 * \return the uri of the item's icon (can be NULL, must *not* be freed)
116 */
117LIBVLC_API const char *
119
120/**
121 * Get the flags of a renderer item
122 *
123 * \see LIBVLC_RENDERER_CAN_AUDIO
124 * \see LIBVLC_RENDERER_CAN_VIDEO
125 *
126 * \version LibVLC 3.0.0 or later
127 *
128 * \return bitwise flag: capabilities of the renderer, see
129 */
130LIBVLC_API int
132
133/**
134 * struct defining callbacks for libvlc_renderer_discoverer_new()
135 */
137{
138 /**
139 * Version of struct libvlc_renderer_discoverer_cbs
140 */
141 uint32_t version;
142
143 /**
144 * Callback prototype that notify when the discoverer added an item
145 *
146 * \note Mandatory (can't be NULL),
147 * available since version 0
148 *
149 * \param opaque opaque pointer set by libvlc_renderer_discoverer_new()
150 * \param item the new added item
151 */
152 void (*on_item_added)(void *opaque, libvlc_renderer_item_t *item);
153
154 /**
155 * Callback prototype that notify when the discoverer removed an item
156 *
157 * \note Optional (can be NULL).
158 * available since version 0
159 *
160 * \param opaque opaque pointer set by libvlc_renderer_discoverer_new()
161 * \param item the removed item
162 */
163 void (*on_item_removed)(void *opaque, libvlc_renderer_item_t *item);
164};
165
166/**
167 * Create a renderer discoverer object by name
168 *
169 * After this object is created, items addition and removal will be
170 * notified through the provided callbacks.
171 *
172 * You need to call libvlc_renderer_discoverer_start() in order to start the
173 * discovery.
174 *
175 * \see libvlc_renderer_discoverer_start()
176 *
177 * \version LibVLC 4.0.0 or later
178 *
179 * \param p_inst libvlc instance
180 * \param psz_name service name; use libvlc_renderer_discoverer_list_get() to
181 * get a list of the discoverer names available in this libVLC instance
182 * \param cbs callback to listen to events (can't be NULL). The pointed
183 * struct must be kept alive (and not modified) by the caller until the
184 * returned object is destroyed with libvlc_renderer_discoverer_destroy().
185 * \param cbs_opaque opaque pointer used by the callbacks
186 * \return media discover object or NULL in case of error
187 */
190 const char *psz_name,
191 const struct libvlc_renderer_discoverer_cbs *cbs,
192 void *cbs_opaque );
193
194/**
195 * Destroy a renderer discoverer object
196 *
197 * \version LibVLC 4.0.0 or later
198 *
199 * \param p_rd renderer discoverer object
200 */
201LIBVLC_API void
203
204/**
205 * Start renderer discovery
206 *
207 * To stop it, call libvlc_renderer_discoverer_stop() or
208 * libvlc_renderer_discoverer_destroy() directly.
209 *
210 * \see libvlc_renderer_discoverer_stop()
211 *
212 * \version LibVLC 3.0.0 or later
213 *
214 * \param p_rd renderer discoverer object
215 * \return -1 in case of error, 0 otherwise
216 */
217LIBVLC_API int
219
220/**
221 * Stop renderer discovery.
222 *
223 * \see libvlc_renderer_discoverer_start()
224 *
225 * \version LibVLC 3.0.0 or later
226 *
227 * \param p_rd renderer discoverer object
228 */
229LIBVLC_API void
231
232/**
233 * Get media discoverer services
234 *
235 * \see libvlc_renderer_list_release()
236 *
237 * \version LibVLC 3.0.0 and later
238 *
239 * \param p_inst libvlc instance
240 * \param ppp_services address to store an allocated array of renderer
241 * discoverer services (must be freed with libvlc_renderer_list_release() by
242 * the caller) [OUT]
243 *
244 * \return the number of media discoverer services (0 on error)
245 */
246LIBVLC_API size_t
248 libvlc_rd_description_t ***ppp_services );
249
250/**
251 * Release an array of media discoverer services
252 *
253 * \see libvlc_renderer_discoverer_list_get()
254 *
255 * \version LibVLC 3.0.0 and later
256 *
257 * \param pp_services array to release
258 * \param i_count number of elements in the array
259 */
260LIBVLC_API void
262 size_t i_count );
263
264/** @} */
265
266# ifdef __cplusplus
267}
268# endif
269
270#endif
struct libvlc_instance_t libvlc_instance_t
This structure is opaque.
Definition libvlc.h:76
LIBVLC_API const char * libvlc_renderer_item_type(const libvlc_renderer_item_t *p_item)
Get the type (not translated) of a renderer item.
LIBVLC_API const char * libvlc_renderer_item_name(const libvlc_renderer_item_t *p_item)
Get the human readable name of a renderer item.
struct libvlc_renderer_item_t libvlc_renderer_item_t
Renderer item.
Definition libvlc_media_player.h:45
LIBVLC_API const char * libvlc_renderer_item_icon_uri(const libvlc_renderer_item_t *p_item)
Get the icon uri of a renderer item.
LIBVLC_API int libvlc_renderer_item_flags(const libvlc_renderer_item_t *p_item)
Get the flags of a renderer item.
LIBVLC_API void libvlc_renderer_discoverer_list_release(libvlc_rd_description_t **pp_services, size_t i_count)
Release an array of media discoverer services.
LIBVLC_API void libvlc_renderer_discoverer_destroy(libvlc_renderer_discoverer_t *p_rd)
Destroy a renderer discoverer object.
LIBVLC_API size_t libvlc_renderer_discoverer_list_get(libvlc_instance_t *p_inst, libvlc_rd_description_t ***ppp_services)
Get media discoverer services.
LIBVLC_API libvlc_renderer_item_t * libvlc_renderer_item_retain(libvlc_renderer_item_t *p_item)
Hold a renderer item, i.e.
struct libvlc_renderer_discoverer_t libvlc_renderer_discoverer_t
Definition libvlc_renderer_discoverer.h:38
LIBVLC_API int libvlc_renderer_discoverer_start(libvlc_renderer_discoverer_t *p_rd)
Start renderer discovery.
LIBVLC_API void libvlc_renderer_discoverer_stop(libvlc_renderer_discoverer_t *p_rd)
Stop renderer discovery.
LIBVLC_API libvlc_renderer_discoverer_t * libvlc_renderer_discoverer_new(libvlc_instance_t *p_inst, const char *psz_name, const struct libvlc_renderer_discoverer_cbs *cbs, void *cbs_opaque)
Create a renderer discoverer object by name.
LIBVLC_API void libvlc_renderer_item_release(libvlc_renderer_item_t *p_item)
Releases a renderer item, i.e.
#define LIBVLC_API
Definition libvlc.h:42
Renderer discoverer description.
Definition libvlc_renderer_discoverer.h:46
char * psz_name
Definition libvlc_renderer_discoverer.h:47
char * psz_longname
Definition libvlc_renderer_discoverer.h:48
struct defining callbacks for libvlc_renderer_discoverer_new()
Definition libvlc_renderer_discoverer.h:137
uint32_t version
Version of struct libvlc_renderer_discoverer_cbs.
Definition libvlc_renderer_discoverer.h:141
void(* on_item_removed)(void *opaque, libvlc_renderer_item_t *item)
Callback prototype that notify when the discoverer removed an item.
Definition libvlc_renderer_discoverer.h:163
void(* on_item_added)(void *opaque, libvlc_renderer_item_t *item)
Callback prototype that notify when the discoverer added an item.
Definition libvlc_renderer_discoverer.h:152
const char * psz_name
Definition text_style.c:33