Go to the documentation of this file.
21 #ifndef MEDIA_SOURCE_H
22 #define MEDIA_SOURCE_H
28 #define vlc_media_source_provider_New(obj) \
29 vlc_media_source_provider_New(VLC_OBJECT(obj))
#define VLC_VECTOR(type)
Vector struct body.
Definition: vlc_vector.h:65
void vlc_mutex_init(vlc_mutex_t *mtx)
Initializes a fast mutex.
Definition: threads.c:123
@ VLC_SYSDATA_DIR
Global architecture-independent read-only data directory (e.g.
Definition: vlc_configuration.h:280
const char * vlc_readdir(DIR *dir)
Reads the next file name from an open directory.
Definition: filesystem.c:126
size_t count
Definition: core.c:401
ssize_t vlc_sendto(int fd, const void *buf, size_t len, int flags, const struct sockaddr *dst, socklen_t dstlen)
Sends data to a peer.
Definition: filesystem.c:368
#define vlc_sd_GetNames(obj, pln, pcat)
Definition: vlc_services_discovery.h:143
In-memory stream object.
Definition: vlc_memstream.h:41
int vlc_getaddrinfo(const char *node, unsigned port, const struct addrinfo *hints, struct addrinfo **res)
Resolves a host name to a list of socket addresses (like getaddrinfo()).
Definition: getaddrinfo.c:77
int vlc_sem_wait_i11e(vlc_sem_t *sem)
Interruptible variant of vlc_sem_wait().
Definition: interrupt.c:197
static char * config_GetAppDir(void)
Definition: dirs.c:117
@ VLC_CACHE_DIR
Definition: vlc_configuration.h:310
@ VLC_VIDEOS_DIR
Definition: vlc_configuration.h:319
Main service discovery structure to build a SD module.
Definition: vlc_services_discovery.h:59
static char * config_GetDataDir(void)
Determines the shared data directory.
Definition: dirs.c:108
int vlc_stat(const char *filename, struct stat *buf)
Finds file/inode information - like stat().
Definition: filesystem.c:173
int vlc_open(const char *filename, int flags,...)
Opens a system file handle.
Definition: filesystem.c:52
void vlc_rand_bytes(void *buf, size_t len)
Definition: rand.c:28
Definition: vlc_objects.h:114
@ VLC_PKG_LIB_DIR
Package-specific architecture-dependent read-only data directory (e.g.
Definition: vlc_configuration.h:275
void vlc_sem_init(vlc_sem_t *sem, unsigned value)
Initializes a semaphore.
Definition: threads.c:442
#define unlikely(p)
Predicted false condition.
Definition: vlc_common.h:227
int error
Definition: vlc_memstream.h:46
@ VLC_DESKTOP_DIR
Definition: vlc_configuration.h:312
ssize_t vlc_sendmsg(int fd, const struct msghdr *msg, int flags)
Sends a socket message.
Definition: filesystem.c:374
struct addrinfo ** result
Definition: getaddrinfo.c:56
#define VLC_THREAD_PRIORITY_LOW
Definition: vlc_threads.h:207
int vlc_mkstemp(char *template)
Definition: filesystem.c:204
#define vlc_mutex_assert(m)
Asserts that a mutex is locked by the calling thread.
Definition: vlc_threads.h:328
static libvlc_priv_t * libvlc_priv(libvlc_int_t *libvlc)
Definition: libvlc.h:199
void vlc_sd_Destroy(services_discovery_t *sd)
Definition: services_discovery.c:130
vlc_sem_t done
Definition: getaddrinfo.c:58
void vlc_CPU_dump(vlc_object_t *obj)
Definition: cpu.c:265
static void vlc_list_init(struct vlc_list *restrict head)
Initializes an empty list head.
Definition: vlc_list.h:57
int vlc_socketpair(int pf, int type, int proto, int fds[2], bool nonblock)
Creates a pair of socket file descriptors.
Definition: filesystem.c:335
#define vlc_vector_push(pv, item)
Push an item at the end of the vector.
Definition: vlc_vector.h:313
void vlc_qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *, void *), void *arg)
Sort an array with reentrancy, following the upcoming POSIX prototype.
Definition: sort.c:43
static bool vlc_atomic_rc_dec(vlc_atomic_rc_t *rc)
Decrement the RC and return true if it reaches 0.
Definition: vlc_atomic.h:61
int() vlc_memstream_puts(struct vlc_memstream *ms, const char *str)
Appends a nul-terminated string to a byte stream.
Definition: memstream.c:156
static char * config_GetRealDir(const char *dir)
Definition: dirs.c:75
static void vlc_socket_setup(int fd, bool nonblock)
Definition: filesystem.c:319
#define msg_Dbg(p_this,...)
Definition: vlc_messages.h:106
long pathconf(const char *path, int name)
int vlc_mkdir(const char *dirname, mode_t mode)
Creates a directory.
Definition: filesystem.c:96
#define FromLocaleDup
Definition: vlc_charset.h:318
int vlc_memstream_open(struct vlc_memstream *ms)
Initializes a byte stream object.
Definition: memstream.c:105
#define vlc_vector_init(pv)
Initialize an empty vector.
Definition: vlc_vector.h:80
#define ARRAY_SIZE(x)
Definition: vlc_arrays.h:178
@ VLC_LIB_DIR
Global architecture-dependent read-only directory (e.g.
Definition: vlc_configuration.h:283
int vlc_memstream_close(struct vlc_memstream *ms)
Closes a byte stream object.
Definition: memstream.c:120
static char * getenv(const char *name)
Definition: vlc_fixups.h:292
Doubly-linked list node.
Definition: vlc_list.h:43
ssize_t vlc_write(int fd, const void *buf, size_t len)
Writes data to a file descriptor.
Definition: filesystem.c:289
void(* item_added)(struct services_discovery_t *sd, input_item_t *parent, input_item_t *item, const char *category)
Definition: vlc_services_discovery.h:45
int asprintf(char **, const char *,...)
@ VLC_HOME_DIR
Definition: vlc_configuration.h:307
Mutex.
Definition: vlc_threads.h:225
const struct addrinfo * hints
Definition: getaddrinfo.c:55
const struct services_discovery_callbacks * cbs
Definition: vlc_services_discovery.h:52
static const char * config_GetBaseDir(void)
Definition: dirs.c:50
static int dummy_select(const char *str)
Definition: filesystem.c:103
int vlc_loaddir(DIR *dir, char ***namelist, int(*select)(const char *), int(*compar)(const char **, const char **))
Does the same as vlc_scandir(), but takes an open directory pointer instead of a directory path.
Definition: filesystem.c:121
int vlc_clone(vlc_thread_t *th, void *(*entry)(void *), void *data, int priority)
Creates and starts a new thread.
Definition: thread.c:144
ssize_t vlc_writev(int fd, const struct iovec *iov, int count)
Writes data from an iovec structure to a file descriptor.
Definition: filesystem.c:296
int getaddrinfo(const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res)
Definition: getaddrinfo.c:187
int vlc_lstat(const char *filename, struct stat *buf)
Finds file/inode information, as lstat().
Definition: filesystem.c:178
const char * description
Human-readable name.
Definition: vlc_services_discovery.h:67
#define vlc_assert_unreachable()
Impossible branch assertion.
Definition: vlc_common.h:253
FILE * vlc_fopen(const char *filename, const char *mode)
Opens a FILE pointer.
Definition: filesystem.c:49
char * config_GetUserDir(vlc_userdir_t type)
Definition: dirs.c:160
#define MSG_NOSIGNAL
Definition: rootbind.c:66
static char * config_GetShellDir(int csidl)
Definition: dirs.c:107
@ VLC_LOCALE_DIR
Base directory for package read-only locale data.
Definition: vlc_configuration.h:288
@ VLC_DOCUMENTS_DIR
Definition: vlc_configuration.h:316
FILE * stream
Definition: vlc_memstream.h:45
static void vlc_atomic_rc_inc(vlc_atomic_rc_t *rc)
Increment the RC.
Definition: vlc_atomic.h:52
static void * vlc_gai_thread(void *data)
Definition: getaddrinfo.c:43
static char * config_GetDataDir(void)
Definition: dirs.c:69
static void vlc_list_remove(struct vlc_list *restrict node)
Removes an element from a list.
Definition: vlc_list.h:135
@ VLC_PICTURES_DIR
Definition: vlc_configuration.h:318
static void vlc_socket_setup(int fd, bool nonblock)
Definition: filesystem.c:255
static void vlc_list_append(struct vlc_list *restrict node, struct vlc_list *head)
Appends an element into a list.
Definition: vlc_list.h:110
int error
Definition: getaddrinfo.c:57
const char * name
Definition: getaddrinfo.c:53
@ VLC_CONFIG_DIR
Definition: vlc_configuration.h:308
static int compar_void(const void *a, const void *b, void *data)
Definition: filesystem.c:109
static char * config_GetHomeDir(void)
Definition: dirs.c:117
vlc_media_source_provider_t * media_source_provider
Definition: libvlc.h:190
void system_Init(void)
Definition: specific.c:167
#define _NI_MASK
Definition: getaddrinfo.c:37
int vlc_close(int fd)
Closes a file descriptor.
Definition: filesystem.c:91
static char cached_path[PATH_MAX]
Definition: dirs.c:80
int vlc_getaddrinfo_i11e(const char *name, unsigned port, const struct addrinfo *hints, struct addrinfo **res)
Definition: getaddrinfo.c:39
#define _AI_MASK
Definition: getaddrinfo.c:91
DIR * vlc_opendir(const char *dirname)
Opens a DIR pointer.
Definition: filesystem.c:110
Thread handle.
Definition: vlc_threads.h:180
int vlc_dup2(int oldfd, int newfd)
Replaces a file descriptor.
Definition: filesystem.c:266
@ VLC_LIBEXEC_DIR
Global executable read-only directory (e.g.
Definition: vlc_configuration.h:285
char * config_GetLibDir(void)
Gets the arch-specific installation directory.
Definition: dirs.c:90
int vlc_socket(int pf, int type, int proto, bool nonblock)
Creates a socket file descriptor.
Definition: filesystem.c:327
char * FromCharset(const char *charset, const void *data, size_t data_size)
Converts a string from the given character encoding to utf-8.
Definition: unicode.c:237
@ VLC_PKG_DATA_DIR
Package-specific architecture-independent read-only data directory (e.g.
Definition: vlc_configuration.h:273
#define static_assert
Definition: vlc_fixups.h:370
int vlc_openat(int dir, const char *filename, int flags,...)
Opens a system file handle relative to an existing directory handle.
Definition: filesystem.c:78
struct services_discovery_owner_t owner
Owner callbacks.
Definition: vlc_services_discovery.h:76
@ VLC_PUBLICSHARE_DIR
Definition: vlc_configuration.h:315
const char * service
Definition: getaddrinfo.c:54
static int vlc_statEx(const char *filename, struct stat *buf, bool deref)
Definition: filesystem.c:158
static char * config_GetTypeDir(const char *xdg_name)
Definition: dirs.c:163
ssize_t sendmsg(int, const struct msghdr *, int)
Definition: vlc_services_discovery.h:50
void vlc_sem_wait(vlc_sem_t *sem)
Waits on a semaphore.
Definition: threads.c:463
VLC object common members.
Definition: vlc_objects.h:43
#define VLC_UNUSED(x)
Definition: vlc_common.h:1105
#define ToLocaleDup
Definition: vlc_charset.h:319
Semaphore.
Definition: vlc_threads.h:449
Definition: vlc_services_discovery.h:43
char * strdup(const char *)
static char * config_GetLibExecDir(void)
Definition: dirs.c:94
char * config_GetSysPath(vlc_sysdir_t type, const char *filename)
Gets an installation directory.
Definition: dirs.c:117
int vlc_pipe(int fds[2])
Creates a pipe (see "man pipe" for further reference).
Definition: filesystem.c:275
static char * config_GetHomeDir(void)
Definition: dirs.c:151
int getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host, int hostlen, char *serv, int servlen, int flags)
Definition: getaddrinfo.c:49
#define vlc_custom_create(o, s, n)
Definition: libvlc.h:117
enum vlc_system_dir vlc_sysdir_t
System directory identifiers.
void vlc_mutex_lock(vlc_mutex_t *mtx)
Acquires a mutex.
Definition: threads.c:158
module_config_t ** list
Definition: core.c:400
#define VLC_WEAK
Weak symbol annotation.
Definition: vlc_common.h:198
const char name[16]
Definition: httpd.c:1268
char * vlc_getcwd(void)
Determines the current working directory.
Definition: filesystem.c:218
static void vlc_getaddrinfo_notify(union sigval val)
Definition: getaddrinfo.c:34
#define vlc_vector_destroy(pv)
Destroy a vector.
Definition: vlc_vector.h:93
Definition: fourcc_gen.c:51
@ VLC_DOWNLOAD_DIR
Definition: vlc_configuration.h:313
int vlc_unlink(const char *filename)
Removes a file.
Definition: filesystem.c:183
int vlc_sem_post(vlc_sem_t *sem)
Increments the value of a semaphore.
Definition: threads.c:447
int vlc_rename(const char *oldpath, const char *newpath)
Moves a file atomically.
Definition: filesystem.c:197
#define vlc_list_foreach(pos, head, member)
List iteration macro.
Definition: vlc_list.h:261
@ VLC_TEMPLATES_DIR
Definition: vlc_configuration.h:314
void * sys
Private data for the owner callbacks.
Definition: vlc_services_discovery.h:53
#define vlc_object_delete(obj)
Definition: vlc_objects.h:136
int(* compar)(const void *, const void *, void *)
Definition: sort.c:50
#define likely(p)
Predicted true condition.
Definition: vlc_common.h:218
unsigned vlc_CPU(void)
Retrieves CPU capability flags.
Definition: cpu.c:252
Definition: vlc_fixups.h:443
@ VLC_USERDATA_DIR
Definition: vlc_configuration.h:309
char * strsep(char **, const char *)
static const char * config_GetRelDir(const char *dir)
Definition: dirs.c:35
static wchar_t * widen_path(const char *path)
Definition: filesystem.c:52
int vlc_accept(int lfd, struct sockaddr *addr, socklen_t *alen, bool nonblock)
Accepts an inbound connection request on a listening socket.
Definition: filesystem.c:345
static char * config_GetAppDir(const char *xdg_name, const char *xdg_default)
Definition: dirs.c:139
static char * config_GetLibDirRaw(void)
Definition: dirs.c:34
static void vlc_atomic_rc_init(vlc_atomic_rc_t *rc)
Init the RC to 1.
Definition: vlc_atomic.h:46
int vlc_getnameinfo(const struct sockaddr *sa, int salen, char *host, int hostlen, int *portnum, int flags)
Definition: getaddrinfo.c:39
void vlc_join(vlc_thread_t handle, void **result)
Waits for a thread to complete (if needed), then destroys it.
Definition: thread.c:151
static void config_GetLibDirOnce(void)
Definition: dirs.c:82
Definition: getaddrinfo.c:33
enum vlc_user_dir vlc_userdir_t
static struct addrinfo * makeaddrinfo(int af, int type, int proto, const struct sockaddr *addr, size_t addrlen, const char *canonname)
Definition: getaddrinfo.c:123
int vlc_scandir(const char *dirname, char ***namelist, int(*select)(const char *), int(*compar)(const char **, const char **))
Selects file entries from a directory, as GNU C scandir().
Definition: filesystem.c:187
ssize_t vlc_send(int fd, const void *buf, size_t len, int flags)
Sends data.
Definition: filesystem.c:363
void vlc_mutex_unlock(vlc_mutex_t *mtx)
Releases a mutex.
Definition: threads.c:209
unsigned vlc_CPU_raw(void)
Determines the CPU capabilities.
Definition: cpu.c:118
Definition: vlc_atomic.h:41
const char var[sizeof("video")]
Definition: player.c:1732
int vlc_dup(int oldfd)
Duplicates a file descriptor.
Definition: filesystem.c:255
#define msg_Err(p_this,...)
Definition: vlc_messages.h:102
static struct addrinfo * makeipv4info(int type, int proto, u_long ip, u_short port, const char *name)
Definition: getaddrinfo.c:161
#define vlc_sd_Create(obj, a, b)
Definition: vlc_services_discovery.h:152
services_discovery_category_e
Service discovery categories.
Definition: vlc_services_discovery.h:83
@ VLC_MUSIC_DIR
Definition: vlc_configuration.h:317
int vlc_memfd(void)
Creates an anonymous regular file descriptor, i.e.
Definition: filesystem.c:37
@ VLC_PKG_LIBEXEC_DIR
Package-specific executable read-only directory (e.g.
Definition: vlc_configuration.h:277
ssize_t getline(char **, size_t *, FILE *)
static int gai_error_from_herrno(void)
Definition: getaddrinfo.c:97
static void vlc_cloexec(int fd)
Definition: filesystem.c:49
void vlc_cancel(vlc_thread_t thread_id)
Marks a thread as cancelled.
Definition: thread.c:167