Lines Matching refs:info
118 feed_matrix_apply(struct feed_matrix_info *info, uint8_t *src, uint8_t *dst, in feed_matrix_apply() argument
126 for (i = 0; info->matrix[i].chn[0] != SND_CHN_T_EOF; i++) { in feed_matrix_apply()
127 if (info->matrix[i].chn[0] == SND_CHN_T_NULL) { in feed_matrix_apply()
129 dst += info->bps; in feed_matrix_apply()
131 } else if (info->matrix[i].chn[1] == SND_CHN_T_EOF) { in feed_matrix_apply()
133 info->matrix[i].chn[0], fmt); in feed_matrix_apply()
135 dst += info->bps; in feed_matrix_apply()
140 for (j = 0; info->matrix[i].chn[j] != SND_CHN_T_EOF; in feed_matrix_apply()
143 info->matrix[i].chn[j], fmt); in feed_matrix_apply()
147 accum = (accum * info->matrix[i].mul) >> in feed_matrix_apply()
148 info->matrix[i].shift; in feed_matrix_apply()
154 dst += info->bps; in feed_matrix_apply()
156 src += info->ialign; in feed_matrix_apply()
161 feed_matrix_reset(struct feed_matrix_info *info) in feed_matrix_reset() argument
165 for (i = 0; i < nitems(info->matrix); i++) { in feed_matrix_reset()
167 j < (sizeof(info->matrix[i].chn) / in feed_matrix_reset()
168 sizeof(info->matrix[i].chn[0])); j++) { in feed_matrix_reset()
169 info->matrix[i].chn[j] = SND_CHN_T_EOF; in feed_matrix_reset()
171 info->matrix[i].mul = 1; in feed_matrix_reset()
172 info->matrix[i].shift = 0; in feed_matrix_reset()
177 feed_matrix_setup(struct feed_matrix_info *info, struct pcmchan_matrix *m_in, in feed_matrix_setup() argument
183 if (info == NULL || m_in == NULL || m_out == NULL || in feed_matrix_setup()
184 AFMT_CHANNEL(info->in) != m_in->channels || in feed_matrix_setup()
185 AFMT_CHANNEL(info->out) != m_out->channels || in feed_matrix_setup()
190 feed_matrix_reset(info); in feed_matrix_setup()
220 info->matrix[ch].chn[0] = SND_CHN_T_NULL; in feed_matrix_setup()
230 info->matrix[ch].chn[j++] = in feed_matrix_setup()
231 m_in->offset[i] * info->bps; in feed_matrix_setup()
233 info->matrix[ch].chn[j++] = in feed_matrix_setup()
254 info->matrix[ch].mul = mul; in feed_matrix_setup()
255 info->matrix[ch].shift = shift; in feed_matrix_setup()
262 for (i = 0; info->matrix[i].chn[0] != SND_CHN_T_EOF; i++) { in feed_matrix_setup()
264 for (j = 0; info->matrix[i].chn[j] != SND_CHN_T_EOF; j++) { in feed_matrix_setup()
268 (info->matrix[i].chn[j] == SND_CHN_T_NULL) ? in feed_matrix_setup()
269 0xffffffff : info->matrix[i].chn[j] / info->bps); in feed_matrix_setup()
272 info->matrix[i].mul, info->matrix[i].shift); in feed_matrix_setup()
282 struct feed_matrix_info *info; in feed_matrix_init() local
289 info = malloc(sizeof(*info), M_DEVBUF, M_NOWAIT | M_ZERO); in feed_matrix_init()
290 if (info == NULL) in feed_matrix_init()
293 info->in = f->desc->in; in feed_matrix_init()
294 info->out = f->desc->out; in feed_matrix_init()
295 info->fmt = AFMT_ENCODING(info->in); in feed_matrix_init()
296 info->bps = AFMT_BPS(info->in); in feed_matrix_init()
297 info->ialign = AFMT_ALIGN(info->in); in feed_matrix_init()
298 info->oalign = AFMT_ALIGN(info->out); in feed_matrix_init()
300 m_in = feeder_matrix_format_map(info->in); in feed_matrix_init()
301 m_out = feeder_matrix_format_map(info->out); in feed_matrix_init()
303 ret = feed_matrix_setup(info, m_in, m_out); in feed_matrix_init()
305 free(info, M_DEVBUF); in feed_matrix_init()
309 f->data = info; in feed_matrix_init()
317 struct feed_matrix_info *info; in feed_matrix_free() local
319 info = f->data; in feed_matrix_free()
320 if (info != NULL) in feed_matrix_free()
321 free(info, M_DEVBUF); in feed_matrix_free()
332 struct feed_matrix_info *info; in feed_matrix_feed() local
336 info = f->data; in feed_matrix_feed()
337 if (info->matrix[0].chn[0] == SND_CHN_T_EOF) in feed_matrix_feed()
341 count = SND_FXROUND(count, info->oalign); in feed_matrix_feed()
342 inmax = info->ialign + info->oalign; in feed_matrix_feed()
353 if (count < info->oalign) in feed_matrix_feed()
357 src = info->reservoir; in feed_matrix_feed()
358 j = info->ialign; in feed_matrix_feed()
360 if (info->ialign == info->oalign) in feed_matrix_feed()
361 j = count - info->oalign; in feed_matrix_feed()
362 else if (info->ialign > info->oalign) in feed_matrix_feed()
363 j = SND_FXROUND(count - info->oalign, in feed_matrix_feed()
364 info->ialign); in feed_matrix_feed()
366 j = (SND_FXDIV(count, info->oalign) - 1) * in feed_matrix_feed()
367 info->ialign; in feed_matrix_feed()
372 info->ialign); in feed_matrix_feed()
377 switch (info->fmt) { in feed_matrix_feed()
379 feed_matrix_apply(info, src, dst, j, AFMT_S16_NE); in feed_matrix_feed()
382 feed_matrix_apply(info, src, dst, j, AFMT_S24_NE); in feed_matrix_feed()
385 feed_matrix_apply(info, src, dst, j, AFMT_S32_NE); in feed_matrix_feed()
388 feed_matrix_apply(info, src, dst, j, info->fmt); in feed_matrix_feed()
392 j *= info->oalign; in feed_matrix_feed()