You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
3.8 KiB
120 lines
3.8 KiB
/******************************************************************************
|
|
*
|
|
* Copyright (C) 2018 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at:
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*
|
|
*****************************************************************************
|
|
* Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
|
|
*/
|
|
|
|
/**
|
|
******************************************************************************
|
|
* @file ihevce_profile.h
|
|
*
|
|
* @brief
|
|
* This file contains profiling related definitions
|
|
*
|
|
* @author
|
|
* Ittiam
|
|
******************************************************************************
|
|
*/
|
|
|
|
#ifndef _IHEVCE_PROFILE_H_
|
|
#define _IHEVCE_PROFILE_H_
|
|
|
|
/*****************************************************************************/
|
|
/* Constant Macros */
|
|
/*****************************************************************************/
|
|
#define PROFILE_ENABLE 0
|
|
|
|
typedef struct
|
|
{
|
|
/* Note that time below will be in units of micro seconds */
|
|
/* Time before process call */
|
|
ULWORD64 u8_time_start;
|
|
|
|
/* Time after process call */
|
|
ULWORD64 u8_time_end;
|
|
|
|
/* Time taken by the last process call */
|
|
ULWORD64 u8_cur_time;
|
|
|
|
/* Sum total of the time taken by process calls so far */
|
|
ULWORD64 u8_total_time;
|
|
|
|
/*Avg time taken by a process so far */
|
|
ULWORD64 u8_avg_time;
|
|
|
|
/* Peak time taken by a process so far */
|
|
ULWORD64 u8_peak_time;
|
|
|
|
/* Number of process calls so far.
|
|
* Required for calc of avg time taken per process call */
|
|
UWORD32 u4_num_profile_calls;
|
|
|
|
/* This flag is present to check that every
|
|
* profile_start() will have a corresponding
|
|
* arm_profile_sample_time_end() */
|
|
UWORD8 u1_sample_taken_flag;
|
|
|
|
} profile_database_t;
|
|
|
|
typedef struct
|
|
{
|
|
WORD32 tv_sec; /* Time in seconds. */
|
|
WORD32 tv_usec; /* Time in micro seconds. */
|
|
} timeval_t;
|
|
|
|
/*****************************************************************************/
|
|
/* Function Declarations */
|
|
/*****************************************************************************/
|
|
void profile_sample_time_start();
|
|
void profile_sample_time_end();
|
|
void profile_print_stats();
|
|
int profile_get_avg_time(profile_database_t *ps_profile_data);
|
|
int profile_get_peak_time(profile_database_t *ps_profile_data);
|
|
int profile_convert_to_milli_sec(profile_database_t *ps_profile_data);
|
|
|
|
ULWORD64 profile_sample_time();
|
|
|
|
/* Should be called after each process call */
|
|
void profile_stop(profile_database_t *ps_profile_data, char *msg);
|
|
|
|
/* Should be called before every process call */
|
|
void profile_start(profile_database_t *ps_profile_data);
|
|
|
|
/* Should be called after codec instance initialization */
|
|
void init_profiler(profile_database_t *ps_profile_data);
|
|
|
|
/* Should be called at the end of processing */
|
|
void profile_end(profile_database_t *ps_profile_data, char *msg);
|
|
|
|
#if PROFILE_ENABLE
|
|
|
|
#define PROFILE_INIT(x) init_profiler(x)
|
|
#define PROFILE_START(x) profile_start(x)
|
|
#define PROFILE_STOP(x, y) profile_stop(x, y)
|
|
#define PROFILE_END(x, y) profile_end(x, y)
|
|
|
|
#else /* #if PROFILE_ENABLE */
|
|
|
|
#define PROFILE_INIT(x)
|
|
#define PROFILE_START(x)
|
|
#define PROFILE_STOP(x, y)
|
|
#define PROFILE_END(x, y)
|
|
|
|
#endif /* #if PROFILE_ENABLE */
|
|
|
|
#endif /* _IHEVCE_PROFILE_H_ */
|