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 tmp = config->format; in oss_init()
116 if (ioctl(config->fd, SNDCTL_DSP_SETFMT, &tmp) < 0) in oss_init()
118 if (tmp != config->format) in oss_init()
119 warnx("Format: requested=%08x, got=%08x", config->format, tmp); in oss_init()
120 config->format = tmp; in oss_init()
123 tmp = config->audio_info.max_channels; in oss_init()
124 if (ioctl(config->fd, SNDCTL_DSP_CHANNELS, &tmp) < 0) in oss_init()
126 if (tmp != config->audio_info.max_channels) in oss_init()
127 warnx("Channels: requested=%d, got=%d", config->audio_info.max_channels, tmp); in oss_init()
128 config->audio_info.max_channels = tmp; in oss_init()
131 tmp = config->sample_rate; in oss_init()
132 if (ioctl(config->fd, SNDCTL_DSP_SPEED, &config->sample_rate) < 0) in oss_init()
134 if (tmp != config->sample_rate) in oss_init()
135 warnx("Sample rate: requested=%d, got=%d", config->sample_rate, tmp); in oss_init()
136 config->sample_rate = tmp; in oss_init()
139 switch (config->format) { in oss_init()
142 config->sample_size = 1; in oss_init()
148 config->sample_size = 2; in oss_init()
154 config->sample_size = 3; in oss_init()
162 config->sample_size = 4; in oss_init()
165 errx(1, "Invalid audio format %d", config->format); in oss_init()
189 config->buffer_info.fragments = 2; in oss_init()
190 tmp = size2exp(config->sample_size * config->audio_info.max_channels); in oss_init()
191 tmp = ((config->buffer_info.fragments) << 16) | tmp; in oss_init()
192 if (ioctl(config->fd, SNDCTL_DSP_SETFRAGMENT, &tmp) < 0) in oss_init()
196 if ((config->mode & O_ACCMODE) == O_RDONLY) in oss_init()
198 if (ioctl(config->fd, request, &config->buffer_info) < 0) in oss_init()
200 if (config->buffer_info.fragments < 1) in oss_init()
201 config->buffer_info.fragments = config->buffer_info.fragstotal; in oss_init()
202 if (config->buffer_info.bytes < 1) in oss_init()
203 config->buffer_info.bytes = config->buffer_info.fragstotal * config->buffer_info.fragsize; in oss_init()
204 if (config->buffer_info.bytes < 1) { in oss_init()
206 config->buffer_info.bytes); in oss_init()
208 config->sample_count = config->buffer_info.bytes / config->sample_size; in oss_init()
209 config->chsamples = config->sample_count / config->audio_info.max_channels; in oss_init()
214 config->buffer_info.bytes, config->buffer_info.fragments, in oss_init()
215 config->buffer_info.fragsize, config->buffer_info.fragstotal, in oss_init()
216 config->sample_count, config->audio_info.max_channels, in oss_init()
217 config->sample_size, config->sample_rate, config->format); in oss_init()
220 switch (config->mode & O_ACCMODE) { in oss_init()
234 errx(1, "Invalid mode %d", config->mode); in oss_init()
239 if (config->mmap) { in oss_init()
240 config->buf = mmap(NULL, config->buffer_info.bytes, prot, MAP_SHARED, config->fd, 0); in oss_init()
241 if (config->buf == MAP_FAILED) in oss_init()
244 if ((config->buf = malloc(config->buffer_info.bytes)) == NULL) in oss_init()
249 if (ioctl(config->fd, SNDCTL_DSP_SETTRIGGER, &tmp) < 0) in oss_init()