XenevaOS
Loading...
Searching...
No Matches
h264bsd_macroblock_layer.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2009 The Android Open Source Project
3 * Modified for use by h264bsd standalone library
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18/*------------------------------------------------------------------------------
19
20 Table of contents
21
22 1. Include headers
23 2. Module defines
24 3. Data types
25 4. Function prototypes
26
27------------------------------------------------------------------------------*/
28
29#ifndef H264SWDEC_MACROBLOCK_LAYER_H
30#define H264SWDEC_MACROBLOCK_LAYER_H
31
32/*------------------------------------------------------------------------------
33 1. Include headers
34------------------------------------------------------------------------------*/
35
36#include "basetype.h"
37#include "h264bsd_stream.h"
38#include "h264bsd_image.h"
39#include "h264bsd_dpb.h"
40
41/*------------------------------------------------------------------------------
42 2. Module defines
43------------------------------------------------------------------------------*/
44
45/* Macro to determine if a mb is an intra mb */
46#define IS_INTRA_MB(a) ((a).mbType > 5)
47
48/* Macro to determine if a mb is an I_PCM mb */
49#define IS_I_PCM_MB(a) ((a).mbType == 31)
50
85
86typedef enum {
90 P_L0_4x4 = 3
92
99
106
112
113/*------------------------------------------------------------------------------
114 3. Data types
115------------------------------------------------------------------------------*/
116
117typedef struct
118{
119 /* MvPrediction16x16 assumes that MVs are 16bits */
122} mv_t;
123
124typedef struct
125{
126 u32 prevIntra4x4PredModeFlag[16];
127 u32 remIntra4x4PredMode[16];
129 u32 refIdxL0[4];
130 mv_t mvdL0[4];
131} mbPred_t;
132
133typedef struct
134{
135 subMbType_e subMbType[4];
136 u32 refIdxL0[4];
137 mv_t mvdL0[4][4];
139
140typedef struct
141{
142#ifdef H264DEC_OMXDL
143 u8 posCoefBuf[27*16*3];
144 u8 totalCoeff[27];
145#else
146 i16 totalCoeff[27];
147#endif
148 i32 level[26][16];
149 u32 coeffMap[24];
150} residual_t;
151
161
186
187/*------------------------------------------------------------------------------
188 4. Function prototypes
189------------------------------------------------------------------------------*/
190
192 macroblockLayer_t *pMbLayer, mbStorage_t *pMb, u32 sliceType,
193 u32 numRefIdxActive);
194
197
199
201 image_t *currImage, dpbStorage_t *dpb, i32 *qpY, u32 mbNum,
202 u32 constrainedIntraPredFlag, u8* data);
203
205
207#ifdef H264DEC_NEON
208u32 h264bsdClearMbLayer(macroblockLayer_t *pMbLayer, u32 size);
209#endif
210
211#endif /* #ifdef H264SWDEC_MACROBLOCK_LAYER_H */
212
213
signed int i32
Definition basetype.h:34
signed short i16
Definition basetype.h:32
size_t size
Definition drm_bridge.h:1299
const char * level
Definition drm_print.h:515
subMbType_e
Definition h264bsd_macroblock_layer.h:86
@ P_L0_8x8
Definition h264bsd_macroblock_layer.h:87
@ P_L0_8x4
Definition h264bsd_macroblock_layer.h:88
@ P_L0_4x4
Definition h264bsd_macroblock_layer.h:90
@ P_L0_4x8
Definition h264bsd_macroblock_layer.h:89
mbPartPredMode_e h264bsdMbPartPredMode(mbType_e mbType)
Definition h264bsd_macroblock_layer.c:254
mbPartMode_e
Definition h264bsd_macroblock_layer.h:93
@ MB_P_16x8
Definition h264bsd_macroblock_layer.h:95
@ MB_P_8x16
Definition h264bsd_macroblock_layer.h:96
@ MB_P_16x16
Definition h264bsd_macroblock_layer.h:94
@ MB_P_8x8
Definition h264bsd_macroblock_layer.h:97
subMbPartMode_e
Definition h264bsd_macroblock_layer.h:100
@ MB_SP_8x4
Definition h264bsd_macroblock_layer.h:102
@ MB_SP_8x8
Definition h264bsd_macroblock_layer.h:101
@ MB_SP_4x4
Definition h264bsd_macroblock_layer.h:104
@ MB_SP_4x8
Definition h264bsd_macroblock_layer.h:103
u32 h264bsdDecodeMacroblock(mbStorage_t *pMb, macroblockLayer_t *pMbLayer, image_t *currImage, dpbStorage_t *dpb, i32 *qpY, u32 mbNum, u32 constrainedIntraPredFlag, u8 *data)
Definition h264bsd_macroblock_layer.c:965
struct mbStorage mbStorage_t
u32 h264bsdNumMbPart(mbType_e mbType)
Definition h264bsd_macroblock_layer.c:282
mbType_e
Definition h264bsd_macroblock_layer.h:51
@ I_16x16_0_0_0
Definition h264bsd_macroblock_layer.h:59
@ P_Skip
Definition h264bsd_macroblock_layer.h:52
@ P_L0_L0_16x8
Definition h264bsd_macroblock_layer.h:54
@ I_16x16_1_1_1
Definition h264bsd_macroblock_layer.h:76
@ I_16x16_3_1_0
Definition h264bsd_macroblock_layer.h:66
@ I_16x16_1_2_1
Definition h264bsd_macroblock_layer.h:80
@ I_16x16_2_2_1
Definition h264bsd_macroblock_layer.h:81
@ I_16x16_0_1_0
Definition h264bsd_macroblock_layer.h:63
@ I_16x16_2_1_0
Definition h264bsd_macroblock_layer.h:65
@ P_L0_L0_8x16
Definition h264bsd_macroblock_layer.h:55
@ I_16x16_0_2_1
Definition h264bsd_macroblock_layer.h:79
@ I_16x16_0_2_0
Definition h264bsd_macroblock_layer.h:67
@ I_16x16_3_2_1
Definition h264bsd_macroblock_layer.h:82
@ I_16x16_1_2_0
Definition h264bsd_macroblock_layer.h:68
@ I_16x16_2_0_1
Definition h264bsd_macroblock_layer.h:73
@ I_16x16_3_0_1
Definition h264bsd_macroblock_layer.h:74
@ I_16x16_3_0_0
Definition h264bsd_macroblock_layer.h:62
@ I_16x16_2_0_0
Definition h264bsd_macroblock_layer.h:61
@ P_8x8
Definition h264bsd_macroblock_layer.h:56
@ I_16x16_0_0_1
Definition h264bsd_macroblock_layer.h:71
@ I_16x16_1_0_0
Definition h264bsd_macroblock_layer.h:60
@ I_16x16_0_1_1
Definition h264bsd_macroblock_layer.h:75
@ P_L0_16x16
Definition h264bsd_macroblock_layer.h:53
@ I_16x16_3_2_0
Definition h264bsd_macroblock_layer.h:70
@ I_16x16_1_0_1
Definition h264bsd_macroblock_layer.h:72
@ I_PCM
Definition h264bsd_macroblock_layer.h:83
@ I_16x16_2_1_1
Definition h264bsd_macroblock_layer.h:77
@ I_16x16_2_2_0
Definition h264bsd_macroblock_layer.h:69
@ I_16x16_3_1_1
Definition h264bsd_macroblock_layer.h:78
@ I_16x16_1_1_0
Definition h264bsd_macroblock_layer.h:64
@ I_4x4
Definition h264bsd_macroblock_layer.h:58
@ P_8x8ref0
Definition h264bsd_macroblock_layer.h:57
mbPartPredMode_e
Definition h264bsd_macroblock_layer.h:107
@ PRED_MODE_INTRA4x4
Definition h264bsd_macroblock_layer.h:108
@ PRED_MODE_INTER
Definition h264bsd_macroblock_layer.h:110
@ PRED_MODE_INTRA16x16
Definition h264bsd_macroblock_layer.h:109
u32 h264bsdPredModeIntra16x16(mbType_e mbType)
Definition h264bsd_macroblock_layer.c:919
u32 h264bsdDecodeMacroblockLayer(strmData_t *pStrmData, macroblockLayer_t *pMbLayer, mbStorage_t *pMb, u32 sliceType, u32 numRefIdxActive)
Definition h264bsd_macroblock_layer.c:134
u32 h264bsdNumSubMbPart(subMbType_e subMbType)
Definition h264bsd_macroblock_layer.c:318
subMbPartMode_e h264bsdSubMbPartMode(subMbType_e subMbType)
Definition h264bsd_macroblock_layer.c:1433
void * data
Definition kthread.h:30
uint8_t u8
Definition kernel.h:14
uint32_t u32
Definition kernel.h:16
Definition h264bsd_dpb.h:79
Definition h264bsd_image.h:47
Definition h264bsd_macroblock_layer.h:153
residual_t residual
Definition h264bsd_macroblock_layer.h:159
mbPred_t mbPred
Definition h264bsd_macroblock_layer.h:157
mbType_e mbType
Definition h264bsd_macroblock_layer.h:154
i32 mbQpDelta
Definition h264bsd_macroblock_layer.h:156
subMbPred_t subMbPred
Definition h264bsd_macroblock_layer.h:158
u32 codedBlockPattern
Definition h264bsd_macroblock_layer.h:155
Definition h264bsd_macroblock_layer.h:125
u32 intraChromaPredMode
Definition h264bsd_macroblock_layer.h:128
Definition h264bsd_macroblock_layer.h:163
u8 * refAddr[4]
Definition h264bsd_macroblock_layer.h:178
u32 disableDeblockingFilterIdc
Definition h264bsd_macroblock_layer.h:166
mbType_e mbType
Definition h264bsd_macroblock_layer.h:164
i32 filterOffsetA
Definition h264bsd_macroblock_layer.h:167
u32 decoded
Definition h264bsd_macroblock_layer.h:180
struct mbStorage * mbA
Definition h264bsd_macroblock_layer.h:181
i16 totalCoeff[27]
Definition h264bsd_macroblock_layer.h:174
struct mbStorage * mbD
Definition h264bsd_macroblock_layer.h:184
i32 chromaQpIndexOffset
Definition h264bsd_macroblock_layer.h:170
u32 sliceId
Definition h264bsd_macroblock_layer.h:165
struct mbStorage * mbC
Definition h264bsd_macroblock_layer.h:183
u8 intra4x4PredMode[16]
Definition h264bsd_macroblock_layer.h:176
u32 refPic[4]
Definition h264bsd_macroblock_layer.h:177
i32 filterOffsetB
Definition h264bsd_macroblock_layer.h:168
u32 qpY
Definition h264bsd_macroblock_layer.h:169
struct mbStorage * mbB
Definition h264bsd_macroblock_layer.h:182
mv_t mv[16]
Definition h264bsd_macroblock_layer.h:179
Definition h264bsd_macroblock_layer.h:118
i16 hor
Definition h264bsd_macroblock_layer.h:120
i16 ver
Definition h264bsd_macroblock_layer.h:121
Definition h264bsd_macroblock_layer.h:141
Definition h264bsd_stream.h:47
Definition h264bsd_macroblock_layer.h:134