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