/****************************************************************************** * * 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_plugin.h * * \brief * This file contains plugin interface definations and structures * * \date * 15/04/2014 * * \author * Ittiam * * * List of Functions * * ****************************************************************************** */ #ifndef _IHEVCE_PLUGIN_H_ #define _IHEVCE_PLUGIN_H_ #ifdef __cplusplus extern "C" { #endif /*****************************************************************************/ /* File Includes */ /*****************************************************************************/ /*****************************************************************************/ /* Constant Macros */ /*****************************************************************************/ #define MAX_INP_PLANES 3 /*****************************************************************************/ /* Typedefs */ /*****************************************************************************/ /*****************************************************************************/ /* Enums */ /*****************************************************************************/ typedef enum { IHEVCE_EFAIL = 0xFFFFFFFF, IHEVCE_EOK = 0 } IHEVCE_PLUGIN_STATUS_T; /*****************************************************************************/ /* Structure */ /*****************************************************************************/ typedef struct { /* input buffer pointers */ void *apv_inp_planes[MAX_INP_PLANES]; /* input buffer strides */ WORD32 ai4_inp_strd[MAX_INP_PLANES]; /* input buffer size */ WORD32 ai4_inp_size[MAX_INP_PLANES]; /* PTS of the input */ ULWORD64 u8_pts; /* Current bitrate*/ WORD32 i4_curr_bitrate; /* Current peak bitrate*/ WORD32 i4_curr_peak_bitrate; /* Current rate factor*/ WORD32 i4_curr_rate_factor; } ihevce_inp_buf_t; typedef struct { /* Output buffer pointer (if set to NULL then no output is sent out from encoder) */ UWORD8 *pu1_output_buf; /* Number of bytes generated in the buffer */ WORD32 i4_bytes_generated; /* Key frame flag */ WORD32 i4_is_key_frame; /* PTS of the output */ ULWORD64 u8_pts; /* DTS of the output */ LWORD64 i8_dts; /* Flag to check if last output buffer sent from encoder */ WORD32 i4_end_flag; } ihevce_out_buf_t; /*****************************************************************************/ /* Extern Variable Declarations */ /*****************************************************************************/ /*****************************************************************************/ /* Extern Function Declarations */ /*****************************************************************************/ IHEVCE_PLUGIN_STATUS_T ihevce_set_def_params(ihevce_static_cfg_params_t *ps_params); IHEVCE_PLUGIN_STATUS_T ihevce_init(ihevce_static_cfg_params_t *ps_params, void **ppv_ihevce_hdl); IHEVCE_PLUGIN_STATUS_T ihevce_encode_header(void *pv_ihevce_hdl, ihevce_out_buf_t *ps_out); IHEVCE_PLUGIN_STATUS_T ihevce_encode(void *pv_ihevce_hdl, ihevce_inp_buf_t *ps_inp, ihevce_out_buf_t *ps_out); IHEVCE_PLUGIN_STATUS_T ihevce_close(void *pv_ihevce_hdl); void ihevce_init_sys_api(void *pv_cb_handle, ihevce_sys_api_t *ps_sys_api); #ifdef __cplusplus } #endif #endif /* _IHEVCE_PLUGIN_H_ */