X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=vss.h;h=efabdf36915425e913176f57098f501f235c642a;hp=5c917e6d456a40672204c32aabb8cbc501ee4308;hb=625c5cd993d07a63061a0788f174e12fa1c221e0;hpb=00e4d4da1b2c00da139b09d3ed4ab9ad9fba2691 diff --git a/vss.h b/vss.h index 5c917e6d..efabdf36 100644 --- a/vss.h +++ b/vss.h @@ -25,3 +25,27 @@ const char *supported_audio_formats(void); #define VSS_PLAYING 8 /** A client requested to change the audio file selector. */ #define VSS_CHANGE 16 + +/** + * Each paraslash sender may register arbitrary many clients to the virtual + * streaming system, possibly with varying fec parameters. In order to do so, + * it must allocate a \a fec_client_parms structure and pass it to \ref + * add_fec_client. + * + * Clients are automatically removed from that list by the vss if an error + * occurs, or if the sender requests deletion of a client by calling \ref + * vss_del_fec_client(). + */ +struct fec_client; + +struct fec_client_parms { + uint8_t slices_per_group; + uint8_t data_slices_per_group; + uint16_t max_slice_bytes; + int (*send)(char *buf, size_t num_bytes, void *private_data); + void *private_data; +}; + +int vss_add_fec_client(struct fec_client_parms *fcp, struct fec_client **result); +void vss_del_fec_client(struct fec_client *fc); +size_t vss_get_fec_eof_packet(const char **buf);