/* ------------------------------------------------------------------ * 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. * ------------------------------------------------------------------- */ /* ===================================================================== */ /* File: FastCodeMB.h */ /* Description: This file contains structure and function prototypes used in FastCodeMB() function. When it is decided to use FastCodeMB instead of CodeMB, all of this prototypes should be migrated to mp4enc_lib.h. */ /* Rev: */ /* Created: 8/14/01 */ /* //////////////////////////////////////////////////////////////////////// */ typedef struct struct_approxDCT approxDCT; struct struct_approxDCT { const Int *scale; Int(*DCT)(Int block[ ], Int coeff[ ], approxDCT *); // Threshold value for H.263 Quantizer Int th_app_all[8]; Int th_app_odd[8]; Int th_app_even[8]; Int th_app_even1[8]; Int th_app_even2[8]; }; struct QPstruct { Int QPx2 ; Int QP; Int QPdiv2; Int QPx2plus; Int Addition; }; /*---- FastCodeMB.c -----*/ void initCodeMB(approxDCT *function, Int QP); PV_STATUS CodeMB_H263(VideoEncData *video, approxDCT *function, Int QP, Int ncoefblck[], Int offset); PV_STATUS CodeMB_MPEG(VideoEncData *video, approxDCT *function, Int QP, Int ncoefblck[], Int offset); Int getBlockSAV(Int block[]); Int Sad8x8(UChar *rec, UChar *prev, Int lx); Int getBlockSum(UChar *rec, Int lx); /*---- AppVCA_dct.c -----*/ Int AppVCA1_dct(Int block[], Int out[ ], approxDCT *function); Int AppVCA2_dct(Int block[], Int out[ ], approxDCT *function); Int AppVCA3_dct(Int block[], Int out[ ], approxDCT *function); Int AppVCA4_dct(Int block[], Int out[ ], approxDCT *function); Int AppVCA5_dct(Int block[], Int out[ ], approxDCT *function); /*---- FastQuant.c -----*/ Int cal_dc_scalerENC(Int QP, Int type) ; Int BlockQuantDequantH263Inter(Int *rcoeff, Int *qcoeff, struct QPstruct *QuantParam, UChar bitmapcol[ ], UChar *bitmaprow, UInt *bitmapzz, Int dctMode, Int comp, Int dummy); Int BlockQuantDequantH263Intra(Int *rcoeff, Int *qcoeff, struct QPstruct *QuantParam, UChar bitmapcol[ ], UChar *bitmaprow, UInt *bitmapzz, Int dctMode, Int comp, Int dc_scaler); Int BlockQuantDequantH263DCInter(Int *rcoeff, Int *qcoeff, struct QPstruct *QuantParam, UChar *bitmaprow, UInt *bitmapzz, Int dummy); Int BlockQuantDequantH263DCIntra(Int *rcoeff, Int *qcoeff, struct QPstruct *QuantParam, UChar *bitmaprow, UInt *bitmapzz, Int dc_scaler); Int BlockQuantDequantMPEGInter(Int *rcoeff, Int *qcoeff, Int QP, Int *qmat, UChar bitmapcol[ ], UChar *bitmaprow, UInt *bitmapzz, Int DctMode, Int comp, Int dc_scaler); Int BlockQuantDequantMPEGIntra(Int *rcoeff, Int *qcoeff, Int QP, Int *qmat, UChar bitmapcol[ ], UChar *bitmaprow, UInt *bitmapzz, Int DctMode, Int comp, Int dc_scaler); Int BlockQuantDequantMPEGDCInter(Int *rcoeff, Int *qcoeff, Int QP, Int *qmat, UChar bitmapcol[ ], UChar *bitmaprow, UInt *bitmapzz, Int dummy); Int BlockQuantDequantMPEGDCIntra(Int *rcoeff, Int *qcoeff, Int QP, Int *qmat, UChar bitmapcol[ ], UChar *bitmaprow, UInt *bitmapzz, Int dc_scaler); /*---- FastIDCT.c -----*/ void BlockIDCTMotionComp(Int *block, UChar *bitmapcol, UChar bitmaprow, Int dctMode, UChar *rec, Int lx, Int intra); /*---- motion_comp.c -----*/ void PutSkippedBlock(UChar *rec, UChar *prev, Int lx);