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