1 // SPDX-License-Identifier: GPL-2.0 2 // 3 // generator.c - a generator for test with buffers of PCM frames. 4 // 5 // Copyright (c) 2018 Takashi Sakamoto <o-takashi@sakamocchi.jp> 6 // 7 // Licensed under the terms of the GNU General Public License, version 2. 8 9 #ifndef __ALSA_UTILS_AXFER_TEST_GENERATOR__H_ 10 #define __ALSA_UTILS_AXFER_TEST_GENERATOR__H_ 11 12 #include <stdint.h> 13 #include <alsa/asoundlib.h> 14 15 struct test_generator; 16 typedef int (*generator_cb_t)(struct test_generator *gen, 17 snd_pcm_access_t access, 18 snd_pcm_format_t sample_format, 19 unsigned int samples_per_frame, 20 void *frame_buffer, unsigned int frame_count); 21 22 struct test_generator { 23 int fd; 24 uint64_t access_mask; 25 uint64_t sample_format_mask; 26 unsigned int min_samples_per_frame; 27 unsigned int max_samples_per_frame; 28 unsigned int min_frame_count; 29 unsigned int max_frame_count; 30 unsigned int step_frame_count; 31 32 generator_cb_t cb; 33 void *private_data; 34 }; 35 36 int generator_context_init(struct test_generator *gen, 37 uint64_t access_mask, uint64_t sample_format_mask, 38 unsigned int min_samples_per_frame, 39 unsigned int max_samples_per_frame, 40 unsigned int min_frame_count, 41 unsigned int max_frame_count, 42 unsigned int step_frame_count, 43 unsigned int private_size); 44 int generator_context_run(struct test_generator *gen, generator_cb_t cb); 45 void generator_context_destroy(struct test_generator *gen); 46 47 #endif 48