1 /* SPDX-License-Identifier: Apache-2.0 OR MIT */
2 /*
3 * Copyright (c) 2015 Rockchip Electronics Co., Ltd.
4 */
5
6 #define MODULE_TAG "mpp_time_test"
7
8 #include "mpp_log.h"
9 #include "mpp_time.h"
10
timer_test(void * param)11 void *timer_test(void *param)
12 {
13 static RK_S32 count = 0;
14 (void) param;
15
16 mpp_log("mpp timer trigger %d\n", count++);
17
18 return NULL;
19 }
20
main()21 int main()
22 {
23 RK_S64 time_0;
24 RK_S64 time_1;
25 MppClock clock;
26 MppTimer timer;
27 RK_S32 i;
28
29 mpp_log("mpp time test start\n");
30
31 time_0 = mpp_time();
32
33 msleep(10);
34
35 time_1 = mpp_time();
36
37 mpp_log("time 0 %lld us\n", time_0);
38 mpp_log("time 1 %lld us\n", time_1);
39 mpp_log("diff expected 10 ms real %.2f ms\n", (float)(time_1 - time_0) / 1000);
40
41 mpp_log("mpp time test done\n");
42
43 mpp_log("mpp timer test start\n");
44
45 timer = mpp_timer_get("test");
46
47 mpp_timer_set_callback(timer, timer_test, NULL);
48 mpp_timer_set_timing(timer, 1000, 1000);
49 mpp_timer_set_enable(timer, 1);
50
51 sleep(2);
52
53 mpp_timer_put(timer);
54
55 mpp_log("mpp timer test done\n");
56
57 mpp_log("mpp clock test start\n");
58
59 clock = mpp_clock_get("clock loop test");
60
61 mpp_clock_enable(clock, 1);
62
63 for (i = 0; i < 1000; i++) {
64 mpp_clock_start(clock);
65 msleep(2);
66 mpp_clock_pause(clock);
67 }
68
69 mpp_log("loop 1000 times clock 2ms start/pause operation:\n");
70 mpp_log("total time %8.3f ms\n", mpp_clock_get_sum(clock) / 1000.0);
71 mpp_log("average time %8.3f ms\n",
72 mpp_clock_get_sum(clock) / mpp_clock_get_count(clock) / 1000.0);
73
74 mpp_clock_reset(clock);
75
76 for (i = 0; i < 10000; i++) {
77 mpp_clock_start(clock);
78 mpp_time();
79 mpp_clock_pause(clock);
80 }
81
82 mpp_log("mpp_time cost %.3f ms\n",
83 mpp_clock_get_sum(clock) / mpp_clock_get_count(clock) / 1000.0);
84
85 mpp_clock_reset(clock);
86 mpp_clock_start(clock);
87 msleep(20);
88 time_0 = mpp_clock_pause(clock);
89 msleep(20);
90 time_1 = mpp_clock_pause(clock);
91
92 mpp_log("mpp_time pause 0 at %.3f ms pause 1 at %.3f ms\n",
93 time_0 / 1000.0, time_1 / 1000.0);
94
95 mpp_clock_put(clock);
96
97 mpp_log("mpp time test done\n");
98
99 return 0;
100 }
101