Lines Matching defs:cache
3 // frame-cache.c - maintainer of cache for data frame.
9 #include "frame-cache.h"
11 static void align_frames_in_i(struct frame_cache *cache,
14 char *buf = cache->buf;
18 cache->remained_count -= consumed_count;
20 offset = cache->bytes_per_sample * cache->samples_per_frame *
22 size = cache->bytes_per_sample * cache->samples_per_frame *
23 cache->remained_count;
26 cache->buf_ptr = buf + size;
29 static void align_frames_in_n(struct frame_cache *cache,
32 char **bufs = cache->buf;
33 char **buf_ptrs = cache->buf_ptr;
38 cache->remained_count -= consumed_count;
40 for (i = 0; i < cache->samples_per_frame; ++i) {
41 offset = cache->bytes_per_sample * consumed_count;
42 size = cache->bytes_per_sample * cache->remained_count;
48 int frame_cache_init(struct frame_cache *cache, snd_pcm_access_t access,
53 cache->access = access;
54 cache->remained_count = 0;
55 cache->bytes_per_sample = bytes_per_sample;
56 cache->samples_per_frame = samples_per_frame;
57 cache->frames_per_cache = frames_per_cache;
60 cache->align_frames = align_frames_in_i;
62 cache->align_frames = align_frames_in_n;
73 cache->buf = buf;
74 cache->buf_ptr = buf;
80 cache->buf = bufs;
81 cache->buf_ptr = buf_ptrs;
96 frame_cache_destroy(cache);
100 void frame_cache_destroy(struct frame_cache *cache)
102 if (cache->access == SND_PCM_ACCESS_RW_NONINTERLEAVED) {
103 char **bufs = cache->buf;
106 for (i = 0; i < cache->samples_per_frame; ++i)
109 free(cache->buf_ptr);
111 free(cache->buf);
112 memset(cache, 0, sizeof(*cache));