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