aboutsummaryrefslogtreecommitdiff
path: root/drivers/misc/mediatek/vdec/include/vdec_info_avs.h
blob: f5c289cd053b4f3a9fbca8b6d04b51fd6786d3a9 (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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
#ifndef _VDEC_INFO_AVS_H_
#define _VDEC_INFO_AVS_H_

//#include "drv_config.h"
//#include "drv_vdec.h"

#if 1 // (!CONFIG_DRV_VERIFY_SUPPORT)
#include "vdec_usage.h"
#include "vdec_info_common.h"
#else
//#include "x_stl_lib.h"
//#include "x_assert.h"
//#include "u_pbinf.h"
#endif

#define REF_LIST_0 0
#define REF_LIST_1 1
#define REF_LIST_2 2
#define AVS_MAX_FRM_BUFNUM 22
#define AVS_MAX_REF_PICNUM 3

#define AVS_PREV_P_IDX 1
#define AVS_LAST_P_IDX 2
#define AVS_PREV_FW_IDX 0
#define AVS_FW_REF_IDX 1
#define AVS_BW_REF_IDX 2
#define AVS_CURR_WORK_IDX 3
#define AVS_DPB_NUM  4

typedef struct _VDEC_INFO_AVS_VFIFO_PRM_T_
{
    UINT32 u4VFifoSa;                 ///< Video Fifo memory start address
    UINT32 u4VFifoEa;                 ///< Video Fifo memory end address
} VDEC_INFO_AVS_VFIFO_PRM_T;

typedef struct _VDEC_INFO_AVS_BS_INIT_PRM_T_
{
    UINT32  u4VLDRdPtr;
    UINT32  u4VLDWrPtr;
    UINT32  u4VFifoSa;                 ///< Video Fifo memory start address
    UINT32  u4VFifoEa;                 ///< Video Fifo memory end address
    UINT32  u4WritePointer;
} VDEC_INFO_AVS_BS_INIT_PRM_T;

typedef struct _VDEC_INFO_AVS_SEQ_HDR_T_
{
    UINT32 u4ProfileID;
    UINT32 u4LevelID;
    UINT32 u4IsProgSeq;
    UINT32 u4HSize;
    UINT32 u4VSize;
    UINT32 u4ChromaFmt;
    UINT32 u4SamplePrec;
    UINT32 u4AspRatio;
    UINT32 u4FrmRate ;
    UINT32 u4BitRateL;
    UINT32 u4MarketBitBR;
    UINT32 u4BitRateU;
    UINT32 u4LowDelay;
    UINT32 u4MarkerBit;
    UINT32 u4BBVSize;
    UINT32 u4RsvBits;
    UINT32 u4IsValid;
    UINT32 u2WidthDec;
    UINT32 u2HeightDec;
    UINT32 u4LastHSize;
    UINT32 u4LastVSize;
} VDEC_INFO_AVS_SEQ_HDR_T;

typedef struct _VDEC_INFO_AVS_PIC_HDR_T_
{
    UINT32 u4BBVDelay;
    UINT32 u4TimeCodeFg;
    UINT32 u4TimeCode;
    UINT32 u4MarkerBit;
    UINT32 u4BBVCheckTimes;
    UINT32 u4PicCodingType;
    UINT32 u4PicDistance;
    UINT32 u4ProgFrm;
    UINT32 u4PicStruct;
    UINT32 u4AdvPredModeDisable;
    UINT32 u4TFT;
    UINT32 u4RFF;
    UINT32 u4FixedPicQP;
    UINT32 u4PicQP;
    UINT32 u4PicRefFg;
    UINT32 u4NoForwardRefFg;
    UINT32 u4SkipModeFg;
    UINT32 u4RsvBits;
    UINT32 u4LoopFilterDisable;
    UINT32 u4LoopFilterParamFg;
    UINT32 u4IsValid;    //stuffing bit
    INT32 i4AlphaCOffset;
    INT32 i4BetaOffset;
    BOOL  fgIsIPic;
    BOOL  fgSecField;
} VDEC_INFO_AVS_PIC_HDR_T;

typedef struct _VDEC_INFO_AVS_SLICE_HDR_T_
{
    UINT16 u2VPosExt;
    UINT16 u2FixedSliceQP;
    UINT16 u2SliceQP;
    UINT16 u2SliceWeightFg;
    UINT16 u2MBWeightFg;
    UINT8 u1LumaScale[2];
    INT8 i1LumaShift[2];
    UINT8 u1ChromaScale[2];
    INT8 i1ChromaShift[2];
} VDEC_INFO_AVS_SLICE_DHR_T;

typedef struct _VDEC_INFO_AVS_WORK_BUF_SA_T_
{
    UINT32  u4PredSa;
    UINT32  u4Mv1;
    UINT32  u4Mv2;
} VDEC_INFO_AVS_WORK_BUF_SA_T;

typedef struct _VDEC_INFO_AVS_FRAME_BUF_SA_T_
{
    UINT32  u4Pic0YSa;
    UINT32  u4Pic0CSa;
    UINT32  u4Pic1YSa;
    UINT32  u4Pic1CSa;
    UINT32  u4Pic2YSa;
    UINT32  u4Pic2CSa;
} VDEC_INFO_AVS_FRAME_BUF_SA_T;

typedef struct _VDEC_INFO_AVS_FBUF_INFO_T_
{
    BOOL     fgNonExisting;
    BOOL     fgIsBufRef;
    BOOL     fgIsErr;
    BOOL     fgIsNotDisp;
    UCHAR   ucFbId;

    UINT8 u1FBufStatus;  // 1:Top decoded, 2: Bottom decoded
    UINT8 u1FBufRefType;
    UINT8 u1TFldRefType;
    UINT8 u1BFldRefType;

    UINT32 u4FrameNum;
    UINT32 u4SliceType;
    INT32 i4FrameNumWrap;

    UINT32  u4YAddr;
    UINT32  u4CAddrOffset;

    BOOL fgVirtualDec;
    UINT64  u8Pts;
    UINT64  u8Offset;

    // Picture coding type
    UINT8 u1PicCodingType;

    // Frame picture distance
    UINT32 u4PicDistance;

#if(CONFIG_DRV_VERIFY_SUPPORT)
    UINT32  u4W;
    UINT32  u4H;
    UINT32  u4DecOrder;
    UINT32  u4DramPicSize;  // change name to u4CAddrOffset and add u4MVStartAddr TODO:071021
    UINT32  u4DramPicArea; // maybe will be removed TODO:071021
    UINT32  u4Addr;  // change name to u4YStartAddr   TODO:071021
#endif
} VDEC_INFO_AVS_FBUF_INFO_T;

typedef struct _VDEC_INFO_AVS_REF_BUF_T
{
    BOOL fgValid;

    //FBM
    UCHAR ucFbId;

    // Fb Index
    UINT8 u1DecFBufIdx;
} VDEC_INFO_AVS_REF_BUF_T;

typedef struct _VDEC_INFO_AVS_DEC_PRM_T_
{
    UINT32  u4FRefBufIdx;
    INT32    i4MemBase;
    UINT8    u1LastRefIdx;
    UCHAR   u1DecFBufIdx;
    BOOL     fgEnPP;
    UINT32   u4MaxFBufNum;
    // Decoding buffer
    UCHAR *pucDecWorkBufY;
    UCHAR *pucDecWorkBufC;
    UCHAR *pucDecWorkBufMV;

    //For 8320  PANDA
    UINT32 u4VLDWrapperWrok;
    UINT32 u4PPWrapperWrok;

    VDEC_INFO_AVS_SEQ_HDR_T *prSeqHdr;
    VDEC_INFO_AVS_PIC_HDR_T *prPicHdr;
    VDEC_INFO_AVS_WORK_BUF_SA_T rAvsWorkBufSa;
    VDEC_INFO_AVS_FRAME_BUF_SA_T rAvsFrameBufSa;
    VDEC_INFO_AVS_FBUF_INFO_T arFBufInfo[AVS_DPB_NUM];
    //VDEC_INFO_AVS_REF_BUF_T arRefFBufInfo[AVS_DPB_NUM];
    VDEC_INFO_AVS_FBUF_INFO_T *prCurrFBufInfo;
} VDEC_INFO_AVS_DEC_PRM_T;

typedef struct _VDEC_HAL_DEC_AVS_ERR_INFO_T_
{
    UINT32 u4AvsErrCnt;                                ///< Video decode error count
    UINT32 u4AvsErrRow;                                ///< Video decode error mb row
    UINT32 u4AvsErrType;                               ///< Video decode error type
    UINT16 u2AvsMBErrCnt;
} VDEC_INFO_AVS_ERR_INFO_T;

#endif //#ifndef _HAL_VDEC_AVS_IF_H_