Blame axfer/frame-cache.h

Packit 229ac0
// SPDX-License-Identifier: GPL-2.0
Packit 229ac0
//
Packit 229ac0
// frame-cache.h - maintainer of cache for data frame.
Packit 229ac0
//
Packit 229ac0
// Copyright (c) 2018 Takashi Sakamoto <o-takashi@sakamocchi.jp>
Packit 229ac0
//
Packit 229ac0
// Licensed under the terms of the GNU General Public License, version 2.
Packit 229ac0
Packit 229ac0
#include <alsa/asoundlib.h>
Packit 229ac0
Packit 229ac0
struct frame_cache {
Packit 229ac0
	void *buf;
Packit 229ac0
	void *buf_ptr;
Packit 229ac0
Packit 229ac0
	unsigned int remained_count;
Packit 229ac0
Packit 229ac0
	snd_pcm_access_t access;
Packit 229ac0
	unsigned int bytes_per_sample;
Packit 229ac0
	unsigned int samples_per_frame;
Packit 229ac0
	unsigned int frames_per_cache;
Packit 229ac0
Packit 229ac0
	void (*align_frames)(struct frame_cache *cache,
Packit 229ac0
			     unsigned int consumed_count);
Packit 229ac0
};
Packit 229ac0
Packit 229ac0
int frame_cache_init(struct frame_cache *cache, snd_pcm_access_t access,
Packit 229ac0
		     unsigned int bytes_per_sample,
Packit 229ac0
		     unsigned int samples_per_frame,
Packit 229ac0
		     unsigned int frames_per_cache);
Packit 229ac0
void frame_cache_destroy(struct frame_cache *cache);
Packit 229ac0
Packit 229ac0
static inline unsigned int frame_cache_get_count(struct frame_cache *cache)
Packit 229ac0
{
Packit 229ac0
	return cache->remained_count;
Packit 229ac0
}
Packit 229ac0
Packit 229ac0
static inline void frame_cache_increase_count(struct frame_cache *cache,
Packit 229ac0
					      unsigned int frame_count)
Packit 229ac0
{
Packit 229ac0
	cache->remained_count += frame_count;
Packit 229ac0
}
Packit 229ac0
Packit 229ac0
static inline void frame_cache_reduce(struct frame_cache *cache,
Packit 229ac0
				      unsigned int consumed_count)
Packit 229ac0
{
Packit 229ac0
	cache->align_frames(cache, consumed_count);
Packit 229ac0
}