summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/polyp/sample.c6
-rw-r--r--src/polyp/sample.h3
2 files changed, 9 insertions, 0 deletions
diff --git a/src/polyp/sample.c b/src/polyp/sample.c
index 668a485e..320e31a0 100644
--- a/src/polyp/sample.c
+++ b/src/polyp/sample.c
@@ -66,6 +66,12 @@ pa_usec_t pa_bytes_to_usec(uint64_t length, const pa_sample_spec *spec) {
return (pa_usec_t) (((double) length/pa_frame_size(spec)*1000000)/spec->rate);
}
+size_t pa_usec_to_bytes(pa_usec_t t, const pa_sample_spec *spec) {
+ assert(spec);
+
+ return ((double) t * spec->rate / 1000000)*pa_frame_size(spec);
+}
+
int pa_sample_spec_valid(const pa_sample_spec *spec) {
assert(spec);
diff --git a/src/polyp/sample.h b/src/polyp/sample.h
index 09b12fd7..2a9a72fe 100644
--- a/src/polyp/sample.h
+++ b/src/polyp/sample.h
@@ -160,6 +160,9 @@ size_t pa_sample_size(const pa_sample_spec *spec);
/** Calculate the time the specified bytes take to play with the specified sample type */
pa_usec_t pa_bytes_to_usec(uint64_t length, const pa_sample_spec *spec);
+/** Calculates the number of bytes that are required for the specified time. \since 0.9 */
+size_t pa_usec_to_bytes(pa_usec_t t, const pa_sample_spec *spec);
+
/** Return non-zero when the sample type specification is valid */
int pa_sample_spec_valid(const pa_sample_spec *spec);