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 _MP4DECLIB_H_ 193306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define _MP4DECLIB_H_ 203306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 213306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/*---------------------------------------------------------------------------- 223306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong; INCLUDES 233306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong----------------------------------------------------------------------------*/ 243306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#include "mp4def.h" /* typedef */ 253306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#include "mp4lib_int.h" /* main video structure */ 263306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 273306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/*---------------------------------------------------------------------------- 283306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong; MACROS 293306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong; Define module specific macros here 303306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong----------------------------------------------------------------------------*/ 313306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 323306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/*---------------------------------------------------------------------------- 333306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong; DEFINES 343306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong; Include all pre-processor statements here. 353306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong----------------------------------------------------------------------------*/ 363306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 373306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/*---------------------------------------------------------------------------- 383306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong; EXTERNAL VARIABLES REFERENCES 393306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong; Declare variables used in this module but defined elsewhere 403306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong----------------------------------------------------------------------------*/ 413306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 423306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/*---------------------------------------------------------------------------- 433306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong; SIMPLE TYPEDEF'S 443306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong----------------------------------------------------------------------------*/ 453306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 463306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/*---------------------------------------------------------------------------- 473306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong; ENUMERATED TYPEDEF'S 483306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong----------------------------------------------------------------------------*/ 493306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 503306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/*---------------------------------------------------------------------------- 513306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong; STRUCTURES TYPEDEF'S 523306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong----------------------------------------------------------------------------*/ 533306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 543306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/*---------------------------------------------------------------------------- 553306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong; GLOBAL FUNCTION DEFINITIONS 563306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong; Function Prototype declaration 573306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong----------------------------------------------------------------------------*/ 583306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#ifdef __cplusplus 593306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dongextern "C" 603306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong{ 613306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#endif /* __cplusplus */ 623306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 633306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* defined in pvdec_api.c, these function are not supposed to be */ 643306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* exposed to programmers outside PacketVideo. 08/15/2000. */ 653306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint VideoDecoderErrorDetected(VideoDecData *video); 663306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 673306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#ifdef ENABLE_LOG 683306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void m4vdec_dprintf(char *format, ...); 693306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define mp4dec_log(message) m4vdec_dprintf(message) 703306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#else 713306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#define mp4dec_log(message) 723306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#endif 733306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 743306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /*--------------------------------------------------------------------------*/ 753306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* defined in frame_buffer.c */ 763306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS FillFrameBufferNew(BitstreamDecVideo *stream); 773306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS FillFrameBuffer(BitstreamDecVideo *stream, int short_header); 783306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 793306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /*--------------------------------------------------------------------------*/ 803306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* defined in dc_ac_pred.c */ 813306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int cal_dc_scaler(int QP, int type); 823306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS PV_DecodePredictedIntraDC(int compnum, BitstreamDecVideo *stream, 833306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int16 *IntraDC_delta); 843306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 853306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void doDCACPrediction(VideoDecData *video, int comp, int16 *q_block, 863306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int *direction); 873306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 883306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#ifdef PV_ANNEX_IJKT_SUPPORT 893306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void doDCACPrediction_I(VideoDecData *video, int comp, int16 *q_block); 903306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#endif 913306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /*--------------------------------------------------------------------------*/ 923306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* defined in block_idct.c */ 933306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void MBlockIDCTAdd(VideoDecData *video, int nz_coefs[]); 943306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 953306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void BlockIDCT(uint8 *dst, uint8 *pred, int16 *blk, int width, int nzcoefs, 963306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 *bitmapcol, uint8 bitmaprow); 973306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 983306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void MBlockIDCT(VideoDecData *video); 993306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void BlockIDCT_intra(MacroBlock *mblock, PIXEL *c_comp, int comp, int width_offset); 1003306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /*--------------------------------------------------------------------------*/ 1013306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* defined in combined_decode.c */ 1023306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS DecodeFrameCombinedMode(VideoDecData *video); 1033306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS GetMBheader(VideoDecData *video, int16 *QP); 1043306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS GetMBData(VideoDecData *video); 1053306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 1063306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /*--------------------------------------------------------------------------*/ 1073306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* defined in datapart_decode.c */ 1083306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS DecodeFrameDataPartMode(VideoDecData *video); 1093306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS GetMBheaderDataPart_DQUANT_DC(VideoDecData *video, int16 *QP); 1103306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS GetMBheaderDataPart_P(VideoDecData *video); 1113306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS DecodeDataPart_I_VideoPacket(VideoDecData *video, int slice_counter); 1123306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS DecodeDataPart_P_VideoPacket(VideoDecData *video, int slice_counter); 1133306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS GetMBData_DataPart(VideoDecData *video); 1143306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 1153306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /*--------------------------------------------------------------------------*/ 1163306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* defined in packet_util.c */ 1173306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS PV_ReadVideoPacketHeader(VideoDecData *video, int *next_MB); 1183306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS RecoverPacketError(BitstreamDecVideo *stream, int marker_length, int32 *nextVop); 1193306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS RecoverGOBError(BitstreamDecVideo *stream, int marker_length, int32 *vopPos); 1203306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS PV_GobHeader(VideoDecData *video); 1213306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#ifdef PV_ANNEX_IJKT_SUPPORT 1223306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS PV_H263SliceHeader(VideoDecData *videoInt, int *next_MB); 1233306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#endif 1243306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /*--------------------------------------------------------------------------*/ 1253306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* defined in motion_comp.c */ 1263306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void MBMotionComp(VideoDecData *video, int CBP); 1273306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void SkippedMBMotionComp(VideoDecData *video); 1283306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 1293306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /*--------------------------------------------------------------------------*/ 1303306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* defined in chrominance_pred.c */ 1313306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void chrominance_pred( 1323306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int xpred, /* i */ 1333306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int ypred, /* i */ 1343306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 *cu_prev, /* i */ 1353306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 *cv_prev, /* i */ 1363306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 *pred_block, /* i */ 1373306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int width_uv, /* i */ 1383306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int height_uv, /* i */ 1393306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int round1 1403306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong ); 1413306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 1423306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /*--------------------------------------------------------------------------*/ 1433306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* defined in luminance_pred_mode_inter.c */ 1443306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void luminance_pred_mode_inter( 1453306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int xpred, /* i */ 1463306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int ypred, /* i */ 1473306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 *c_prev, /* i */ 1483306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 *pred_block, /* i */ 1493306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int width, /* i */ 1503306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int height, /* i */ 1513306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int round1 1523306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong ); 1533306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 1543306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /*--------------------------------------------------------------------------*/ 1553306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* defined in luminance_pred_mode_inter4v.c */ 1563306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void luminance_pred_mode_inter4v( 1573306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int xpos, /* i */ 1583306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int ypos, /* i */ 1593306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong MOT *px, /* i */ 1603306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong MOT *py, /* i */ 1613306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 *c_prev, /* i */ 1623306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 *pred_block, /* i */ 1633306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int width, /* i */ 1643306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int height, /* i */ 1653306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int round1, /* i */ 1663306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int mvwidth, /* i */ 1673306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int *xsum_ptr, /* i/o */ 1683306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int *ysum_ptr /* i/o */ 1693306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong ); 1703306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 1713306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /*--------------------------------------------------------------------------*/ 1723306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* defined in pp_semaphore_chroma_inter.c */ 1733306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#ifdef PV_POSTPROC_ON 1743306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void pp_semaphore_chroma_inter( 1753306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int xpred, /* i */ 1763306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int ypred, /* i */ 1773306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 *pp_dec_u, /* i/o */ 1783306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 *pstprcTypPrv, /* i */ 1793306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int dx, /* i */ 1803306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int dy, /* i */ 1813306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int mvwidth, /* i */ 1823306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int height, /* i */ 1833306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int32 size, /* i */ 1843306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int mv_loc, /* i */ 1853306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 msk_deblock /* i */ 1863306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong ); 1873306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 1883306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /*--------------------------------------------------------------------------*/ 1893306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* defined in pp_semaphore_luma.c */ 1903306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 pp_semaphore_luma( 1913306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int xpred, /* i */ 1923306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int ypred, /* i */ 1933306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 *pp_dec_y, /* i/o */ 1943306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 *pstprcTypPrv, /* i */ 1953306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int *ll, /* i */ 1963306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int *mv_loc, /* i/o */ 1973306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int dx, /* i */ 1983306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int dy, /* i */ 1993306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int mvwidth, /* i */ 2003306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int width, /* i */ 2013306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int height /* i */ 2023306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong ); 2033306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#endif 2043306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /*--------------------------------------------------------------------------*/ 2053306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* defined in get_pred_adv_mb_add.c */ 2063306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int GetPredAdvancedMB( 2073306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int xpos, 2083306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int ypos, 2093306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 *c_prev, 2103306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 *pred_block, 2113306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int width, 2123306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int rnd1 2133306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong ); 2143306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 2153306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /*--------------------------------------------------------------------------*/ 2163306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* defined in get_pred_adv_b_add.c */ 2173306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int GetPredAdvancedBy0x0( 2183306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 *c_prev, /* i */ 2193306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 *pred_block, /* i */ 2203306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int width, /* i */ 2213306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int pred_width_rnd /* i */ 2223306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong ); 2233306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 2243306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int GetPredAdvancedBy0x1( 2253306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 *c_prev, /* i */ 2263306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 *pred_block, /* i */ 2273306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int width, /* i */ 2283306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int pred_width_rnd /* i */ 2293306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong ); 2303306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 2313306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int GetPredAdvancedBy1x0( 2323306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 *c_prev, /* i */ 2333306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 *pred_block, /* i */ 2343306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int width, /* i */ 2353306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int pred_width_rnd /* i */ 2363306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong ); 2373306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 2383306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int GetPredAdvancedBy1x1( 2393306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 *c_prev, /* i */ 2403306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 *pred_block, /* i */ 2413306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int width, /* i */ 2423306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int pred_width_rnd /* i */ 2433306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong ); 2443306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 2453306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /*--------------------------------------------------------------------------*/ 2463306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* defined in get_pred_outside.c */ 2473306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int GetPredOutside( 2483306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int xpos, 2493306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int ypos, 2503306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 *c_prev, 2513306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 *pred_block, 2523306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int width, 2533306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int height, 2543306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int rnd1, 2553306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int pred_width 2563306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong ); 2573306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 2583306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /*--------------------------------------------------------------------------*/ 2593306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* defined in find_pmvsErrRes.c */ 2603306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void mv_prediction(VideoDecData *video, int block, MOT *mvx, MOT *mvy); 2613306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 2623306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /*--------------------------------------------------------------------------*/ 2633306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 2643306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /*--------------------------------------------------------------------------*/ 2653306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* defined in mb_utils.c */ 2663306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void Copy_MB_into_Vop(uint8 *comp, int yChan[][NCOEFF_BLOCK], int width); 2673306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void Copy_B_into_Vop(uint8 *comp, int cChan[], int width); 2683306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void PutSKIPPED_MB(uint8 *comp, uint8 *c_prev, int width); 2693306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void PutSKIPPED_B(uint8 *comp, uint8 *c_prev, int width); 2703306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 2713306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /*--------------------------------------------------------------------------*/ 2723306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* defined in vop.c */ 2733306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS DecodeGOVHeader(BitstreamDecVideo *stream, uint32 *time_base); 2743306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS DecodeVOLHeader(VideoDecData *video, int layer); 2753306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS DecodeVOPHeader(VideoDecData *video, Vop *currVop, Bool use_ext_tiemstamp); 2763306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS DecodeShortHeader(VideoDecData *video, Vop *currVop); 2773306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong PV_STATUS PV_DecodeVop(VideoDecData *video); 2783306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint32 CalcVopDisplayTime(Vol *currVol, Vop *currVop, int shortVideoHeader); 2793306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 2803306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /*--------------------------------------------------------------------------*/ 2813306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* defined in post_proc.c */ 2823306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#ifdef PV_ANNEX_IJKT_SUPPORT 2833306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void H263_Deblock(uint8 *rec, int width, int height, int16 *QP_store, uint8 *mode, int chr, int T); 2843306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#endif 2853306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int PostProcSemaphore(int16 *q_block); 2863306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void PostFilter(VideoDecData *video, int filer_type, uint8 *output); 2873306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void FindMaxMin(uint8 *ptr, int *min, int *max, int incr); 2883306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void DeringAdaptiveSmoothMMX(uint8 *img, int incr, int thres, int mxdf); 2893306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void AdaptiveSmooth_NoMMX(uint8 *Rec_Y, int v0, int h0, int v_blk, int h_blk, 2903306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int thr, int width, int max_diff); 2913306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void Deringing_Luma(uint8 *Rec_Y, int width, int height, int16 *QP_store, 2923306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int Combined, uint8 *pp_mod); 2933306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void Deringing_Chroma(uint8 *Rec_C, int width, int height, int16 *QP_store, 2943306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int Combined, uint8 *pp_mod); 2953306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void CombinedHorzVertFilter(uint8 *rec, int width, int height, int16 *QP_store, 2963306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int chr, uint8 *pp_mod); 2973306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void CombinedHorzVertFilter_NoSoftDeblocking(uint8 *rec, int width, int height, int16 *QP_store, 2983306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int chr, uint8 *pp_mod); 2993306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void CombinedHorzVertRingFilter(uint8 *rec, int width, int height, 3003306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int16 *QP_store, int chr, uint8 *pp_mod); 3013306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 3023306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /*--------------------------------------------------------------------------*/ 3033306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* defined in conceal.c */ 3043306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void ConcealTexture_I(VideoDecData *video, int32 startFirstPartition, int mb_start, int mb_stop, 3053306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int slice_counter); 3063306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void ConcealTexture_P(VideoDecData *video, int mb_start, int mb_stop, 3073306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int slice_counter); 3083306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void ConcealPacket(VideoDecData *video, int mb_start, int mb_stop, 3093306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int slice_counter); 3103306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong void CopyVopMB(Vop *curr, uint8 *prev, int mbnum, int width, int height); 3113306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 3123306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* define in vlc_dequant.c , 09/18/2000*/ 3133306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#ifdef PV_SUPPORT_MAIN_PROFILE 3143306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int VlcDequantMpegIntraBlock(void *video, int comp, int switched, 3153306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 *bitmapcol, uint8 *bitmaprow); 3163306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int VlcDequantMpegInterBlock(void *video, int comp, 3173306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 *bitmapcol, uint8 *bitmaprow); 3183306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#endif 3193306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int VlcDequantH263IntraBlock(VideoDecData *video, int comp, int switched, 3203306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 *bitmapcol, uint8 *bitmaprow); 3213306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int VlcDequantH263IntraBlock_SH(VideoDecData *video, int comp, 3223306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 *bitmapcol, uint8 *bitmaprow); 3233306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int VlcDequantH263InterBlock(VideoDecData *video, int comp, 3243306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 *bitmapcol, uint8 *bitmaprow); 3253306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 3263306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#ifdef __cplusplus 3273306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong} 3283306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#endif /* __cplusplus */ 3293306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 3303306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/*---------------------------------------------------------------------------- 3313306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong; END 3323306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong----------------------------------------------------------------------------*/ 3333306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#endif 3343306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 335