]>
code.delx.au - pulseaudio/blob - src/sample.c
6 size_t pa_sample_size(const struct pa_sample_spec
*spec
) {
10 switch (spec
->format
) {
20 case PA_SAMPLE_FLOAT32
:
27 return b
* spec
->channels
;
30 size_t pa_bytes_per_second(const struct pa_sample_spec
*spec
) {
32 return spec
->rate
*pa_sample_size(spec
);
36 uint32_t pa_samples_usec(size_t length
, const struct pa_sample_spec
*spec
) {
39 return (uint32_t) (((double) length
/pa_sample_size(spec
))/spec
->rate
*1000000);
42 int pa_sample_spec_valid(const struct pa_sample_spec
*spec
) {
45 if (!spec
->rate
|| !spec
->channels
)
48 if (spec
->format
>= PA_SAMPLE_MAX
)
54 int pa_sample_spec_equal(const struct pa_sample_spec
*a
, const struct pa_sample_spec
*b
) {
57 return (a
->format
== b
->format
) && (a
->rate
== b
->rate
) && (a
->channels
== b
->channels
);
60 void pa_sample_snprint(char *s
, size_t l
, const struct pa_sample_spec
*spec
) {
61 static const char* const table
[]= {
62 [PA_SAMPLE_U8
] = "U8",
63 [PA_SAMPLE_ALAW
] = "ALAW",
64 [PA_SAMPLE_ULAW
] = "ULAW",
65 [PA_SAMPLE_S16LE
] = "S16LE",
66 [PA_SAMPLE_S16BE
] = "S16BE",
67 [PA_SAMPLE_FLOAT32
] = "FLOAT32",
70 assert(pa_sample_spec_valid(spec
));
71 snprintf(s
, l
, "%s %uch %uHz", table
[spec
->format
], spec
->channels
, spec
->rate
);