1 /* ------------------------------------------------------------------
2  * Copyright (C) 1998-2009 PacketVideo
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
13  * express or implied.
14  * See the License for the specific language governing permissions
15  * and limitations under the License.
16  * -------------------------------------------------------------------
17  */
18 #ifndef motion_comp_h
19 #define motion_comp_h
20 
21 /*----------------------------------------------------------------------------
22 ; INCLUDES
23 ----------------------------------------------------------------------------*/
24 #include "mp4dec_lib.h"
25 
26 /*----------------------------------------------------------------------------
27 ; MACROS
28 ; Define module specific macros here
29 ----------------------------------------------------------------------------*/
30 
31 /*----------------------------------------------------------------------------
32 ; DEFINES
33 ; Include all pre-processor statements here.
34 ----------------------------------------------------------------------------*/
35 /* CBP Mask defines used in chrominance prediction */
36 #define CBP_MASK_CHROMA_BLK4    0x2
37 #define CBP_MASK_CHROMA_BLK5    0x1
38 
39 /* CBP Mask defines used in luminance prediction (MODE_INTER4V) */
40 #define CBP_MASK_BLK0_MODE_INTER4V  0x20
41 #define CBP_MASK_BLK1_MODE_INTER4V  0x10
42 #define CBP_MASK_BLK2_MODE_INTER4V  0x08
43 #define CBP_MASK_BLK3_MODE_INTER4V  0x04
44 
45 /* CBP Mask defines used in luminance prediction (MODE_INTER or MODE_INTER_Q) */
46 #define CBP_MASK_MB_MODE_INTER  0x3c
47 
48 /*----------------------------------------------------------------------------
49 ; EXTERNAL VARIABLES REFERENCES
50 ; Declare variables used in this module but defined elsewhere
51 ----------------------------------------------------------------------------*/
52 #ifdef __cplusplus
53 extern "C"
54 {
55 #endif
56 
57 #define CLIP_RESULT(x)      if((x) & -256){(x) = 0xFF & (~((x)>>31));}
58 #define ADD_AND_CLIP1(x)    x += (pred_word&0xFF); CLIP_RESULT(x);
59 #define ADD_AND_CLIP2(x)    x += ((pred_word>>8)&0xFF); CLIP_RESULT(x);
60 #define ADD_AND_CLIP3(x)    x += ((pred_word>>16)&0xFF); CLIP_RESULT(x);
61 #define ADD_AND_CLIP4(x)    x += ((pred_word>>24)&0xFF); CLIP_RESULT(x);
62 
63 #define ADD_AND_CLIP(x,y)    {  x9 = ~((x)>>8); \
64                             if(x9!=-1){ \
65                                 x9 = ((uint32)x9)>>24; \
66                                 (y) = x9|((y)<<8); \
67                             } \
68                             else \
69                             {    \
70                                 (y) =  (x)|((y)<<8); \
71                             } \
72                             }
73 
74 
75     static int (*const GetPredAdvBTable[2][2])(uint8*, uint8*, int, int) =
76     {
77         {&GetPredAdvancedBy0x0, &GetPredAdvancedBy0x1},
78         {&GetPredAdvancedBy1x0, &GetPredAdvancedBy1x1}
79     };
80 
81     /*----------------------------------------------------------------------------
82     ; SIMPLE TYPEDEF'S
83     ----------------------------------------------------------------------------*/
84 
85     /*----------------------------------------------------------------------------
86     ; ENUMERATED TYPEDEF'S
87     ----------------------------------------------------------------------------*/
88 
89     /*----------------------------------------------------------------------------
90     ; STRUCTURES TYPEDEF'S
91     ----------------------------------------------------------------------------*/
92 
93     /*----------------------------------------------------------------------------
94     ; GLOBAL FUNCTION DEFINITIONS
95     ; Function Prototype declaration
96     ----------------------------------------------------------------------------*/
97 
98     /*----------------------------------------------------------------------------
99     ; END
100     ----------------------------------------------------------------------------*/
101 #endif
102 
103 #ifdef __cplusplus
104 }
105 #endif
106 
107 
108 
109