aboutsummaryrefslogtreecommitdiff
path: root/kernel-headers/venc_drv_if_private.h
blob: 4cff83360ea3fb3e6c8fb54a896bc61d02fb8cd9 (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
#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;
        VAL_UINT32_T    u4LivePhoto;
} 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_ */