| @@ -28,6 +28,7 @@ | |||||
| #include <stdlib.h> | #include <stdlib.h> | ||||
| #include <stdint.h> | #include <stdint.h> | ||||
| #include "config.h" | #include "config.h" | ||||
| #if ARCH_ARM | #if ARCH_ARM | ||||
| @@ -45,29 +46,32 @@ | |||||
| #endif | #endif | ||||
| #ifdef AV_READ_TIME | #ifdef AV_READ_TIME | ||||
| #define START_TIMER \ | |||||
| uint64_t tend;\ | |||||
| uint64_t tstart= AV_READ_TIME();\ | |||||
| #define START_TIMER \ | |||||
| uint64_t tend; \ | |||||
| uint64_t tstart = AV_READ_TIME(); \ | |||||
| #define STOP_TIMER(id) \ | |||||
| tend= AV_READ_TIME();\ | |||||
| {\ | |||||
| static uint64_t tsum=0;\ | |||||
| static int tcount=0;\ | |||||
| static int tskip_count=0;\ | |||||
| if(tcount<2 || tend - tstart < 8*tsum/tcount || tend - tstart < 2000){\ | |||||
| tsum+= tend - tstart;\ | |||||
| tcount++;\ | |||||
| }else\ | |||||
| tskip_count++;\ | |||||
| if(((tcount+tskip_count)&(tcount+tskip_count-1))==0){\ | |||||
| av_log(NULL, AV_LOG_ERROR, "%"PRIu64" decicycles in %s, %d runs, %d skips\n",\ | |||||
| tsum*10/tcount, id, tcount, tskip_count);\ | |||||
| }\ | |||||
| } | |||||
| #define STOP_TIMER(id) \ | |||||
| tend = AV_READ_TIME(); \ | |||||
| { \ | |||||
| static uint64_t tsum = 0; \ | |||||
| static int tcount = 0; \ | |||||
| static int tskip_count = 0; \ | |||||
| if (tcount < 2 || \ | |||||
| tend - tstart < 8 * tsum / tcount || \ | |||||
| tend - tstart < 2000) { \ | |||||
| tsum+= tend - tstart; \ | |||||
| tcount++; \ | |||||
| } else \ | |||||
| tskip_count++; \ | |||||
| if (((tcount + tskip_count) & (tcount + tskip_count - 1)) == 0) { \ | |||||
| av_log(NULL, AV_LOG_ERROR, \ | |||||
| "%"PRIu64" decicycles in %s, %d runs, %d skips\n", \ | |||||
| tsum * 10 / tcount, id, tcount, tskip_count); \ | |||||
| } \ | |||||
| } | |||||
| #else | #else | ||||
| #define START_TIMER | #define START_TIMER | ||||
| #define STOP_TIMER(id) {} | |||||
| #define STOP_TIMER(id) { } | |||||
| #endif | #endif | ||||
| #endif /* AVUTIL_TIMER_H */ | #endif /* AVUTIL_TIMER_H */ | ||||