| /****************************************************************************** |
| * |
| * 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_ */ |