13306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/* ------------------------------------------------------------------ 23306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * Copyright (C) 1998-2009 PacketVideo 33306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * 43306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * Licensed under the Apache License, Version 2.0 (the "License"); 53306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * you may not use this file except in compliance with the License. 63306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * You may obtain a copy of the License at 73306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * 83306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * http://www.apache.org/licenses/LICENSE-2.0 93306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * 103306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * Unless required by applicable law or agreed to in writing, software 113306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * distributed under the License is distributed on an "AS IS" BASIS, 123306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 133306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * express or implied. 143306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * See the License for the specific language governing permissions 153306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * and limitations under the License. 163306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * ------------------------------------------------------------------- 173306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong */ 183306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#ifndef motion_comp_h 193306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define motion_comp_h 203306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 213306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/*---------------------------------------------------------------------------- 223306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong; INCLUDES 233306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong----------------------------------------------------------------------------*/ 243306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#include "mp4dec_lib.h" 253306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 263306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/*---------------------------------------------------------------------------- 273306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong; MACROS 283306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong; Define module specific macros here 293306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong----------------------------------------------------------------------------*/ 303306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 313306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/*---------------------------------------------------------------------------- 323306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong; DEFINES 333306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong; Include all pre-processor statements here. 343306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong----------------------------------------------------------------------------*/ 353306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/* CBP Mask defines used in chrominance prediction */ 363306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define CBP_MASK_CHROMA_BLK4 0x2 373306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define CBP_MASK_CHROMA_BLK5 0x1 383306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 393306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/* CBP Mask defines used in luminance prediction (MODE_INTER4V) */ 403306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define CBP_MASK_BLK0_MODE_INTER4V 0x20 413306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define CBP_MASK_BLK1_MODE_INTER4V 0x10 423306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define CBP_MASK_BLK2_MODE_INTER4V 0x08 433306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define CBP_MASK_BLK3_MODE_INTER4V 0x04 443306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 453306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/* CBP Mask defines used in luminance prediction (MODE_INTER or MODE_INTER_Q) */ 463306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define CBP_MASK_MB_MODE_INTER 0x3c 473306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 483306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/*---------------------------------------------------------------------------- 493306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong; EXTERNAL VARIABLES REFERENCES 503306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong; Declare variables used in this module but defined elsewhere 513306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong----------------------------------------------------------------------------*/ 523306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#ifdef __cplusplus 533306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dongextern "C" 543306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong{ 553306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#endif 563306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 57183d387706417863076873ec566ca5966d8f5560Chih-Hung Hsieh#define CLIP_RESULT(x) if((x) & -256){(x) = 0xFF & (~((x)>>31));} 583306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define ADD_AND_CLIP1(x) x += (pred_word&0xFF); CLIP_RESULT(x); 593306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define ADD_AND_CLIP2(x) x += ((pred_word>>8)&0xFF); CLIP_RESULT(x); 603306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define ADD_AND_CLIP3(x) x += ((pred_word>>16)&0xFF); CLIP_RESULT(x); 613306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define ADD_AND_CLIP4(x) x += ((pred_word>>24)&0xFF); CLIP_RESULT(x); 623306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 63183d387706417863076873ec566ca5966d8f5560Chih-Hung Hsieh#define ADD_AND_CLIP(x,y) { x9 = ~((x)>>8); \ 643306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong if(x9!=-1){ \ 653306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong x9 = ((uint32)x9)>>24; \ 66183d387706417863076873ec566ca5966d8f5560Chih-Hung Hsieh (y) = x9|((y)<<8); \ 673306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong } \ 683306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong else \ 693306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong { \ 70183d387706417863076873ec566ca5966d8f5560Chih-Hung Hsieh (y) = (x)|((y)<<8); \ 713306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong } \ 723306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong } 733306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 743306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 753306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong static int (*const GetPredAdvBTable[2][2])(uint8*, uint8*, int, int) = 763306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong { 773306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong {&GetPredAdvancedBy0x0, &GetPredAdvancedBy0x1}, 783306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong {&GetPredAdvancedBy1x0, &GetPredAdvancedBy1x1} 793306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong }; 803306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 813306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /*---------------------------------------------------------------------------- 823306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong ; SIMPLE TYPEDEF'S 833306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong ----------------------------------------------------------------------------*/ 843306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 853306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /*---------------------------------------------------------------------------- 863306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong ; ENUMERATED TYPEDEF'S 873306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong ----------------------------------------------------------------------------*/ 883306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 893306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /*---------------------------------------------------------------------------- 903306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong ; STRUCTURES TYPEDEF'S 913306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong ----------------------------------------------------------------------------*/ 923306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 933306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /*---------------------------------------------------------------------------- 943306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong ; GLOBAL FUNCTION DEFINITIONS 953306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong ; Function Prototype declaration 963306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong ----------------------------------------------------------------------------*/ 973306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 983306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /*---------------------------------------------------------------------------- 993306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong ; END 1003306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong ----------------------------------------------------------------------------*/ 1013306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#endif 1023306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 1033306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#ifdef __cplusplus 1043306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong} 1053306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#endif 1063306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 1073306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 1083306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 109