f8f34f7c4a2d341ec8b82aec56419eb5063fa137
[fdkaac.git] / src / pcm_reader.h
1 #ifndef PCM_READER_H
2 #define PCM_READER_H
3
4 typedef struct pcm_reader_t pcm_reader_t;
5
6 typedef struct pcm_reader_vtbl_t {
7 const pcm_sample_description_t *(*get_format)(pcm_reader_t *);
8 int64_t (*get_length)(pcm_reader_t *);
9 int64_t (*get_position)(pcm_reader_t *);
10 int (*read_frames)(pcm_reader_t *, void *, unsigned);
11 void (*teardown)(pcm_reader_t **);
12 } pcm_reader_vtbl_t;
13
14 struct pcm_reader_t {
15 pcm_reader_vtbl_t *vtbl;
16 };
17
18 static inline
19 const pcm_sample_description_t *pcm_get_format(pcm_reader_t *r)
20 {
21 return r->vtbl->get_format(r);
22 }
23
24 static inline
25 int64_t pcm_get_length(pcm_reader_t *r)
26 {
27 return r->vtbl->get_length(r);
28 }
29
30 static inline
31 int64_t pcm_get_position(pcm_reader_t *r)
32 {
33 return r->vtbl->get_position(r);
34 }
35
36 static inline
37 int64_t pcm_read_frames(pcm_reader_t *r, void *data, unsigned nframes)
38 {
39 return r->vtbl->read_frames(r, data, nframes);
40 }
41
42 static inline
43 void pcm_teardown(pcm_reader_t **r)
44 {
45 (*r)->vtbl->teardown(r);
46 }
47
48 #endif
This page took 0.020717 seconds and 3 git commands to generate.