aboutsummaryrefslogtreecommitdiff
path: root/include/linux/vcodec/venc_drv_if_private.h
blob: 231ff63d01f722ac32af52f86ec575ca0b9cbadd (plain) (blame)
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
145
146
147
148
149
150
151
152
153
/**
 * @file
 *   venc_drv_if_private.h
 *
 * @par Project:
 *   Video
 *
 * @par Description:
 *   Video Encoder Driver Interface for internal use
 *
 * @par Author:
 *   Jackal Chen (mtk02532)
 *
 * @par $Revision: #1 $
 * @par $Modtime:$
 * @par $Log:$
 *
 */

#ifndef _VENC_DRV_IF_PRIVATE_H_
#define _VENC_DRV_IF_PRIVATE_H_

#ifdef __cplusplus
extern "C" {
#endif

#include "val_types_private.h"
#include "venc_drv_if_public.h"


typedef enum __VENC_DRV_COLOR_FORMAT_T
{
    VENC_DRV_COLOR_FORMAT_YUV420,
    VENC_DRV_COLOR_FORMAT_YV12,
}
VENC_DRV_COLOR_FORMAT_T;


typedef struct __VENC_DRV_YUV_STRIDE_T
{
    unsigned int    u4YStride;
    unsigned int    u4UVStride;
} VENC_DRV_YUV_STRIDE_T;


/**
 * @par Structure
 *   VENC_DRV_PARAM_EIS_T
 * @par Description
 *   This is the EIS information and used as input or output parameter for\n
 *   eVEncDrvSetParam() or eVEncDrvGetParam()\n
 */
typedef struct __VENC_DRV_PARAM_EIS_T
{
    VAL_BOOL_T      fgEISEnable;            ///<: EIS Enable/disable.
    VAL_UINT32_T    u4EISFrameWidth;        ///<: EIS FrameWidth
    VAL_UINT32_T    u4EISFrameHeight;       ///<: EIS FrameHeight
    VAL_UINT32_T    u4GMV_X;                ///<: Golbal Motion Vector (GMV) of the VOP Frame used for EIS
    VAL_UINT32_T    u4GMV_Y;                ///<: Golbal Motion Vector (GMV) of the VOP Frame used for EIS
} VENC_DRV_PARAM_EIS_T;

/**
 * @par Structure
 *   P_VENC_DRV_PARAM_EIS_T
 * @par Description
 *   This is the pointer of VENC_DRV_PARAM_EIS_T
 */
typedef VENC_DRV_PARAM_EIS_T     *P_VENC_DRV_PARAM_EIS_T;


/**
 * @par Structure
 *   VENC_DRV_STATISTIC_T
 * @par Description
 *   This is statistic information and used as output parameter for\n
 *   eVEncDrvGetParam()\n
 */
typedef struct __VENC_DRV_STATISTIC_T
{
    VAL_UINT32_T    u4EncTimeMax;   ///<: Encode one frame time. Max
    VAL_UINT32_T    u4EncTimeMin;   ///<: Encode one frame time. Min
    VAL_UINT32_T    u4EncTimeAvg;   ///<: Encode one frame time. Average
    VAL_UINT32_T    u4EncTimeSum;   ///<: Encode one frame time. Sum
} VENC_DRV_STATISTIC_T;

/**
 * @par Structure
 *   P_VENC_DRV_STATISTIC_T
 * @par Description
 *   This is the pointer of VENC_DRV_STATISTIC_T
 */
typedef VENC_DRV_STATISTIC_T     *P_VENC_DRV_STATISTIC_T;


typedef struct __VENC_HYB_ENCSETTING
{

    // used in SetParameter
    VAL_UINT32_T    u4Width;
    VAL_UINT32_T    u4Height;
    VAL_UINT32_T    u4IntraVOPRate;     //u4NumPFrm;
    VAL_UINT32_T    eFrameRate;
    VAL_UINT32_T    u4VEncBitrate;
    VAL_UINT32_T    u4QualityLevel;
    VAL_UINT32_T    u4ShortHeaderMode;
    VAL_UINT32_T    u4CodecType;        // mepg4, h263, h264...
    VAL_UINT32_T    u4RotateAngle;

    // used in QueryFunctions
    VENC_DRV_COLOR_FORMAT_T     eVEncFormat;    // YUV420, I420 .....
    VENC_DRV_YUV_STRIDE_T       rVCodecYUVStride;
    VAL_UINT32_T    u4Profile;
    VAL_UINT32_T    u4Level;
    VAL_UINT32_T    u4BufWidth;
    VAL_UINT32_T    u4BufHeight;
    VAL_UINT32_T    u4NumBFrm;
    VAL_UINT32_T    fgInterlace;

    // used in Query
    VAL_UINT32_T    u4InitQ;
    VAL_UINT32_T    u4MinQ;
    VAL_UINT32_T    u4MaxQ;
    VAL_UINT32_T    u4Algorithm;
    VAL_UINT32_T    u4_Rate_Hard_Limit;
    VAL_UINT32_T    u4RateBalance;
    VAL_UINT32_T    u4ForceIntraEnable;
    VAL_UINT32_T    u4VEncMinBitrate;   //Min bit-rate

    // hardware dependent function settings
    VAL_BOOL_T      fgUseMCI;
    VAL_UINT32_T    u4VEncThreadNum;
} VENC_HYBRID_ENCSETTING;


typedef struct VENC_BS_s
{
    VAL_UINT8_T                     *u4BS_addr;
    VAL_UINT8_T                     *u4BS_addr_PA;
    VAL_UINT32_T                    u4BSSize;
    VAL_UINT32_T                    u4BS_frmSize;
    VAL_UINT32_T                    u4BS_frmCount;
    VAL_UINT32_T                    u4BS_index;
    VAL_UINT32_T                    u4BS_preindex;
    VAL_UINT32_T                    u4Fillcnt;
    VAL_UINT32_T                    Handle;
} VENC_BS_T;


#ifdef __cplusplus
}
#endif

#endif // #ifndef _VENC_DRV_IF_PRIVATE_H_