Lines Matching refs:cdesc

140 feeder_build_format(struct pcm_channel *c, struct feeder_chain_desc *cdesc)  in feeder_build_format()  argument
146 desc = &(cdesc->desc); in feeder_build_format()
159 desc->in = cdesc->current.afmt; in feeder_build_format()
160 desc->out = cdesc->target.afmt; in feeder_build_format()
171 cdesc->current.afmt = cdesc->target.afmt; in feeder_build_format()
181 feeder_build_formatne(struct pcm_channel *c, struct feeder_chain_desc *cdesc) in feeder_build_formatne() argument
186 if (cdesc->afmt_ne == 0 || in feeder_build_formatne()
187 AFMT_ENCODING(cdesc->current.afmt) == cdesc->afmt_ne) in feeder_build_formatne()
190 otarget = cdesc->target; in feeder_build_formatne()
191 cdesc->target = cdesc->current; in feeder_build_formatne()
192 cdesc->target.afmt = SND_FORMAT(cdesc->afmt_ne, in feeder_build_formatne()
193 cdesc->current.matrix->channels, cdesc->current.matrix->ext); in feeder_build_formatne()
195 ret = feeder_build_format(c, cdesc); in feeder_build_formatne()
199 cdesc->target = otarget; in feeder_build_formatne()
208 feeder_build_rate(struct pcm_channel *c, struct feeder_chain_desc *cdesc) in feeder_build_rate() argument
215 ret = feeder_build_formatne(c, cdesc); in feeder_build_rate()
219 desc = &(cdesc->desc); in feeder_build_rate()
232 desc->in = cdesc->current.afmt; in feeder_build_rate()
252 if (cdesc->dummy != 0) { in feeder_build_rate()
261 ret = FEEDER_SET(f, FEEDRATE_SRC, cdesc->current.rate); in feeder_build_rate()
268 ret = FEEDER_SET(f, FEEDRATE_DST, cdesc->target.rate); in feeder_build_rate()
277 cdesc->current.rate = cdesc->target.rate; in feeder_build_rate()
286 feeder_build_matrix(struct pcm_channel *c, struct feeder_chain_desc *cdesc) in feeder_build_matrix() argument
293 ret = feeder_build_formatne(c, cdesc); in feeder_build_matrix()
297 desc = &(cdesc->desc); in feeder_build_matrix()
310 desc->in = cdesc->current.afmt; in feeder_build_matrix()
311 desc->out = SND_FORMAT(cdesc->current.afmt, in feeder_build_matrix()
312 cdesc->target.matrix->channels, cdesc->target.matrix->ext); in feeder_build_matrix()
322 ret = feeder_matrix_setup(f, cdesc->current.matrix, in feeder_build_matrix()
323 cdesc->target.matrix); in feeder_build_matrix()
332 cdesc->current.afmt = desc->out; in feeder_build_matrix()
333 cdesc->current.matrix = cdesc->target.matrix; in feeder_build_matrix()
334 cdesc->use_matrix = 0; in feeder_build_matrix()
343 feeder_build_volume(struct pcm_channel *c, struct feeder_chain_desc *cdesc) in feeder_build_volume() argument
350 ret = feeder_build_formatne(c, cdesc); in feeder_build_volume()
354 desc = &(cdesc->desc); in feeder_build_volume()
367 desc->in = cdesc->current.afmt; in feeder_build_volume()
384 if (cdesc->dummy != 0) { in feeder_build_volume()
393 ret = feeder_volume_apply_matrix(f, cdesc->current.matrix); in feeder_build_volume()
402 cdesc->use_volume = 0; in feeder_build_volume()
411 feeder_build_eq(struct pcm_channel *c, struct feeder_chain_desc *cdesc) in feeder_build_eq() argument
418 ret = feeder_build_formatne(c, cdesc); in feeder_build_eq()
422 desc = &(cdesc->desc); in feeder_build_eq()
435 desc->in = cdesc->current.afmt; in feeder_build_eq()
447 ret = FEEDER_SET(f, FEEDEQ_RATE, cdesc->current.rate); in feeder_build_eq()
456 cdesc->use_eq = 0; in feeder_build_eq()
465 feeder_build_root(struct pcm_channel *c, struct feeder_chain_desc *cdesc) in feeder_build_root() argument
486 c->feeder->desc->in = cdesc->current.afmt; in feeder_build_root()
487 c->feeder->desc->out = cdesc->current.afmt; in feeder_build_root()
496 feeder_build_mixer(struct pcm_channel *c, struct feeder_chain_desc *cdesc) in feeder_build_mixer() argument
502 desc = &(cdesc->desc); in feeder_build_mixer()
515 desc->in = cdesc->current.afmt; in feeder_build_mixer()
585 struct feeder_chain_desc cdesc; in feeder_chain() local
598 bzero(&cdesc, sizeof(cdesc)); in feeder_chain()
616 cdesc.mode = feeder_chain_mode; in feeder_chain()
617 cdesc.expensive = 1; /* XXX faster.. */ in feeder_chain()
693 cdesc.origin.afmt = softfmt; in feeder_chain()
694 cdesc.origin.matrix = softmatrix; in feeder_chain()
695 cdesc.origin.rate = c->speed; in feeder_chain()
696 cdesc.target.afmt = hwfmt; in feeder_chain()
697 cdesc.target.matrix = hwmatrix; in feeder_chain()
698 cdesc.target.rate = sndbuf_getspd(c->bufhard); in feeder_chain()
700 cdesc.origin.afmt = hwfmt; in feeder_chain()
701 cdesc.origin.matrix = hwmatrix; in feeder_chain()
702 cdesc.origin.rate = sndbuf_getspd(c->bufhard); in feeder_chain()
703 cdesc.target.afmt = softfmt; in feeder_chain()
704 cdesc.target.matrix = softmatrix; in feeder_chain()
705 cdesc.target.rate = c->speed; in feeder_chain()
717 cdesc.origin = cdesc.target; in feeder_chain()
719 cdesc.target = cdesc.origin; in feeder_chain()
720 c->format = cdesc.target.afmt; in feeder_chain()
721 c->speed = cdesc.target.rate; in feeder_chain()
726 if ((cdesc.origin.afmt & AFMT_CONVERTIBLE) == 0 || in feeder_chain()
727 (cdesc.target.afmt & AFMT_CONVERTIBLE) == 0) { in feeder_chain()
730 __func__, cdesc.origin.afmt, cdesc.target.afmt); in feeder_chain()
736 cdesc.dummy = 1; in feeder_chain()
742 cdesc.use_volume = 1; in feeder_chain()
744 if (feeder_matrix_compare(cdesc.origin.matrix, in feeder_chain()
745 cdesc.target.matrix) != 0) in feeder_chain()
746 cdesc.use_matrix = 1; in feeder_chain()
749 if (cdesc.dummy == 0 && in feeder_chain()
754 cdesc.use_eq = 1; in feeder_chain()
756 if (FEEDFORMAT_NE_REQUIRED(&cdesc)) { in feeder_chain()
757 cdesc.afmt_ne = in feeder_chain()
758 (cdesc.dummy != 0) ? in feeder_chain()
760 feeder_chain_formats[cdesc.mode]) : in feeder_chain()
761 snd_fmtbest(AFMT_ENCODING(cdesc.target.afmt), in feeder_chain()
762 feeder_chain_formats[cdesc.mode]); in feeder_chain()
763 if (cdesc.afmt_ne == 0) { in feeder_chain()
766 cdesc.afmt_ne = in feeder_chain()
767 (((cdesc.dummy != 0) ? softfmt : in feeder_chain()
768 cdesc.target.afmt) & in feeder_chain()
775 cdesc.current = cdesc.origin; in feeder_chain()
782 ret = feeder_build_##t(c, &cdesc); \ in feeder_chain()
807 if (FEEDMATRIX_UP(&cdesc)) { in feeder_chain()
808 if (FEEDEQ_REQUIRED(&cdesc) && in feeder_chain()
809 (!FEEDEQ_VALIDRATE(&cdesc, target) || in feeder_chain()
810 (cdesc.expensive == 0 && FEEDEQ_ECONOMY(&cdesc)))) in feeder_chain()
812 if (FEEDRATE_REQUIRED(&cdesc)) in feeder_chain()
815 if (FEEDVOLUME_REQUIRED(&cdesc)) in feeder_chain()
817 if (FEEDEQ_REQUIRED(&cdesc)) in feeder_chain()
819 } else if (FEEDMATRIX_DOWN(&cdesc)) { in feeder_chain()
821 if (FEEDVOLUME_REQUIRED(&cdesc)) in feeder_chain()
823 if (FEEDEQ_REQUIRED(&cdesc) && in feeder_chain()
824 (!FEEDEQ_VALIDRATE(&cdesc, target) || in feeder_chain()
825 FEEDEQ_ECONOMY(&cdesc))) in feeder_chain()
827 if (FEEDRATE_REQUIRED(&cdesc)) in feeder_chain()
829 if (FEEDEQ_REQUIRED(&cdesc)) in feeder_chain()
832 if (FEEDRATE_DOWN(&cdesc)) { in feeder_chain()
833 if (FEEDEQ_REQUIRED(&cdesc) && in feeder_chain()
834 !FEEDEQ_VALIDRATE(&cdesc, target)) { in feeder_chain()
835 if (FEEDVOLUME_REQUIRED(&cdesc)) in feeder_chain()
841 if (FEEDMATRIX_REQUIRED(&cdesc)) in feeder_chain()
843 if (FEEDVOLUME_REQUIRED(&cdesc)) in feeder_chain()
845 if (FEEDRATE_UP(&cdesc)) { in feeder_chain()
846 if (FEEDEQ_REQUIRED(&cdesc) && in feeder_chain()
847 !FEEDEQ_VALIDRATE(&cdesc, target)) in feeder_chain()
851 if (FEEDEQ_REQUIRED(&cdesc)) in feeder_chain()
855 if (FEEDFORMAT_REQUIRED(&cdesc)) in feeder_chain()