Lines Matching refs:cdesc

138 feeder_build_format(struct pcm_channel *c, struct feeder_chain_desc *cdesc)
144 desc = &(cdesc->desc);
157 desc->in = cdesc->current.afmt;
158 desc->out = cdesc->target.afmt;
169 cdesc->current.afmt = cdesc->target.afmt;
179 feeder_build_formatne(struct pcm_channel *c, struct feeder_chain_desc *cdesc)
184 if (cdesc->afmt_ne == 0 ||
185 AFMT_ENCODING(cdesc->current.afmt) == cdesc->afmt_ne)
188 otarget = cdesc->target;
189 cdesc->target = cdesc->current;
190 cdesc->target.afmt = SND_FORMAT(cdesc->afmt_ne,
191 cdesc->current.matrix->channels, cdesc->current.matrix->ext);
193 ret = feeder_build_format(c, cdesc);
197 cdesc->target = otarget;
206 feeder_build_rate(struct pcm_channel *c, struct feeder_chain_desc *cdesc)
213 ret = feeder_build_formatne(c, cdesc);
217 desc = &(cdesc->desc);
230 desc->in = cdesc->current.afmt;
250 if (cdesc->dummy != 0) {
259 ret = FEEDER_SET(f, FEEDRATE_SRC, cdesc->current.rate);
266 ret = FEEDER_SET(f, FEEDRATE_DST, cdesc->target.rate);
275 cdesc->current.rate = cdesc->target.rate;
284 feeder_build_matrix(struct pcm_channel *c, struct feeder_chain_desc *cdesc)
291 ret = feeder_build_formatne(c, cdesc);
295 desc = &(cdesc->desc);
308 desc->in = cdesc->current.afmt;
309 desc->out = SND_FORMAT(cdesc->current.afmt,
310 cdesc->target.matrix->channels, cdesc->target.matrix->ext);
320 ret = feeder_matrix_setup(f, cdesc->current.matrix,
321 cdesc->target.matrix);
330 cdesc->current.afmt = desc->out;
331 cdesc->current.matrix = cdesc->target.matrix;
332 cdesc->use_matrix = 0;
341 feeder_build_volume(struct pcm_channel *c, struct feeder_chain_desc *cdesc)
348 ret = feeder_build_formatne(c, cdesc);
352 desc = &(cdesc->desc);
365 desc->in = cdesc->current.afmt;
382 if (cdesc->dummy != 0) {
391 ret = feeder_volume_apply_matrix(f, cdesc->current.matrix);
400 cdesc->use_volume = 0;
409 feeder_build_eq(struct pcm_channel *c, struct feeder_chain_desc *cdesc)
416 ret = feeder_build_formatne(c, cdesc);
420 desc = &(cdesc->desc);
433 desc->in = cdesc->current.afmt;
445 ret = FEEDER_SET(f, FEEDEQ_RATE, cdesc->current.rate);
454 cdesc->use_eq = 0;
463 feeder_build_root(struct pcm_channel *c, struct feeder_chain_desc *cdesc)
484 c->feeder->desc->in = cdesc->current.afmt;
485 c->feeder->desc->out = cdesc->current.afmt;
494 feeder_build_mixer(struct pcm_channel *c, struct feeder_chain_desc *cdesc)
500 desc = &(cdesc->desc);
513 desc->in = cdesc->current.afmt;
583 struct feeder_chain_desc cdesc;
597 bzero(&cdesc, sizeof(cdesc));
615 cdesc.mode = feeder_chain_mode;
616 cdesc.expensive = 1; /* XXX faster.. */
692 cdesc.origin.afmt = softfmt;
693 cdesc.origin.matrix = softmatrix;
694 cdesc.origin.rate = c->speed;
695 cdesc.target.afmt = hwfmt;
696 cdesc.target.matrix = hwmatrix;
697 cdesc.target.rate = sndbuf_getspd(c->bufhard);
699 cdesc.origin.afmt = hwfmt;
700 cdesc.origin.matrix = hwmatrix;
701 cdesc.origin.rate = sndbuf_getspd(c->bufhard);
702 cdesc.target.afmt = softfmt;
703 cdesc.target.matrix = softmatrix;
704 cdesc.target.rate = c->speed;
716 cdesc.origin = cdesc.target;
718 cdesc.target = cdesc.origin;
719 c->format = cdesc.target.afmt;
720 c->speed = cdesc.target.rate;
724 cdesc.dummy = 1;
730 cdesc.use_volume = 1;
732 if (feeder_matrix_compare(cdesc.origin.matrix,
733 cdesc.target.matrix) != 0)
734 cdesc.use_matrix = 1;
737 if (cdesc.dummy == 0 &&
742 cdesc.use_eq = 1;
744 if (FEEDFORMAT_NE_REQUIRED(&cdesc)) {
745 cdesc.afmt_ne =
746 (cdesc.dummy != 0) ?
748 feeder_chain_formats[cdesc.mode]) :
749 snd_fmtbest(AFMT_ENCODING(cdesc.target.afmt),
750 feeder_chain_formats[cdesc.mode]);
751 if (cdesc.afmt_ne == 0) {
754 cdesc.afmt_ne =
755 (((cdesc.dummy != 0) ? softfmt :
756 cdesc.target.afmt) &
763 cdesc.current = cdesc.origin;
770 ret = feeder_build_##t(c, &cdesc); \
795 if (FEEDMATRIX_UP(&cdesc)) {
796 if (FEEDEQ_REQUIRED(&cdesc) &&
797 (!FEEDEQ_VALIDRATE(&cdesc, target) ||
798 (cdesc.expensive == 0 && FEEDEQ_ECONOMY(&cdesc))))
800 if (FEEDRATE_REQUIRED(&cdesc))
803 if (FEEDVOLUME_REQUIRED(&cdesc))
805 if (FEEDEQ_REQUIRED(&cdesc))
807 } else if (FEEDMATRIX_DOWN(&cdesc)) {
809 if (FEEDVOLUME_REQUIRED(&cdesc))
811 if (FEEDEQ_REQUIRED(&cdesc) &&
812 (!FEEDEQ_VALIDRATE(&cdesc, target) ||
813 FEEDEQ_ECONOMY(&cdesc)))
815 if (FEEDRATE_REQUIRED(&cdesc))
817 if (FEEDEQ_REQUIRED(&cdesc))
820 if (FEEDRATE_DOWN(&cdesc)) {
821 if (FEEDEQ_REQUIRED(&cdesc) &&
822 !FEEDEQ_VALIDRATE(&cdesc, target)) {
823 if (FEEDVOLUME_REQUIRED(&cdesc))
829 if (FEEDMATRIX_REQUIRED(&cdesc))
831 if (FEEDVOLUME_REQUIRED(&cdesc))
833 if (FEEDRATE_UP(&cdesc)) {
834 if (FEEDEQ_REQUIRED(&cdesc) &&
835 !FEEDEQ_VALIDRATE(&cdesc, target))
839 if (FEEDEQ_REQUIRED(&cdesc))
843 if (FEEDFORMAT_REQUIRED(&cdesc))