Index: roard/driver.c
===================================================================
--- roard/driver.c	(revision 2365)
+++ roard/driver.c	(revision 2367)
@@ -119,5 +119,5 @@
     memset(*inst, 0, sizeof(struct roar_vio_calls));
 
-    if ( (i = g_driver[i].vio_init(*inst, device, info, -1)) == -1 ) {
+    if ( (i = g_driver[i].vio_init(*inst, device, info, -1, NULL)) == -1 ) {
      free(*inst);
      return -1;
@@ -172,5 +172,5 @@
 
    ROAR_DBG("driver_openvio(*): Opening VIO driver %s(%i)...", driver, i);
-   return g_driver[i].vio_init(calls, device, info, fh);
+   return g_driver[i].vio_init(calls, device, info, fh, sstream);
   }
  }
@@ -245,5 +245,5 @@
 
 
-int driver_cdriver_open(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh) {
+int driver_cdriver_open(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh, struct roar_stream_server * sstream) {
  char * driver;
  char * delm;
Index: roard/driver_ao.c
===================================================================
--- roard/driver_ao.c	(revision 960)
+++ roard/driver_ao.c	(revision 2367)
@@ -38,5 +38,5 @@
 }
 
-int driver_ao_open_vio(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh) {
+int driver_ao_open_vio(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh, struct roar_stream_server * sstream) {
 //int driver_ao_open(DRIVER_USERDATA_T * inst, char * device, struct roar_audio_info * info) {
  ao_device        * aodevice;
Index: roard/driver_dmx.c
===================================================================
--- roard/driver_dmx.c	(revision 1831)
+++ roard/driver_dmx.c	(revision 2367)
@@ -25,5 +25,5 @@
 #include "roard.h"
 
-int driver_dmx_open_vio  (struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh) {
+int driver_dmx_open_vio  (struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh, struct roar_stream_server * sstream) {
 
  if ( fh == -1 ) {
Index: roard/driver_esd.c
===================================================================
--- roard/driver_esd.c	(revision 2365)
+++ roard/driver_esd.c	(revision 2367)
@@ -60,5 +60,5 @@
 }
 
-int driver_esd_open_vio(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh) {
+int driver_esd_open_vio(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh, struct roar_stream_server * sstream) {
 
  if ( fh != -1 )
Index: roard/driver_oss.c
===================================================================
--- roard/driver_oss.c	(revision 1672)
+++ roard/driver_oss.c	(revision 2367)
@@ -329,5 +329,5 @@
 
 #define er() close(self->fh); if ( self->device ) free(self->device); free(self); return -1
-int driver_oss_open(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh) {
+int driver_oss_open(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh, struct roar_stream_server * sstream) {
  struct driver_oss * self = NULL;
 
Index: roard/driver_pwmled.c
===================================================================
--- roard/driver_pwmled.c	(revision 2056)
+++ roard/driver_pwmled.c	(revision 2367)
@@ -25,5 +25,5 @@
 #include "roard.h"
 
-int driver_pwmled_open_vio  (struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh) {
+int driver_pwmled_open_vio  (struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh, struct roar_stream_server * sstream) {
  struct roar_vio_defaults def;
  struct driver_pwmled * self = malloc(sizeof(struct driver_pwmled));
Index: roard/driver_raw.c
===================================================================
--- roard/driver_raw.c	(revision 2365)
+++ roard/driver_raw.c	(revision 2367)
@@ -26,5 +26,5 @@
 
 #ifdef ROAR_HAVE_IO_POSIX
-int driver_raw_open_vio(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh) {
+int driver_raw_open_vio(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh, struct roar_stream_server * sstream) {
 
  if ( device == NULL ) {
Index: roard/driver_roar.c
===================================================================
--- roard/driver_roar.c	(revision 2365)
+++ roard/driver_roar.c	(revision 2367)
@@ -25,5 +25,5 @@
 #include "roard.h"
 
-int driver_roar_open_vio(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh) {
+int driver_roar_open_vio(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh, struct roar_stream_server * sstream) {
 
  if ( fh != -1 ) { // this is a connection to a roard, no roar_simple_*() interface avalible for this case
Index: roard/driver_shout.c
===================================================================
--- roard/driver_shout.c	(revision 957)
+++ roard/driver_shout.c	(revision 2367)
@@ -28,5 +28,5 @@
 int _driver_shout_usage_counter = 0;
 
-int     driver_shout_open_vio(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh) {
+int     driver_shout_open_vio(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh, struct roar_stream_server * sstream) {
  char * s_server = NULL;
  char * s_mount  = NULL;
Index: roard/driver_sndio.c
===================================================================
--- roard/driver_sndio.c	(revision 1672)
+++ roard/driver_sndio.c	(revision 2367)
@@ -43,5 +43,5 @@
 
 #define er() if ( self->handle ) sio_close(self->handle); if ( self->device ) free(self->device); free(self); return -1
-int driver_sndio_open(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh) {
+int driver_sndio_open(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh, struct roar_stream_server * sstream) {
  struct driver_sndio * self = NULL;
 
Index: roard/driver_sysclock.c
===================================================================
--- roard/driver_sysclock.c	(revision 2213)
+++ roard/driver_sysclock.c	(revision 2367)
@@ -26,5 +26,5 @@
 
 #ifdef ROAR_HAVE_DRIVER_SYSCLOCK
-int driver_sysclock_open_vio(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh) {
+int driver_sysclock_open_vio(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh, struct roar_stream_server * sstream) {
  struct driver_sysclock * self = malloc(sizeof(struct driver_sysclock));
 
Index: roard/include/driver.h
===================================================================
--- roard/include/driver.h	(revision 2365)
+++ roard/include/driver.h	(revision 2367)
@@ -103,5 +103,5 @@
  int (*open )(DRIVER_USERDATA_T * inst, char * device, struct roar_audio_info * info);
  int (*close)(DRIVER_USERDATA_T   inst);
- int (*vio_init)(struct roar_vio_calls * calls, char * device, struct roar_audio_info * info, int fh);
+ int (*vio_init)(struct roar_vio_calls * calls, char * device, struct roar_audio_info * info, int fh, struct roar_stream_server * sstream);
 };
 
@@ -125,5 +125,5 @@
 
 // opening a cdriver
-int driver_cdriver_open(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh);
+int driver_cdriver_open(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh, struct roar_stream_server * sstream);
 
 #endif
Index: roard/include/driver_ao.h
===================================================================
--- roard/include/driver_ao.h	(revision 958)
+++ roard/include/driver_ao.h	(revision 2367)
@@ -26,5 +26,5 @@
 #define _DRIVER_AO_H_
 
-int driver_ao_open_vio(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh);
+int driver_ao_open_vio(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh, struct roar_stream_server * sstream);
 int driver_ao_close(DRIVER_USERDATA_T   inst);
 ssize_t driver_ao_write(struct roar_vio_calls * vio, void *buf, size_t count);
Index: roard/include/driver_dmx.h
===================================================================
--- roard/include/driver_dmx.h	(revision 1828)
+++ roard/include/driver_dmx.h	(revision 2367)
@@ -26,5 +26,5 @@
 #define _DRIVER_DMX_H_
 
-int driver_dmx_open_vio  (struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh);
+int driver_dmx_open_vio  (struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh, struct roar_stream_server * sstream);
 ssize_t driver_dmx_write (struct roar_vio_calls * vio,  void *buf, size_t count);
 int     driver_dmx_ctl   (struct roar_vio_calls * vio,  int cmd, void * data);
Index: roard/include/driver_esd.h
===================================================================
--- roard/include/driver_esd.h	(revision 1656)
+++ roard/include/driver_esd.h	(revision 2367)
@@ -27,5 +27,5 @@
 
 int driver_esd_open_sysio(DRIVER_USERDATA_T * inst,   char * device, struct roar_audio_info * info);
-int driver_esd_open_vio(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh);
+int driver_esd_open_vio(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh, struct roar_stream_server * sstream);
 int driver_esd_close(DRIVER_USERDATA_T   inst);
 int driver_esd_pause(DRIVER_USERDATA_T   inst, int newstate);
Index: roard/include/driver_oss.h
===================================================================
--- roard/include/driver_oss.h	(revision 1544)
+++ roard/include/driver_oss.h	(revision 2367)
@@ -38,5 +38,5 @@
 };
 
-int driver_oss_open(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh);
+int driver_oss_open(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh, struct roar_stream_server * sstream);
 int driver_oss_close(DRIVER_USERDATA_T   inst);
 int driver_oss_sync(struct roar_vio_calls * vio);
Index: roard/include/driver_pwmled.h
===================================================================
--- roard/include/driver_pwmled.h	(revision 1983)
+++ roard/include/driver_pwmled.h	(revision 2367)
@@ -33,5 +33,5 @@
 };
 
-int driver_pwmled_open_vio  (struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh);
+int driver_pwmled_open_vio  (struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh, struct roar_stream_server * sstream);
 ssize_t driver_pwmled_write (struct roar_vio_calls * vio,  void *buf, size_t count);
 int     driver_pwmled_ctl   (struct roar_vio_calls * vio,  int cmd, void * data);
Index: roard/include/driver_raw.h
===================================================================
--- roard/include/driver_raw.h	(revision 947)
+++ roard/include/driver_raw.h	(revision 2367)
@@ -26,5 +26,5 @@
 #define _DRIVER_RAW_H_
 
-int driver_raw_open_vio(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh);
+int driver_raw_open_vio(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh, struct roar_stream_server * sstream);
 int driver_raw_close(DRIVER_USERDATA_T   inst);
 int driver_raw_pause(DRIVER_USERDATA_T   inst, int newstate);
Index: roard/include/driver_roar.h
===================================================================
--- roard/include/driver_roar.h	(revision 949)
+++ roard/include/driver_roar.h	(revision 2367)
@@ -26,5 +26,5 @@
 #define _DRIVER_ROAR_H_
 
-int driver_roar_open_vio(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh);
+int driver_roar_open_vio(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh, struct roar_stream_server * sstream);
 int driver_roar_close(DRIVER_USERDATA_T   inst);
 int driver_roar_pause(DRIVER_USERDATA_T   inst, int newstate);
Index: roard/include/driver_shout.h
===================================================================
--- roard/include/driver_shout.h	(revision 950)
+++ roard/include/driver_shout.h	(revision 2367)
@@ -26,5 +26,5 @@
 #define _DRIVER_SHOUT_H_
 
-int     driver_shout_open_vio(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh);
+int     driver_shout_open_vio(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh, struct roar_stream_server * sstream);
 int     driver_shout_close(DRIVER_USERDATA_T   inst);
 ssize_t driver_shout_write(struct roar_vio_calls * vio, void *buf, size_t count);
Index: roard/include/driver_sndio.h
===================================================================
--- roard/include/driver_sndio.h	(revision 1546)
+++ roard/include/driver_sndio.h	(revision 2367)
@@ -36,5 +36,5 @@
 };
 
-int     driver_sndio_open         (struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh);
+int     driver_sndio_open         (struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh, struct roar_stream_server * sstream);
 int     driver_sndio_close_vio    (struct roar_vio_calls * vio);
 int     driver_sndio_open_device  (struct driver_sndio * self);
Index: roard/include/driver_sysclock.h
===================================================================
--- roard/include/driver_sysclock.h	(revision 2211)
+++ roard/include/driver_sysclock.h	(revision 2367)
@@ -31,5 +31,5 @@
 };
 
-int     driver_sysclock_open_vio(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh);
+int     driver_sysclock_open_vio(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh, struct roar_stream_server * sstream);
 int     driver_sysclock_close   (struct roar_vio_calls * vio);
 ssize_t driver_sysclock_write   (struct roar_vio_calls * vio, void *buf, size_t count);
