--- /dev/null
+#ifndef LIBPICOFE_SNDOUT_H
+#define LIBPICOFE_SNDOUT_H
+
+struct sndout_driver {
+ const char *name;
+ int (*init)(void);
+ void (*exit)(void);
+ int (*start)(int rate, int stereo);
+ void (*stop)(void);
+ void (*wait)(void);
+ int (*write_nb)(const void *data, int bytes);
+};
+
+extern struct sndout_driver sndout_current;
+
+void sndout_init(void);
+
+static inline void sndout_exit(void)
+{
+ sndout_current.exit();
+}
+
+static inline int sndout_start(int rate, int stereo)
+{
+ return sndout_current.start(rate, stereo);
+}
+
+static inline void sndout_stop(void)
+{
+ sndout_current.stop();
+}
+
+static inline void sndout_wait(void)
+{
+ sndout_current.wait();
+}
+
+static inline int sndout_write_nb(const void *data, int bytes)
+{
+ return sndout_current.write_nb(data, bytes);
+}
+
+#endif // LIBPICOFE_SNDOUT_H