summaryrefslogtreecommitdiffstats
path: root/media/libcubeb/test/test_latency.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'media/libcubeb/test/test_latency.cpp')
-rw-r--r--media/libcubeb/test/test_latency.cpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/media/libcubeb/test/test_latency.cpp b/media/libcubeb/test/test_latency.cpp
new file mode 100644
index 0000000000..97f24ea498
--- /dev/null
+++ b/media/libcubeb/test/test_latency.cpp
@@ -0,0 +1,43 @@
+#include "cubeb/cubeb.h"
+#include "gtest/gtest.h"
+#include <memory>
+#include <stdlib.h>
+// #define ENABLE_NORMAL_LOG
+// #define ENABLE_VERBOSE_LOG
+#include "common.h"
+
+TEST(cubeb, latency)
+{
+ cubeb * ctx = NULL;
+ int r;
+ uint32_t max_channels;
+ uint32_t preferred_rate;
+ uint32_t latency_frames;
+
+ r = common_init(&ctx, "Cubeb audio test");
+ ASSERT_EQ(r, CUBEB_OK);
+
+ std::unique_ptr<cubeb, decltype(&cubeb_destroy)> cleanup_cubeb_at_exit(
+ ctx, cubeb_destroy);
+
+ r = cubeb_get_max_channel_count(ctx, &max_channels);
+ ASSERT_TRUE(r == CUBEB_OK || r == CUBEB_ERROR_NOT_SUPPORTED);
+ if (r == CUBEB_OK) {
+ ASSERT_GT(max_channels, 0u);
+ }
+
+ r = cubeb_get_preferred_sample_rate(ctx, &preferred_rate);
+ ASSERT_TRUE(r == CUBEB_OK || r == CUBEB_ERROR_NOT_SUPPORTED);
+ if (r == CUBEB_OK) {
+ ASSERT_GT(preferred_rate, 0u);
+ }
+
+ cubeb_stream_params params = {CUBEB_SAMPLE_FLOAT32NE, preferred_rate,
+ max_channels, CUBEB_LAYOUT_UNDEFINED,
+ CUBEB_STREAM_PREF_NONE};
+ r = cubeb_get_min_latency(ctx, &params, &latency_frames);
+ ASSERT_TRUE(r == CUBEB_OK || r == CUBEB_ERROR_NOT_SUPPORTED);
+ if (r == CUBEB_OK) {
+ ASSERT_GT(latency_frames, 0u);
+ }
+}