lin
2025-08-01 633231e833e21d5b8b1c00cb15aedb62b3b78e8f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
/******************************************************************************
 *
 * 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_ */