diff options
Diffstat (limited to 'media/libstagefright/codecs/m4v_h263/dec/src/mp4dec_lib.h')
-rw-r--r-- | media/libstagefright/codecs/m4v_h263/dec/src/mp4dec_lib.h | 334 |
1 files changed, 334 insertions, 0 deletions
diff --git a/media/libstagefright/codecs/m4v_h263/dec/src/mp4dec_lib.h b/media/libstagefright/codecs/m4v_h263/dec/src/mp4dec_lib.h new file mode 100644 index 0000000..9cd4edc --- /dev/null +++ b/media/libstagefright/codecs/m4v_h263/dec/src/mp4dec_lib.h @@ -0,0 +1,334 @@ +/* ------------------------------------------------------------------ + * Copyright (C) 1998-2009 PacketVideo + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. + * See the License for the specific language governing permissions + * and limitations under the License. + * ------------------------------------------------------------------- + */ +#ifndef _MP4DECLIB_H_ +#define _MP4DECLIB_H_ + +/*---------------------------------------------------------------------------- +; INCLUDES +----------------------------------------------------------------------------*/ +#include "mp4def.h" /* typedef */ +#include "mp4lib_int.h" /* main video structure */ + +/*---------------------------------------------------------------------------- +; MACROS +; Define module specific macros here +----------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------- +; DEFINES +; Include all pre-processor statements here. +----------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------- +; EXTERNAL VARIABLES REFERENCES +; Declare variables used in this module but defined elsewhere +----------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------- +; SIMPLE TYPEDEF'S +----------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------- +; ENUMERATED TYPEDEF'S +----------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------- +; STRUCTURES TYPEDEF'S +----------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------- +; GLOBAL FUNCTION DEFINITIONS +; Function Prototype declaration +----------------------------------------------------------------------------*/ +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + + /* defined in pvdec_api.c, these function are not supposed to be */ + /* exposed to programmers outside PacketVideo. 08/15/2000. */ + uint VideoDecoderErrorDetected(VideoDecData *video); + +#ifdef ENABLE_LOG + void m4vdec_dprintf(char *format, ...); +#define mp4dec_log(message) m4vdec_dprintf(message) +#else +#define mp4dec_log(message) +#endif + + /*--------------------------------------------------------------------------*/ + /* defined in frame_buffer.c */ + PV_STATUS FillFrameBufferNew(BitstreamDecVideo *stream); + PV_STATUS FillFrameBuffer(BitstreamDecVideo *stream, int short_header); + + /*--------------------------------------------------------------------------*/ + /* defined in dc_ac_pred.c */ + int cal_dc_scaler(int QP, int type); + PV_STATUS PV_DecodePredictedIntraDC(int compnum, BitstreamDecVideo *stream, + int16 *IntraDC_delta); + + void doDCACPrediction(VideoDecData *video, int comp, int16 *q_block, + int *direction); + +#ifdef PV_ANNEX_IJKT_SUPPORT + void doDCACPrediction_I(VideoDecData *video, int comp, int16 *q_block); +#endif + /*--------------------------------------------------------------------------*/ + /* defined in block_idct.c */ + void MBlockIDCTAdd(VideoDecData *video, int nz_coefs[]); + + void BlockIDCT(uint8 *dst, uint8 *pred, int16 *blk, int width, int nzcoefs, + uint8 *bitmapcol, uint8 bitmaprow); + + void MBlockIDCT(VideoDecData *video); + void BlockIDCT_intra(MacroBlock *mblock, PIXEL *c_comp, int comp, int width_offset); + /*--------------------------------------------------------------------------*/ + /* defined in combined_decode.c */ + PV_STATUS DecodeFrameCombinedMode(VideoDecData *video); + PV_STATUS GetMBheader(VideoDecData *video, int16 *QP); + PV_STATUS GetMBData(VideoDecData *video); + + /*--------------------------------------------------------------------------*/ + /* defined in datapart_decode.c */ + PV_STATUS DecodeFrameDataPartMode(VideoDecData *video); + PV_STATUS GetMBheaderDataPart_DQUANT_DC(VideoDecData *video, int16 *QP); + PV_STATUS GetMBheaderDataPart_P(VideoDecData *video); + PV_STATUS DecodeDataPart_I_VideoPacket(VideoDecData *video, int slice_counter); + PV_STATUS DecodeDataPart_P_VideoPacket(VideoDecData *video, int slice_counter); + PV_STATUS GetMBData_DataPart(VideoDecData *video); + + /*--------------------------------------------------------------------------*/ + /* defined in packet_util.c */ + PV_STATUS PV_ReadVideoPacketHeader(VideoDecData *video, int *next_MB); + PV_STATUS RecoverPacketError(BitstreamDecVideo *stream, int marker_length, int32 *nextVop); + PV_STATUS RecoverGOBError(BitstreamDecVideo *stream, int marker_length, int32 *vopPos); + PV_STATUS PV_GobHeader(VideoDecData *video); +#ifdef PV_ANNEX_IJKT_SUPPORT + PV_STATUS PV_H263SliceHeader(VideoDecData *videoInt, int *next_MB); +#endif + /*--------------------------------------------------------------------------*/ + /* defined in motion_comp.c */ + void MBMotionComp(VideoDecData *video, int CBP); + void SkippedMBMotionComp(VideoDecData *video); + + /*--------------------------------------------------------------------------*/ + /* defined in chrominance_pred.c */ + void chrominance_pred( + int xpred, /* i */ + int ypred, /* i */ + uint8 *cu_prev, /* i */ + uint8 *cv_prev, /* i */ + uint8 *pred_block, /* i */ + int width_uv, /* i */ + int height_uv, /* i */ + int round1 + ); + + /*--------------------------------------------------------------------------*/ + /* defined in luminance_pred_mode_inter.c */ + void luminance_pred_mode_inter( + int xpred, /* i */ + int ypred, /* i */ + uint8 *c_prev, /* i */ + uint8 *pred_block, /* i */ + int width, /* i */ + int height, /* i */ + int round1 + ); + + /*--------------------------------------------------------------------------*/ + /* defined in luminance_pred_mode_inter4v.c */ + void luminance_pred_mode_inter4v( + int xpos, /* i */ + int ypos, /* i */ + MOT *px, /* i */ + MOT *py, /* i */ + uint8 *c_prev, /* i */ + uint8 *pred_block, /* i */ + int width, /* i */ + int height, /* i */ + int round1, /* i */ + int mvwidth, /* i */ + int *xsum_ptr, /* i/o */ + int *ysum_ptr /* i/o */ + ); + + /*--------------------------------------------------------------------------*/ + /* defined in pp_semaphore_chroma_inter.c */ +#ifdef PV_POSTPROC_ON + void pp_semaphore_chroma_inter( + int xpred, /* i */ + int ypred, /* i */ + uint8 *pp_dec_u, /* i/o */ + uint8 *pstprcTypPrv, /* i */ + int dx, /* i */ + int dy, /* i */ + int mvwidth, /* i */ + int height, /* i */ + int32 size, /* i */ + int mv_loc, /* i */ + uint8 msk_deblock /* i */ + ); + + /*--------------------------------------------------------------------------*/ + /* defined in pp_semaphore_luma.c */ + uint8 pp_semaphore_luma( + int xpred, /* i */ + int ypred, /* i */ + uint8 *pp_dec_y, /* i/o */ + uint8 *pstprcTypPrv, /* i */ + int *ll, /* i */ + int *mv_loc, /* i/o */ + int dx, /* i */ + int dy, /* i */ + int mvwidth, /* i */ + int width, /* i */ + int height /* i */ + ); +#endif + /*--------------------------------------------------------------------------*/ + /* defined in get_pred_adv_mb_add.c */ + int GetPredAdvancedMB( + int xpos, + int ypos, + uint8 *c_prev, + uint8 *pred_block, + int width, + int rnd1 + ); + + /*--------------------------------------------------------------------------*/ + /* defined in get_pred_adv_b_add.c */ + int GetPredAdvancedBy0x0( + uint8 *c_prev, /* i */ + uint8 *pred_block, /* i */ + int width, /* i */ + int pred_width_rnd /* i */ + ); + + int GetPredAdvancedBy0x1( + uint8 *c_prev, /* i */ + uint8 *pred_block, /* i */ + int width, /* i */ + int pred_width_rnd /* i */ + ); + + int GetPredAdvancedBy1x0( + uint8 *c_prev, /* i */ + uint8 *pred_block, /* i */ + int width, /* i */ + int pred_width_rnd /* i */ + ); + + int GetPredAdvancedBy1x1( + uint8 *c_prev, /* i */ + uint8 *pred_block, /* i */ + int width, /* i */ + int pred_width_rnd /* i */ + ); + + /*--------------------------------------------------------------------------*/ + /* defined in get_pred_outside.c */ + int GetPredOutside( + int xpos, + int ypos, + uint8 *c_prev, + uint8 *pred_block, + int width, + int height, + int rnd1, + int pred_width + ); + + /*--------------------------------------------------------------------------*/ + /* defined in find_pmvsErrRes.c */ + void mv_prediction(VideoDecData *video, int block, MOT *mvx, MOT *mvy); + + /*--------------------------------------------------------------------------*/ + + /*--------------------------------------------------------------------------*/ + /* defined in mb_utils.c */ + void Copy_MB_into_Vop(uint8 *comp, int yChan[][NCOEFF_BLOCK], int width); + void Copy_B_into_Vop(uint8 *comp, int cChan[], int width); + void PutSKIPPED_MB(uint8 *comp, uint8 *c_prev, int width); + void PutSKIPPED_B(uint8 *comp, uint8 *c_prev, int width); + + /*--------------------------------------------------------------------------*/ + /* defined in vop.c */ + PV_STATUS DecodeGOVHeader(BitstreamDecVideo *stream, uint32 *time_base); + PV_STATUS DecodeVOLHeader(VideoDecData *video, int layer); + PV_STATUS DecodeVOPHeader(VideoDecData *video, Vop *currVop, Bool use_ext_tiemstamp); + PV_STATUS DecodeShortHeader(VideoDecData *video, Vop *currVop); + PV_STATUS PV_DecodeVop(VideoDecData *video); + uint32 CalcVopDisplayTime(Vol *currVol, Vop *currVop, int shortVideoHeader); + + /*--------------------------------------------------------------------------*/ + /* defined in post_proc.c */ +#ifdef PV_ANNEX_IJKT_SUPPORT + void H263_Deblock(uint8 *rec, int width, int height, int16 *QP_store, uint8 *mode, int chr, int T); +#endif + int PostProcSemaphore(int16 *q_block); + void PostFilter(VideoDecData *video, int filer_type, uint8 *output); + void FindMaxMin(uint8 *ptr, int *min, int *max, int incr); + void DeringAdaptiveSmoothMMX(uint8 *img, int incr, int thres, int mxdf); + void AdaptiveSmooth_NoMMX(uint8 *Rec_Y, int v0, int h0, int v_blk, int h_blk, + int thr, int width, int max_diff); + void Deringing_Luma(uint8 *Rec_Y, int width, int height, int16 *QP_store, + int Combined, uint8 *pp_mod); + void Deringing_Chroma(uint8 *Rec_C, int width, int height, int16 *QP_store, + int Combined, uint8 *pp_mod); + void CombinedHorzVertFilter(uint8 *rec, int width, int height, int16 *QP_store, + int chr, uint8 *pp_mod); + void CombinedHorzVertFilter_NoSoftDeblocking(uint8 *rec, int width, int height, int16 *QP_store, + int chr, uint8 *pp_mod); + void CombinedHorzVertRingFilter(uint8 *rec, int width, int height, + int16 *QP_store, int chr, uint8 *pp_mod); + + /*--------------------------------------------------------------------------*/ + /* defined in conceal.c */ + void ConcealTexture_I(VideoDecData *video, int32 startFirstPartition, int mb_start, int mb_stop, + int slice_counter); + void ConcealTexture_P(VideoDecData *video, int mb_start, int mb_stop, + int slice_counter); + void ConcealPacket(VideoDecData *video, int mb_start, int mb_stop, + int slice_counter); + void CopyVopMB(Vop *curr, uint8 *prev, int mbnum, int width, int height); + + /* define in vlc_dequant.c , 09/18/2000*/ +#ifdef PV_SUPPORT_MAIN_PROFILE + int VlcDequantMpegIntraBlock(void *video, int comp, int switched, + uint8 *bitmapcol, uint8 *bitmaprow); + int VlcDequantMpegInterBlock(void *video, int comp, + uint8 *bitmapcol, uint8 *bitmaprow); +#endif + int VlcDequantH263IntraBlock(VideoDecData *video, int comp, int switched, + uint8 *bitmapcol, uint8 *bitmaprow); + int VlcDequantH263IntraBlock_SH(VideoDecData *video, int comp, + uint8 *bitmapcol, uint8 *bitmaprow); + int VlcDequantH263InterBlock(VideoDecData *video, int comp, + uint8 *bitmapcol, uint8 *bitmaprow); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +/*---------------------------------------------------------------------------- +; END +----------------------------------------------------------------------------*/ +#endif + |