+#endif
+ if((oss_fd = open(device, O_WRONLY, 0)) < 0)
+ fatal(errno, "error opening %s", device);
+#if !EMPEG_HOST
+ int stereo = (uaudio_channels == 2), format;
+ if(ioctl(oss_fd, SNDCTL_DSP_STEREO, &stereo) < 0)
+ fatal(errno, "error calling ioctl SNDCTL_DSP_STEREO %d", stereo);
+ if(uaudio_bits == 16)
+ format = uaudio_signed ? AFMT_S16_NE : AFMT_U16_NE;
+ else
+ format = uaudio_signed ? AFMT_S8 : AFMT_U8;
+ if(ioctl(oss_fd, SNDCTL_DSP_SETFMT, &format) < 0)
+ fatal(errno, "error calling ioctl SNDCTL_DSP_SETFMT %#x", format);
+ int rate = uaudio_rate;
+ if(ioctl(oss_fd, SNDCTL_DSP_SPEED, &rate) < 0)
+ fatal(errno, "error calling ioctl SNDCTL_DSP_SPEED %d", rate);
+ if(rate != uaudio_rate)
+ error(0, "asked for %dHz, got %dHz", uaudio_rate, rate);
+#endif
+}
+
+static void oss_activate(void) {
+ oss_open();
+ uaudio_thread_activate();