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