Lines Matching full:config
42 struct config { struct
85 oss_init(struct config *config) in oss_init() argument
90 if ((config->fd = open(config->device, config->mode)) < 0) in oss_init()
91 err(1, "Error opening the device %s", config->device); in oss_init()
94 if (ioctl(config->fd, SNDCTL_ENGINEINFO, &config->audio_info) < 0) in oss_init()
98 if (ioctl(config->fd, SNDCTL_DSP_GETCAPS, &config->audio_info.caps) < 0) in oss_init()
102 if (!(config->audio_info.caps & PCM_CAP_TRIGGER)) in oss_init()
106 if (config->mmap) { in oss_init()
107 if (!(config->audio_info.caps & PCM_CAP_MMAP)) in oss_init()
110 if (ioctl(config->fd, SNDCTL_DSP_COOKEDMODE, &tmp) < 0) in oss_init()
115 if (ioctl(config->fd, SNDCTL_DSP_SETFMT, &config->format) < 0) in oss_init()
119 if (ioctl(config->fd, SNDCTL_DSP_CHANNELS, &config->audio_info.max_channels) < 0) in oss_init()
123 if (ioctl(config->fd, SNDCTL_DSP_SPEED, &config->sample_rate) < 0) in oss_init()
127 switch (config->format) { in oss_init()
130 config->sample_size = 1; in oss_init()
136 config->sample_size = 2; in oss_init()
142 config->sample_size = 3; in oss_init()
150 config->sample_size = 4; in oss_init()
153 errx(1, "Invalid audio format %d", config->format); in oss_init()
177 config->buffer_info.fragments = 2; in oss_init()
178 tmp = size2exp(config->sample_size * config->audio_info.max_channels); in oss_init()
179 tmp = ((config->buffer_info.fragments) << 16) | tmp; in oss_init()
180 if (ioctl(config->fd, SNDCTL_DSP_SETFRAGMENT, &tmp) < 0) in oss_init()
184 if ((config->mode & O_ACCMODE) == O_RDONLY) in oss_init()
186 if (ioctl(config->fd, request, &config->buffer_info) < 0) in oss_init()
188 if (config->buffer_info.fragments < 1) in oss_init()
189 config->buffer_info.fragments = config->buffer_info.fragstotal; in oss_init()
190 if (config->buffer_info.bytes < 1) in oss_init()
191 config->buffer_info.bytes = config->buffer_info.fragstotal * config->buffer_info.fragsize; in oss_init()
192 if (config->buffer_info.bytes < 1) { in oss_init()
194 config->buffer_info.bytes); in oss_init()
196 config->sample_count = config->buffer_info.bytes / config->sample_size; in oss_init()
197 config->chsamples = config->sample_count / config->audio_info.max_channels; in oss_init()
201 config->buffer_info.bytes, config->buffer_info.fragments, in oss_init()
202 config->buffer_info.fragsize, config->buffer_info.fragstotal, in oss_init()
203 config->sample_count); in oss_init()
206 switch (config->mode & O_ACCMODE) { in oss_init()
220 errx(1, "Invalid mode %d", config->mode); in oss_init()
225 if (config->mmap) { in oss_init()
226 config->buf = mmap(NULL, config->buffer_info.bytes, prot, MAP_SHARED, config->fd, 0); in oss_init()
227 if (config->buf == MAP_FAILED) in oss_init()
230 if ((config->buf = malloc(config->buffer_info.bytes)) == NULL) in oss_init()
235 if (ioctl(config->fd, SNDCTL_DSP_SETTRIGGER, &tmp) < 0) in oss_init()