13d0407baSopenharmony_ci/* 23d0407baSopenharmony_ci * Copyright 2015 Rockchip Electronics Co. LTD 33d0407baSopenharmony_ci * 43d0407baSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 53d0407baSopenharmony_ci * you may not use this file except in compliance with the License. 63d0407baSopenharmony_ci * You may obtain a copy of the License at 73d0407baSopenharmony_ci * 83d0407baSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 93d0407baSopenharmony_ci * 103d0407baSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 113d0407baSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 123d0407baSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133d0407baSopenharmony_ci * See the License for the specific language governing permissions and 143d0407baSopenharmony_ci * limitations under the License. 153d0407baSopenharmony_ci */ 163d0407baSopenharmony_ci 173d0407baSopenharmony_ci#ifndef __UTILS_H__ 183d0407baSopenharmony_ci#define __UTILS_H__ 193d0407baSopenharmony_ci 203d0407baSopenharmony_ci#include <stdio.h> 213d0407baSopenharmony_ci 223d0407baSopenharmony_ci#include "mpp_debug.h" 233d0407baSopenharmony_ci#include "mpp_frame.h" 243d0407baSopenharmony_ci 253d0407baSopenharmony_citypedef struct OptionInfo_t { 263d0407baSopenharmony_ci const char* name; 273d0407baSopenharmony_ci const char* argname; 283d0407baSopenharmony_ci const char* help; 293d0407baSopenharmony_ci} OptionInfo; 303d0407baSopenharmony_ci 313d0407baSopenharmony_citypedef struct data_crc_t { 323d0407baSopenharmony_ci RK_U32 len; 333d0407baSopenharmony_ci RK_U32 sum_cnt; 343d0407baSopenharmony_ci RK_ULONG *sum; 353d0407baSopenharmony_ci RK_U32 vor; // value of the xor 363d0407baSopenharmony_ci} DataCrc; 373d0407baSopenharmony_ci 383d0407baSopenharmony_citypedef struct frame_crc_t { 393d0407baSopenharmony_ci DataCrc luma; 403d0407baSopenharmony_ci DataCrc chroma; 413d0407baSopenharmony_ci} FrmCrc; 423d0407baSopenharmony_ci 433d0407baSopenharmony_ci#define show_options(opt) \ 443d0407baSopenharmony_ci do { \ 453d0407baSopenharmony_ci _show_options(sizeof(opt)/sizeof(OptionInfo), opt); \ 463d0407baSopenharmony_ci } while (0) 473d0407baSopenharmony_ci 483d0407baSopenharmony_ci#define mpp_log_q(quiet, fmt, ...) \ 493d0407baSopenharmony_ci do { \ 503d0407baSopenharmony_ci if (!quiet) mpp_log(fmt, ## __VA_ARGS__); \ 513d0407baSopenharmony_ci } while (0) 523d0407baSopenharmony_ci 533d0407baSopenharmony_ci#ifdef __cplusplus 543d0407baSopenharmony_ciextern "C" { 553d0407baSopenharmony_ci#endif 563d0407baSopenharmony_ci 573d0407baSopenharmony_civoid _show_options(int count, OptionInfo *options); 583d0407baSopenharmony_civoid dump_mpp_frame_to_file(MppFrame frame, FILE *fp); 593d0407baSopenharmony_ci 603d0407baSopenharmony_civoid calc_data_crc(RK_U8 *dat, RK_U32 len, DataCrc *crc); 613d0407baSopenharmony_civoid write_data_crc(FILE *fp, DataCrc *crc); 623d0407baSopenharmony_civoid read_data_crc(FILE *fp, DataCrc *crc); 633d0407baSopenharmony_ci 643d0407baSopenharmony_civoid calc_frm_crc(MppFrame frame, FrmCrc *crc); 653d0407baSopenharmony_civoid write_frm_crc(FILE *fp, FrmCrc *crc); 663d0407baSopenharmony_civoid read_frm_crc(FILE *fp, FrmCrc *crc); 673d0407baSopenharmony_ci 683d0407baSopenharmony_ciMPP_RET read_image(RK_U8 *buf, FILE *fp, RK_U32 width, RK_U32 height, 693d0407baSopenharmony_ci RK_U32 hor_stride, RK_U32 ver_stride, 703d0407baSopenharmony_ci MppFrameFormat fmt); 713d0407baSopenharmony_ciMPP_RET fill_image(RK_U8 *buf, RK_U32 width, RK_U32 height, 723d0407baSopenharmony_ci RK_U32 hor_stride, RK_U32 ver_stride, MppFrameFormat fmt, 733d0407baSopenharmony_ci RK_U32 frame_count); 743d0407baSopenharmony_ci 753d0407baSopenharmony_citypedef struct OpsLine_t { 763d0407baSopenharmony_ci RK_U32 index; 773d0407baSopenharmony_ci char cmd[8]; 783d0407baSopenharmony_ci RK_U64 value1; 793d0407baSopenharmony_ci RK_U64 value2; 803d0407baSopenharmony_ci} OpsLine; 813d0407baSopenharmony_ci 823d0407baSopenharmony_ciRK_S32 parse_config_line(const char *str, OpsLine *info); 833d0407baSopenharmony_ci 843d0407baSopenharmony_ciMPP_RET name_to_frame_format(const char *name, MppFrameFormat *fmt); 853d0407baSopenharmony_ciMPP_RET name_to_coding_type(const char *name, MppCodingType *coding); 863d0407baSopenharmony_ci 873d0407baSopenharmony_citypedef void* FpsCalc; 883d0407baSopenharmony_citypedef void (*FpsCalcCb)(RK_S64 total_time, RK_S64 total_count, RK_S64 last_time, RK_S64 last_count); 893d0407baSopenharmony_ci 903d0407baSopenharmony_ciMPP_RET fps_calc_init(FpsCalc *ctx); 913d0407baSopenharmony_ciMPP_RET fps_calc_deinit(FpsCalc ctx); 923d0407baSopenharmony_ciMPP_RET fps_calc_set_cb(FpsCalc ctx, FpsCalcCb cb); 933d0407baSopenharmony_ciMPP_RET fps_calc_inc(FpsCalc ctx); 943d0407baSopenharmony_ci 953d0407baSopenharmony_ci#ifdef __cplusplus 963d0407baSopenharmony_ci} 973d0407baSopenharmony_ci#endif 983d0407baSopenharmony_ci 993d0407baSopenharmony_ci#endif /*__UTILS_H__*/ 100