Lines Matching defs:pcm

107 int snd_pcm_hw_param_any(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
111 return snd_pcm_hw_refine(pcm, params);
275 int snd_pcm_hw_param_set_integer(snd_pcm_t *pcm,
300 err = snd_pcm_hw_refine(pcm, params);
335 int snd_pcm_hw_param_set_first(snd_pcm_t *pcm,
346 err = snd_pcm_hw_refine(pcm, params);
377 int snd_pcm_hw_param_set_last(snd_pcm_t *pcm,
388 err = snd_pcm_hw_refine(pcm, params);
429 int snd_pcm_hw_param_set_min(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
453 err = snd_pcm_hw_refine(pcm, params);
506 int snd_pcm_hw_param_set_max(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
530 err = snd_pcm_hw_refine(pcm, params);
617 int snd_pcm_hw_param_set_minmax(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
645 err = snd_pcm_hw_refine(pcm, params);
714 int snd_pcm_hw_param_set(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
738 err = snd_pcm_hw_refine(pcm, params);
771 int snd_pcm_hw_param_set_mask(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
795 err = snd_pcm_hw_refine(pcm, params);
812 int snd_pcm_hw_param_set_near(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
839 err = snd_pcm_hw_param_set_min(pcm, params, SND_CHANGE, var, &min, &mindir);
854 err = snd_pcm_hw_param_set_max(pcm, &params1, SND_CHANGE, var, &max, &maxdir);
863 err = snd_pcm_hw_param_set_max(pcm, params, SND_CHANGE, var, &max, &maxdir);
872 err = snd_pcm_hw_param_set_last(pcm, params, var, val, dir);
874 err = snd_pcm_hw_param_set_first(pcm, params, var, val, dir);
889 int snd_pcm_hw_param_set_next(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
922 (err = snd_pcm_hw_param_set_min(pcm, params, SND_CHANGE, var, &min, &mindir)) >= 0) {
927 err = snd_pcm_hw_param_set_max(pcm, &params1, SND_CHANGE, var, &max, &maxdir);
938 err = snd_pcm_hw_param_set_max(pcm, params, SND_CHANGE, var, &max, &maxdir);
945 v = snd_pcm_hw_param_set_last(pcm, params, var, dir);
947 v = snd_pcm_hw_param_set_first(pcm, params, var, dir);
953 static int snd_pcm_hw_param_set_near_minmax(snd_pcm_t *pcm,
962 return snd_pcm_hw_param_set_near(pcm, params, var, &min, mindir);
964 err = snd_pcm_hw_param_set_near(pcm, &tmp, var, &min, mindir);
969 err = snd_pcm_hw_param_set_near(pcm, &tmp, var, &max, maxdir);
974 err = snd_pcm_hw_param_set_minmax(pcm, params, SND_CHANGE, var, &min, mindir,
981 int snd_pcm_hw_param_refine_near(snd_pcm_t *pcm,
993 if ((err = snd_pcm_hw_param_set_near_minmax(pcm, params, var,
999 int snd_pcm_hw_param_refine_multiple(snd_pcm_t *pcm,
1013 if (! snd_pcm_hw_param_set(pcm, params, SND_TRY, var, cur, 0))
1022 return snd_pcm_hw_param_refine_near(pcm, params, var, src);
1081 static int snd_pcm_hw_params_choose(snd_pcm_t *pcm, snd_pcm_hw_params_t *params)
1091 err = snd_pcm_hw_param_set_first(pcm, params, SND_PCM_HW_PARAM_ACCESS, NULL, 0);
1094 err = snd_pcm_hw_param_set_first(pcm, params, SND_PCM_HW_PARAM_FORMAT, NULL, 0);
1097 err = snd_pcm_hw_param_set_first(pcm, params, SND_PCM_HW_PARAM_SUBFORMAT, NULL, 0);
1100 err = snd_pcm_hw_param_set_first(pcm, params, SND_PCM_HW_PARAM_CHANNELS, NULL, 0);
1103 err = snd_pcm_hw_param_set_first(pcm, params, SND_PCM_HW_PARAM_RATE, NULL, 0);
1106 if (pcm->minperiodtime > 0) {
1112 if (err >= 0 && (long)min < pcm->minperiodtime &&
1113 (long)max > pcm->minperiodtime) {
1114 min = pcm->minperiodtime; dir = 1;
1115 snd_pcm_hw_param_set_min(pcm, params, SND_CHANGE, SND_PCM_HW_PARAM_PERIOD_TIME, &min, &dir);
1118 if (pcm->compat) {
1120 err = snd_pcm_hw_param_set_first(pcm, params, SND_PCM_HW_PARAM_PERIOD_TIME, NULL, 0);
1123 err = snd_pcm_hw_param_set_first(pcm, params, SND_PCM_HW_PARAM_PERIOD_SIZE, NULL, 0);
1126 err = snd_pcm_hw_param_set_last(pcm, params, SND_PCM_HW_PARAM_BUFFER_SIZE, NULL, 0);
1131 err = snd_pcm_hw_param_set_last(pcm, params, SND_PCM_HW_PARAM_BUFFER_SIZE, NULL, 0);
1134 err = snd_pcm_hw_param_set_first(pcm, params, SND_PCM_HW_PARAM_PERIOD_SIZE, NULL, 0);
1137 err = snd_pcm_hw_param_set_first(pcm, params, SND_PCM_HW_PARAM_PERIOD_TIME, NULL, 0);
1141 err = snd_pcm_hw_param_set_first(pcm, params, SND_PCM_HW_PARAM_TICK_TIME, NULL, 0);
1291 snd_pcm_t *pcm,
1296 snd_pcm_t *pcm,
1300 snd_pcm_t *pcm,
1315 snd_pcm_t *pcm,
1319 snd_pcm_t *pcm,
1336 int snd_pcm_hw_params_strategy(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
1345 int badness = strategy->min_badness(params, badness_max, pcm, strategy);
1355 var = strategy->choose_param(params, pcm, strategy);
1362 value = strategy->next_value(&params1, var, value, &dir, pcm, strategy);
1365 badness = snd_pcm_hw_params_strategy(pcm, &params1, strategy, badness_min, badness_max);
1395 snd_pcm_t *pcm ATTRIBUTE_UNUSED,
1426 snd_pcm_t *pcm,
1431 return pars[var].next_value(params, var, value, dir, pcm, &pars[var]);
1437 snd_pcm_t *pcm,
1447 b = pars[var].min_badness(params, var, pcm, &pars[var]);
1464 snd_pcm_t *pcm,
1469 int value = snd_pcm_hw_param_set_near(pcm, &params1, var, p->best, 0);
1481 snd_pcm_t *pcm,
1487 return snd_pcm_hw_param_set_near(pcm, params, var, p->best, dir);
1489 return snd_pcm_hw_param_set_next(pcm, params, var, p->best, 0, value, dir);
1501 snd_pcm_t *pcm,
1507 if (snd_pcm_hw_param_set(pcm, (snd_pcm_hw_params_t *) params, SND_TEST, var, p->choices[k].value, 0))
1517 snd_pcm_t *pcm,
1532 int err = snd_pcm_hw_param_set(pcm, params, SND_TRY, var, v, 0);
1626 int snd_pcm_hw_params_try_explain_failure1(snd_pcm_t *pcm,
1640 err = snd_pcm_hw_refine(pcm, &i);
1642 snd_pcm_hw_params_try_explain_failure1(pcm, fail, &i, depth - 1, out) < 0)
1652 int snd_pcm_hw_params_try_explain_failure(snd_pcm_t *pcm,
1662 assert(pcm && fail);
1672 err = snd_pcm_hw_refine(pcm, &i);
1678 snd_pcm_hw_params_any(pcm, &any);
1681 return snd_pcm_hw_params_try_explain_failure1(pcm, fail, success, depth, out);
2074 int snd_pcm_hw_refine_soft(snd_pcm_t *pcm ATTRIBUTE_UNUSED, snd_pcm_hw_params_t *params)
2086 snd_output_printf(log, "refine_soft '%s' (begin)\n", pcm->name);
2181 snd_output_printf(log, "refine_soft '%s' (end-%i)\n", pcm->name, changed);
2206 int snd_pcm_hw_refine_slave(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
2207 int (*cprepare)(snd_pcm_t *pcm,
2209 int (*cchange)(snd_pcm_t *pcm,
2212 int (*sprepare)(snd_pcm_t *pcm,
2214 int (*schange)(snd_pcm_t *pcm,
2217 int (*srefine)(snd_pcm_t *pcm,
2230 err = cprepare(pcm, params);
2233 err = sprepare(pcm, &sparams);
2239 snd_output_printf(log, "hw_refine_slave - enter '%s'\n", pcm->name);
2245 snd_output_printf(log, "schange '%s' (client)\n", pcm->name);
2247 snd_output_printf(log, "schange '%s' (slave)\n", pcm->name);
2250 err = schange(pcm, params, &sparams);
2253 snd_output_printf(log, "srefine '%s' (client)\n", pcm->name);
2255 snd_output_printf(log, "srefine '%s' (slave)\n", pcm->name);
2258 err = srefine(pcm, &sparams);
2261 snd_output_printf(log, "srefine '%s', err < 0 (%i) (client)\n", pcm->name, err);
2263 snd_output_printf(log, "srefine '%s', err < 0 (%i) (slave)\n", pcm->name, err);
2266 cchange(pcm, params, &sparams);
2271 snd_output_printf(log, "schange '%s', err < 0 (%i) (client)\n", pcm->name, err);
2273 snd_output_printf(log, "schange '%s', err < 0 (%i) (slave)\n", pcm->name, err);
2276 cchange(pcm, params, &sparams);
2280 snd_output_printf(log, "cchange '%s'\n", pcm->name);
2282 err = cchange(pcm, params, &sparams);
2286 snd_output_printf(log, "refine_soft '%s'\n", pcm->name);
2288 err = snd_pcm_hw_refine_soft(pcm, params);
2294 snd_output_printf(log, "refine_soft ok '%s'\n", pcm->name);
2298 snd_output_printf(log, "refine_slave - leave '%s'\n", pcm->name);
2304 int snd_pcm_hw_params_slave(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
2305 int (*cchange)(snd_pcm_t *pcm,
2308 int (*sprepare)(snd_pcm_t *pcm,
2310 int (*schange)(snd_pcm_t *pcm,
2313 int (*sparams)(snd_pcm_t *pcm,
2319 err = sprepare(pcm, &slave_params);
2322 err = schange(pcm, params, &slave_params);
2325 err = sparams(pcm, &slave_params);
2327 cchange(pcm, params, &slave_params);
2331 static int snd_pcm_sw_params_default(snd_pcm_t *pcm, snd_pcm_sw_params_t *params)
2333 assert(pcm && params);
2334 assert(pcm->setup);
2337 params->tstamp_type = pcm->tstamp_type;
2340 params->avail_min = pcm->period_size;
2343 params->stop_threshold = pcm->buffer_size;
2346 params->boundary = pcm->buffer_size;
2350 while (params->boundary * 2 <= LONG_MAX - pcm->buffer_size)
2359 int snd_pcm_hw_refine(snd_pcm_t *pcm, snd_pcm_hw_params_t *params)
2366 assert(pcm && params);
2371 if (pcm->ops->hw_refine)
2372 res = pcm->ops->hw_refine(pcm->op_arg, params);
2395 int _snd_pcm_hw_params_internal(snd_pcm_t *pcm, snd_pcm_hw_params_t *params)
2400 err = snd_pcm_hw_refine(pcm, params);
2403 snd_pcm_hw_params_choose(pcm, params);
2404 if (pcm->setup) {
2405 err = snd_pcm_hw_free(pcm);
2409 if (pcm->ops->hw_params)
2410 err = pcm->ops->hw_params(pcm->op_arg, params);
2416 pcm->setup = 1;
2417 INTERNAL(snd_pcm_hw_params_get_access)(params, &pcm->access);
2418 INTERNAL(snd_pcm_hw_params_get_format)(params, &pcm->format);
2419 INTERNAL(snd_pcm_hw_params_get_subformat)(params, &pcm->subformat);
2420 INTERNAL(snd_pcm_hw_params_get_channels)(params, &pcm->channels);
2421 INTERNAL(snd_pcm_hw_params_get_rate)(params, &pcm->rate, 0);
2422 snd_interval_copy(&pcm->periods, &params->intervals[SND_PCM_HW_PARAM_PERIODS - SND_PCM_HW_PARAM_FIRST_INTERVAL]);
2423 snd_interval_copy(&pcm->buffer_time, &params->intervals[SND_PCM_HW_PARAM_BUFFER_TIME - SND_PCM_HW_PARAM_FIRST_INTERVAL]);
2424 INTERNAL(snd_pcm_hw_params_get_period_time)(params, &pcm->period_time, 0);
2425 INTERNAL(snd_pcm_hw_params_get_period_size)(params, &pcm->period_size, 0);
2426 INTERNAL(snd_pcm_hw_params_get_buffer_size)(params, &pcm->buffer_size);
2427 pcm->sample_bits = snd_pcm_format_physical_width(pcm->format);
2428 pcm->frame_bits = pcm->sample_bits * pcm->channels;
2429 fb = pcm->frame_bits;
2435 pcm->min_align = min_align;
2437 pcm->hw_flags = params->flags;
2438 pcm->info = params->info;
2439 pcm->msbits = params->msbits;
2440 pcm->rate_num = params->rate_num;
2441 pcm->rate_den = params->rate_den;
2442 pcm->fifo_size = params->fifo_size;
2446 err = snd_pcm_sw_params_default(pcm, &sw);
2449 err = snd_pcm_sw_params(pcm, &sw);
2453 if (pcm->mmap_rw ||
2454 pcm->access == SND_PCM_ACCESS_MMAP_INTERLEAVED ||
2455 pcm->access == SND_PCM_ACCESS_MMAP_NONINTERLEAVED ||
2456 pcm->access == SND_PCM_ACCESS_MMAP_COMPLEX) {
2457 err = snd_pcm_mmap(pcm);