diff options
-rw-r--r-- | src/map-file | 1 | ||||
-rw-r--r-- | src/pulse/sample.c | 12 | ||||
-rw-r--r-- | src/pulse/sample.h | 4 |
3 files changed, 15 insertions, 2 deletions
diff --git a/src/map-file b/src/map-file index d7addfec..cdb9debe 100644 --- a/src/map-file +++ b/src/map-file @@ -181,6 +181,7 @@ pa_proplist_unset_many; pa_proplist_update; pa_sample_format_to_string; pa_sample_size; +pa_sample_size_of_format; pa_sample_spec_equal; pa_sample_spec_init; pa_sample_spec_snprint; diff --git a/src/pulse/sample.c b/src/pulse/sample.c index ff86d0b8..4b13a337 100644 --- a/src/pulse/sample.c +++ b/src/pulse/sample.c @@ -36,7 +36,7 @@ #include "sample.h" -size_t pa_sample_size(const pa_sample_spec *spec) { +size_t pa_sample_size_of_format(pa_sample_format_t f) { static const size_t table[] = { [PA_SAMPLE_U8] = 1, @@ -54,10 +54,18 @@ size_t pa_sample_size(const pa_sample_spec *spec) { [PA_SAMPLE_S24_32BE] = 4 }; + pa_assert(f >= 0); + pa_assert(f < PA_SAMPLE_MAX); + + return table[f]; +} + +size_t pa_sample_size(const pa_sample_spec *spec) { + pa_assert(spec); pa_return_val_if_fail(pa_sample_spec_valid(spec), 0); - return table[spec->format]; + return pa_sample_size_of_format(spec->format); } size_t pa_frame_size(const pa_sample_spec *spec) { diff --git a/src/pulse/sample.h b/src/pulse/sample.h index 45a481fe..3c05b54a 100644 --- a/src/pulse/sample.h +++ b/src/pulse/sample.h @@ -261,6 +261,10 @@ size_t pa_frame_size(const pa_sample_spec *spec) PA_GCC_PURE; /** Return the size of a sample with the specific sample type */ size_t pa_sample_size(const pa_sample_spec *spec) PA_GCC_PURE; +/** Similar to pa_sample_size() but take a sample format instead of a + * full sample spec. \since 0.9.15 */ +size_t pa_sample_size_of_format(pa_sample_format_t f) PA_GCC_PURE; + /** Calculate the time the specified bytes take to play with the * specified sample type. The return value will always be rounded * down for non-integral return values. */ |