1 /*
2  * Copyright (C) 2009 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 /*------------------------------------------------------------------------------
18 
19     Table of contents
20 
21     1. Include headers
22     2. Module defines
23     3. Data types
24     4. Function prototypes
25 
26 ------------------------------------------------------------------------------*/
27 
28 #ifndef H264SWDEC_NEIGHBOUR_H
29 #define H264SWDEC_NEIGHBOUR_H
30 
31 /*------------------------------------------------------------------------------
32     1. Include headers
33 ------------------------------------------------------------------------------*/
34 
35 #include "basetype.h"
36 #include "h264bsd_macroblock_layer.h"
37 
38 /*------------------------------------------------------------------------------
39     2. Module defines
40 ------------------------------------------------------------------------------*/
41 
42 typedef enum {
43     MB_A = 0,
44     MB_B,
45     MB_C,
46     MB_D,
47     MB_CURR,
48     MB_NA = 0xFF
49 } neighbourMb_e;
50 
51 /*------------------------------------------------------------------------------
52     3. Data types
53 ------------------------------------------------------------------------------*/
54 
55 typedef struct
56 {
57     neighbourMb_e   mb;
58     u8             index;
59 } neighbour_t;
60 
61 /*------------------------------------------------------------------------------
62     4. Function prototypes
63 ------------------------------------------------------------------------------*/
64 
65 void h264bsdInitMbNeighbours(mbStorage_t *pMbStorage, u32 picWidth,
66     u32 picSizeInMbs);
67 
68 mbStorage_t* h264bsdGetNeighbourMb(mbStorage_t *pMb, neighbourMb_e neighbour);
69 
70 u32 h264bsdIsNeighbourAvailable(mbStorage_t *pMb, mbStorage_t *pNeighbour);
71 
72 const neighbour_t* h264bsdNeighbour4x4BlockA(u32 blockIndex);
73 const neighbour_t* h264bsdNeighbour4x4BlockB(u32 blockIndex);
74 const neighbour_t* h264bsdNeighbour4x4BlockC(u32 blockIndex);
75 const neighbour_t* h264bsdNeighbour4x4BlockD(u32 blockIndex);
76 
77 #endif /* #ifdef H264SWDEC_NEIGHBOUR_H */
78 
79