1 #include "gtest/gtest.h"
2 #include <stdlib.h>
3 #include <memory>
4 #include "cubeb/cubeb.h"
5 #include "common.h"
6 
TEST(cubeb,latency)7 TEST(cubeb, latency)
8 {
9   cubeb * ctx = NULL;
10   int r;
11   uint32_t max_channels;
12   uint32_t preferred_rate;
13   uint32_t latency_frames;
14 
15   r = common_init(&ctx, "Cubeb audio test");
16   ASSERT_EQ(r, CUBEB_OK);
17 
18   std::unique_ptr<cubeb, decltype(&cubeb_destroy)>
19     cleanup_cubeb_at_exit(ctx, cubeb_destroy);
20 
21   r = cubeb_get_max_channel_count(ctx, &max_channels);
22   ASSERT_TRUE(r == CUBEB_OK || r == CUBEB_ERROR_NOT_SUPPORTED);
23   if (r == CUBEB_OK) {
24     ASSERT_GT(max_channels, 0u);
25   }
26 
27   r = cubeb_get_preferred_sample_rate(ctx, &preferred_rate);
28   ASSERT_TRUE(r == CUBEB_OK || r == CUBEB_ERROR_NOT_SUPPORTED);
29   if (r == CUBEB_OK) {
30     ASSERT_GT(preferred_rate, 0u);
31   }
32 
33   cubeb_stream_params params = {
34     CUBEB_SAMPLE_FLOAT32NE,
35     preferred_rate,
36     max_channels,
37     CUBEB_LAYOUT_UNDEFINED,
38     CUBEB_STREAM_PREF_NONE
39   };
40   r = cubeb_get_min_latency(ctx, &params, &latency_frames);
41   ASSERT_TRUE(r == CUBEB_OK || r == CUBEB_ERROR_NOT_SUPPORTED);
42   if (r == CUBEB_OK) {
43     ASSERT_GT(latency_frames, 0u);
44   }
45 }
46