Lines Matching +full:rate +full:- +full:active +full:- +full:ms
1 // SPDX-License-Identifier: GPL-2.0
11 // minimal active userspace.
21 #include "alsa-local.h"
68 if (tstamp->tv_nsec > now.tv_nsec) { in timestamp_diff_ms()
69 diff.tv_sec = now.tv_sec - tstamp->tv_sec - 1; in timestamp_diff_ms()
70 diff.tv_nsec = (now.tv_nsec + 1000000000L) - tstamp->tv_nsec; in timestamp_diff_ms()
72 diff.tv_sec = now.tv_sec - tstamp->tv_sec; in timestamp_diff_ms()
73 diff.tv_nsec = now.tv_nsec - tstamp->tv_nsec; in timestamp_diff_ms()
89 return -1; in device_from_id()
97 for (pcm_data = pcm_list; pcm_data != NULL; pcm_data = pcm_data->next) { in missing_device()
98 if (pcm_data->card != card) in missing_device()
100 if (pcm_data->device != device) in missing_device()
102 if (pcm_data->subdevice != subdevice) in missing_device()
104 if (pcm_data->stream != stream) in missing_device()
111 pcm_data->card = card; in missing_device()
112 pcm_data->device = device; in missing_device()
113 pcm_data->subdevice = subdevice; in missing_device()
114 pcm_data->stream = stream; in missing_device()
115 pcm_data->next = pcm_missing; in missing_device()
163 card = -1; in find_pcms()
185 ksft_print_msg("Card %d - %s (%s)\n", card, in find_pcms()
193 card_data->card = card; in find_pcms()
194 card_data->next = card_list; in find_pcms()
197 dev = -1; in find_pcms()
216 if (err == -ENOENT) in find_pcms()
232 pcm_data->card = card; in find_pcms()
233 pcm_data->device = dev; in find_pcms()
234 pcm_data->subdevice = subdev; in find_pcms()
235 pcm_data->stream = stream; in find_pcms()
236 pcm_data->pcm_config = conf_get_subtree(card_config, key, NULL); in find_pcms()
237 pcm_data->next = pcm_list; in find_pcms()
271 long long ms; in test_pcm_time() local
272 long rate, channels, period_size, buffer_size; in test_pcm_time() local
297 ksft_print_msg("%s.%s.%d.%d.%d.%s - %s\n", in test_pcm_time()
299 data->card, data->device, data->subdevice, in test_pcm_time()
300 snd_pcm_stream_name(data->stream), in test_pcm_time()
313 rate = conf_get_long(pcm_cfg, "rate", NULL, 48000); in test_pcm_time()
318 samples = malloc((rate * channels * snd_pcm_format_physical_width(format)) / 8); in test_pcm_time()
321 snd_pcm_format_set_silence(format, samples, rate * channels); in test_pcm_time()
323 sprintf(name, "hw:%d,%d,%d", data->card, data->device, data->subdevice); in test_pcm_time()
324 err = snd_pcm_open(&handle, name, data->stream, 0); in test_pcm_time()
346 i = -1; in test_pcm_time()
355 ksft_print_msg("%s.%d.%d.%d.%s.%s format %s -> %s\n", in test_pcm_time()
357 data->card, data->device, data->subdevice, in test_pcm_time()
358 snd_pcm_stream_name(data->stream), in test_pcm_time()
362 samples = realloc(samples, (rate * channels * in test_pcm_time()
366 snd_pcm_format_set_silence(format, samples, rate * channels); in test_pcm_time()
379 rrate = rate; in test_pcm_time()
382 snprintf(msg, sizeof(msg), "snd_pcm_hw_params_set_rate %ld: %s", rate, snd_strerror(err)); in test_pcm_time()
385 if (rrate != rate) { in test_pcm_time()
386 snprintf(msg, sizeof(msg), "rate mismatch %ld != %d", rate, rrate); in test_pcm_time()
412 if (data->stream == SND_PCM_STREAM_PLAYBACK) { in test_pcm_time()
435 data->card, data->device, data->subdevice, in test_pcm_time()
436 snd_pcm_stream_name(data->stream), in test_pcm_time()
439 (long)rate, (long)channels, in test_pcm_time()
448 if (data->stream == SND_PCM_STREAM_PLAYBACK) { in test_pcm_time()
449 frames = snd_pcm_writei(handle, samples, rate); in test_pcm_time()
452 "Write failed: expected %ld, wrote %li", rate, frames); in test_pcm_time()
455 if (frames < rate) { in test_pcm_time()
457 "expected %ld, wrote %li", rate, frames); in test_pcm_time()
461 frames = snd_pcm_readi(handle, samples, rate); in test_pcm_time()
464 "expected %ld, wrote %li", rate, frames); in test_pcm_time()
467 if (frames < rate) { in test_pcm_time()
469 "expected %ld, wrote %li", rate, frames); in test_pcm_time()
476 ms = timestamp_diff_ms(&tstamp); in test_pcm_time()
477 if (ms < duration_ms - margin_ms || ms > duration_ms + margin_ms) { in test_pcm_time()
478 snprintf(msg, sizeof(msg), "time mismatch: expected %dms got %lld", duration_ms, ms); in test_pcm_time()
496 data->card, data->device, data->subdevice, in test_pcm_time()
497 snd_pcm_stream_name(data->stream)); in test_pcm_time()
506 data->card, data->device, data->subdevice, in test_pcm_time()
507 snd_pcm_stream_name(data->stream)); in test_pcm_time()
511 data->card, data->device, data->subdevice, in test_pcm_time()
512 snd_pcm_stream_name(data->stream)); in test_pcm_time()
555 for (pcm = pcm_list; pcm != NULL; pcm = pcm->next) { in card_thread()
556 if (pcm->card != card->card) in card_thread()
560 run_time_tests(pcm, TEST_CLASS_SYSTEM, pcm->pcm_config); in card_thread()
577 global_config = conf_load_from_file("pcm-test.conf"); in main()
588 for (pcm = pcm_list; pcm != NULL; pcm = pcm->next) { in main()
590 cfg = pcm->pcm_config; in main()
601 for (pcm = pcm_missing; pcm != NULL; pcm = pcm->next) { in main()
603 pcm->card, pcm->device, pcm->subdevice, in main()
604 snd_pcm_stream_name(pcm->stream)); in main()
607 for (card = card_list; card != NULL; card = card->next) { in main()
608 ret = pthread_create(&card->thread, NULL, card_thread, card); in main()
611 card->card, ret, in main()
616 for (card = card_list; card != NULL; card = card->next) { in main()
617 ret = pthread_join(card->thread, &thread_ret); in main()
620 card->card, ret, in main()