6 typedef struct pcm_reader_t pcm_reader_t
;
8 typedef 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
**);
17 pcm_reader_vtbl_t
*vtbl
;
21 const pcm_sample_description_t
*pcm_get_format(pcm_reader_t
*r
)
23 return r
->vtbl
->get_format(r
);
27 int64_t pcm_get_length(pcm_reader_t
*r
)
29 return r
->vtbl
->get_length(r
);
33 int64_t pcm_get_position(pcm_reader_t
*r
)
35 return r
->vtbl
->get_position(r
);
39 int64_t pcm_read_frames(pcm_reader_t
*r
, void *data
, unsigned nframes
)
41 return r
->vtbl
->read_frames(r
, data
, nframes
);
45 void pcm_teardown(pcm_reader_t
**r
)
47 (*r
)->vtbl
->teardown(r
);
50 pcm_reader_t
*pcm_open_sint16_converter(pcm_reader_t
*reader
);