2 * Copyright (C) 2005-2009 Andre Noll <maan@systemlinux.org>
4 * Licensed under the GPL v2. For licencing details see COPYING.
7 /** \file vss.h Exported functions from vss.c (para_server). */
9 void init_vss_task(int afs_socket
);
10 unsigned int vss_playing(void);
11 unsigned int vss_next(void);
12 unsigned int vss_repos(void);
13 unsigned int vss_paused(void);
14 unsigned int vss_stopped(void);
15 struct timeval
*vss_chunk_time(void);
16 const char *supported_audio_formats(void);
18 /** Stop playing after current audio file. */
20 /** Skip remaining part of current audio file. */
22 /** A reposition request was sent by a client. */
24 /** Currently playing. */
28 * Each paraslash sender may register arbitrary many clients to the virtual
29 * streaming system, possibly with varying fec parameters. In order to do so,
30 * it must allocate a \a fec_client_parms structure and pass it to \ref
33 * Clients are automatically removed from that list by the vss if an error
34 * occurs, or if the sender requests deletion of a client by calling \ref
35 * vss_del_fec_client().
39 /** FEC parameters requested by FEC clients. */
40 struct fec_client_parms
{
41 /** Number of data slices plus redundant slices. */
42 uint8_t slices_per_group
;
43 /** Number of slices minus number of redundant slices. */
44 uint8_t data_slices_per_group
;
45 /** Maximal number of bytes per slice. */
46 uint16_t max_slice_bytes
;
47 /** Called by vss.c when the next slice should be sent. */
48 int (*send
)(char *buf
, size_t num_bytes
, void *private_data
);
49 /** Passed verbatim to \a send(). */
53 int vss_add_fec_client(struct fec_client_parms
*fcp
, struct fec_client
**result
);
54 void vss_del_fec_client(struct fec_client
*fc
);
55 size_t vss_get_fec_eof_packet(const char **buf
);