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 15struct test_generator; 16typedef 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 22struct 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 36int 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); 44int generator_context_run(struct test_generator *gen, generator_cb_t cb); 45void generator_context_destroy(struct test_generator *gen); 46 47#endif 48