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