]> code.delx.au - pulseaudio/blob - src/sample.c
main part of the native protocol
[pulseaudio] / src / sample.c
1 #include <assert.h>
2
3 #include "sample.h"
4
5 size_t pa_sample_size(struct pa_sample_spec *spec) {
6 assert(spec);
7 size_t b = 1;
8
9 switch (spec->format) {
10 case SAMPLE_U8:
11 case SAMPLE_ULAW:
12 case SAMPLE_ALAW:
13 b = 1;
14 break;
15 case SAMPLE_S16LE:
16 case SAMPLE_S16BE:
17 b = 2;
18 break;
19 case SAMPLE_FLOAT32:
20 b = 4;
21 break;
22 }
23
24 return b * spec->channels;
25 }
26
27 size_t pa_bytes_per_second(struct pa_sample_spec *spec) {
28 assert(spec);
29 return spec->rate*pa_sample_size(spec);
30 }
31
32
33 uint32_t pa_samples_usec(size_t length, struct pa_sample_spec *spec) {
34 assert(spec);
35
36 return (uint32_t) (((double) length /pa_sample_size(spec))/spec->rate*1000000);
37 }