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