123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562 |
- /****************************************************************************
- *
- * Module Title : COMPDLL.H
- *
- * Description : Video CODEC demo compression DLL main header
- *
- * AUTHOR : Paul Wilkins
- *
- *****************************************************************************
- * Revision History
- *
- * 1.34 YWX 09-Dec-02 Added Function pointers for frame/field varainces calculation
- * 1.33 YWX 30-Oct-02 Added EncoderLoopFilterOff flag
- * 1.32 YWX 28-Oct-02 Added function pointer for 5 region diamond search
- * 1.31 YWX 28-Oct-02 Added above and left token context and 5 region
- * diamond motion search sites
- * 1.30 YWX 02-Jul-02 Added new funcion pointers for motion search
- * 1.31 JBB 04 JUL-02 Added preprocessor code
- * 1.29 AWG 20-Jun-01 Removed QuadCodeComponent function prototype & HExtra/VExtra
- * 1.29 AWG 22-May-01 Added support for DCT16
- * 1.28 JBB 05-May-01 Changes for VP5 (new entropytablebits and tokenextra chgs
- * 1.27 JBB 23-Mar-01 Changed QuickCompress datatype from BOOL to INT32
- * 1.26 JBB 11 Feb 01 Merged in: added vars for map ca move ac choice to right after dc
- * 1.25 PGW 31 Jan 01 Added some stats variables and VP5 Mv entropy tables.
- * 1.24 JBB 30 Nov 00 Version number changes
- * 1.23 JBB 15 Nov 00 Cleaned out ifdefs
- * 1.22 JBB 15 Oct 00 Added First Pass Function
- * 1.21 JBB 11 Sep 00 new function pointers for subtract removed transxquant
- * 1.20 JBB 07 Sep 00 Changed error metrics to Unsigned int
- * 1.19 JBB 24 Aug 00 Ansi C compatible
- * 1.18 JBB 27Jul00 added checks on Mallocs
- * 1.17 JBB 24Jul00 Changed error functions to return INT32 instead of double
- * 1.16 PGW 12 Jul 00 Removed CompAutoKeyFrameThreshold.
- * 1.15 PGW 29 Jun 00 Removed instnace varibale CarryOverAdaptionEnabled.
- * 1.14 PGW 27 Jun 00 Added QTargetModifier[]. Changes to CONFIG_TYPE2.
- * 1.13 JBB 30/05/00 Removed hard coded size limits
- * 1.12 JBB 22/05/00 Added OriginalDC support to remove max_fragments depends
- * 1.11 YX 13/04/00 Add function pointers for new optimizations
- * 1.10 YX 06/04/00 More buffers alligned MMX Fdct
- * 1.09 YX 20/03/00 32 Byte alligned buffers, Back to Integer Forward DCT
- * Additional Function pointers for optimized code
- * 1.08 PGW 17/03/00 Changes to support seperate Y and UV entropy tables.
- * Added PreProcFilterLevel to allow control of preprecessor
- * filter level.
- * 1.07 YX 09/03/00 Change to use floating point forward DCT
- * 1.06 PGW 17/12/99 Draw dib functionality removed.
- * 1.05 PGW 05/10/99 Remove some Windows dependancies for VFW compressor.
- * 1.04 PGW 20/07/99 Rate targeting corrections for VFW version of codec
- * 1.03 PGW 15/07/99 Added QuickCompress flag.
- * 1.02 PGW 05/07/99 Added GetFOURMVExhaustiveSearch() function
- * 1.01 PGW 29/06/99 Added GetMBMVExhaustiveSearch() function.
- * 1.00 PGW 14/06/99 Configuration baseline
- *
- *****************************************************************************
- */
- #ifndef __INC_COMPDLL_H
- #define __INC_COMPDLL_H
- #define MIN_BPB_FACTOR 0.1
- #define MAX_BPB_FACTOR 10.0
- #define KEY_FRAME_CONTEXT 5
- #include "codec_common.h"
- #include "preprocif.h"
- #include "preproc.h"
- #include "pbdll.h"
- #include "vp50_comp_interface.h"
- /****************************************************************************
- * Module constants.
- *****************************************************************************
- */
- // Debug/stats code
- //#define PSNR_ON
- /****************************************************************************
- * Types
- *****************************************************************************
- */
- typedef struct CONFIG_TYPE2
- {
- UINT32 TargetBandwidth;
- UINT32 OutputFrameRate;
- UINT32 FirstFrameQ;
- UINT32 BaseQ;
- UINT32 MaxQ; // Absolute Max Q allowed.
- UINT32 ActiveWorstQuality; // Reflects worst quality Currently allowed (specified as an index where 0 is worst quality)
- UINT32 ActiveBestQuality; // Reflects best quality currently allowed (specified as an index where 0 is worst quality)
- } CONFIG_TYPE2;
- /* Defines the largest positive integer expressable with a standard int type */
- /****************************************************************************
- * * Type declarations
- ****************************************************************************
- */
- typedef enum
- {
- DCT_COEF_TOKEN,
- MODE_TOKEN,
- BLOCKMAP_TOKEN,
- MV_TOKEN
- } TOKENTYPE;
- typedef struct _TOKENEXTRA
- {
- INT32 Token;
- UINT32 Extra;
- } TOKENEXTRA;
- typedef struct LineEq2
- {
- double M;
- double C;
- } LINE_EQ2;
- typedef struct
- {
- BLOCK_CONTEXTA * AbovePtr;
- BLOCK_CONTEXTA Above;
- BLOCK_CONTEXT * LeftPtr;
- BLOCK_CONTEXT Left;
- Q_LIST_ENTRY * LastDcPtr;
- Q_LIST_ENTRY LastDc;
- } MB_DC_CONTEXT;
- /****************************************************************************
- * MACROS
- *****************************************************************************
- */
- /****************************************************************************
- * Global Variables
- *****************************************************************************
- */
- //****************************************************************
- // Function Pointers now library globals!
- extern UINT32 (*GetSAD16)(UINT8 *, INT32, UINT8 *, INT32, UINT32, UINT32);
- extern UINT32 (*GetSadHalfPixel16)(UINT8 *, INT32, UINT8 *, UINT8 *, INT32, UINT32, UINT32);
- extern void (*fdct_short) ( INT16 * InputData, INT16 * OutputData );
- extern void (*idctc[65])( INT16 *InputData, INT16 *QuantMatrix, INT16 * OutputData );
- extern UINT32 (*GetSAD)(UINT8 *, INT32, UINT8 *, INT32, UINT32, UINT32) ;
- //extern UINT32 (*GetNextSAD)(UINT8 *, INT32, UINT8 *, UINT32, UINT32 );
- extern UINT32 (*GetSadHalfPixel)(UINT8 *, INT32, UINT8 *, UINT8 *, INT32, UINT32, UINT32 );
- extern UINT32 (*GetInterError)( UINT8 *, INT32, UINT8 *, UINT8 *, INT32 );
- extern UINT32 (*GetIntraError)( UINT8 *, INT32);
- extern void (*Sub8)( UINT8 *FiltPtr, UINT8 *ReconPtr, INT16 *DctInputPtr, UINT8 *old_ptr1, UINT8 *new_ptr1, INT32 SourceStride, INT32 ReconStride );
- extern void (*Sub8_128)( UINT8 *FiltPtr, INT16 *DctInputPtr, UINT8 *old_ptr1, UINT8 *new_ptr1, INT32 SourceStride );
- extern void (*Sub8Av2)( UINT8 *FiltPtr, UINT8 *ReconPtr1, UINT8 *ReconPtr2, INT16 *DctInputPtr, UINT8 *old_ptr1, UINT8 *new_ptr1, INT32 SourceStride, INT32 ReconStride );
- //****************************************************************
- #define HUGE_ERROR (1<<28) // Out of range test value
- #define MAX_SEARCH_SITES 33 // Number of search sites for a 4-step search (at pixel accuracy)
- typedef struct CP_INSTANCE * xCP_INST;
- typedef struct CP_INSTANCE
- {
- PB_INSTANCE pb; // playback
- INT32 DropCounter;
- //****************************************************************************************************
- // Compressor Configuration
- CONFIG_TYPE2 Configuration;
- YUV_BUFFER_CONFIG InputConfig;
- YUV_BUFFER_CONFIG YuvInputData;
- INT32 SizeStep;
- INT32 QuickCompress;
- BOOL GoldenFrameEnabled;
- BOOL InterPrediction;
- BOOL MotionCompensation;
- BOOL AutoKeyFrameEnabled ;
- INT32 ForceKeyFrameEvery ;
- INT32 AutoKeyFrameThreshold ;
- UINT32 LastKeyFrame ;
- UINT32 MinimumDistanceToKeyFrame ;
- INT32 KeyFrameDataTargetOrig ; // Data rate target for key frames
- INT32 KeyFrameDataTarget ; // Data rate target for key frames
- UINT32 KeyFrameFrequency ;
- BOOL DropFramesAllowed ;
- BOOL DropFrame;
- INT32 DropCount ;
- UINT32 QualitySetting;
- UINT32 PreProcFilterLevel;
- BOOL AllowSpatialResampling;
- UINT8 RdOpt; // 0 - off, 1 - basic rd on, 2 - all rd options on
- // Compressor Statistics
- double TotErrScore;
- UINT32 InterError;
- UINT32 MVErrorPerBit;
- UINT32 ErrorPerBit;
- UINT32 IntraError;
- INT64 KeyFrameCount ; // Count of key frames.
- INT64 TotKeyFrameBytes ;
- UINT32 LastKeyFrameSize ;
- UINT32 PriorKeyFrameSize[KEY_FRAME_CONTEXT];
- UINT32 PriorKeyFrameDistance[KEY_FRAME_CONTEXT];
- INT32 FrameQuality[6];
- int DecoderErrorCode; // Decoder error flag.
- INT32 ThreshMapThreshold;
- INT32 TotalMotionScore;
- INT64 TotalByteCount;
- INT32 FixedQ;
- // Frame Statistics
- INT64 CurrentFrame;
- UINT32 LastFrameSize;
- UINT32 ThisFrameSize;
- BOOL ThisIsFirstFrame;
- BOOL ThisIsKeyFrame;
- BOOL GfRecoveryFrame;
- INT32 MotionScore;
- UINT32 FirstSixthBoundary; // Macro block index marking the first sixth of the image
- UINT32 LastSixthBoundary; // Macro block index marking the last sixth of the image
- /* Rate Targeting variables PGW 08/05/96). */
- double BpbCorrectionFactor;
- double KeyFrameBpbCorrectionFactor;
- // Controlling Block Selection
- UINT32 MVChangeFactor;
- UINT32 FourMvChangeFactor;
- UINT32 ExhaustiveSearchThresh;
- UINT32 MinImprovementForFourMV;
- UINT32 FourMVThreshold;
- UINT32 IntraThresh;
- UINT32 MinErrorForMacroBlockMVSearch;
- UINT32 MinErrorForBlockMVSearch;
- UINT32 MinErrorForGoldenMVSearch;
- //****************************************************************************************************
- //****************************************************************************************************
- // Frames
- // Used in the selecetive convolution filtering of the Y plane. */
- YUV_BUFFER_ENTRY *yuv1ptr;
- YUV_BUFFER_ENTRY *yuv1ptrAlloc;
- //****************************************************************************************************
- //****************************************************************************************************
- // Token Buffers
- TOKENEXTRA *CoeffTokens;
- TOKENEXTRA *CoeffTokensAlloc;
- TOKENEXTRA *CoeffTokenPtr;
- INT16 LastDC[3];
- BOOL_CODER bc;
- //****************************************************************************************************
- //****************************************************************************************************
- // SuperBlock, MacroBLock and Fragment Information
- // Coded flag arrays and counters for them
- //****************************************************************************************************
- // Live Codec Variables
- UINT8 *DataOutputBuffer;
- //****************************************************************************************************
- //****************************************************************************************
- // STATICS COPIED FROM C FILES (USED IN MULTIPLE FUNCTIONS BUT ARE NOT REALLY INSTANCE GLOBALS )
- // copied from cencode.c
- UINT8 MBCodingMode; // Coding mode flags
- // copied from mcomp.c
- INT32 MVPixelOffsetY[MAX_SEARCH_SITES];
- UINT32 InterTripOutThresh;
- INT32 MVSearchSteps;
- INT32 MVOffsetX[MAX_SEARCH_SITES];
- INT32 MVOffsetY[MAX_SEARCH_SITES];
- INT32 HalfPixelRef2Offset[9]; // Offsets for half pixel compensation
- INT8 HalfPixelXOffset[9]; // Half pixel MV offsets for X
- INT8 HalfPixelYOffset[9]; // Half pixel MV offsets for Y
- Q_LIST_ENTRY *quantized_list;
- Q_LIST_ENTRY *quantized_listAlloc;
- MOTION_VECTOR MVector;
- INT16 *DCT_codes; //Buffer that stores the result of Forward DCT
- INT16 *DCTDataBuffer; //Input data buffer for Forward DCT
- INT16 *DCT_codesAlloc;
- INT16 *DCTDataBufferAlloc;
- // Motion compensation related variables
- UINT32 MvMaxExtent;
- INT32 byte_bit_offset;
- // copied from cbitman.c
- UINT32 NearestError[4];
- UINT32 NearError[4];
- UINT32 ZeroError[4];
- UINT32 BestError[4];
- UINT32 ErrorBins[128];
- //****************************************************************
- // instances (used for reconstructing buffers and to hold tokens etc.)
- xPP_INST pp; // preprocessor
- #if defined PSNR_ON
- double TotPsnr;
- double MinPsnr;
- double MaxPsnr;
- double TotYPsnr;
- double MinYPsnr;
- double MaxYPsnr;
- double TotUPsnr;
- double MinUPsnr;
- double MaxUPsnr;
- double TotVPsnr;
- double MinVPsnr;
- double MaxVPsnr;
- #endif
- // Structures for entropy contexts
- UINT32 FrameDcTokenDist[2][MAX_ENTROPY_TOKENS];
- UINT32 FrameAcTokenDist[PREC_CASES][2][VP5_AC_BANDS][MAX_ENTROPY_TOKENS];
- // Storage for the first frame entropy probabilities.
- // These are re-used for all subsequent key frames when we are operating in
- // error (drop frame) ressiliant mode.
- UINT8 FirstFrameDcProbs[2*(MAX_ENTROPY_TOKENS-1)];
- UINT8 FirstFrameAcProbs[2*PREC_CASES*VP5_AC_BANDS*(MAX_ENTROPY_TOKENS-1)];
- // The Plane Y or UV to which the current block belongs (0 = Y 1 = UV)
- UINT8 EncoderPlane;
- // Last token coded this block.
- UINT8 ThisBlockLastToken;
- UINT8 ZeroCount;
- //UINT32 MBModeCount[MAX_MODES+1];
- UINT32 MBModeCount[4][MAX_MODES+1];
- UINT32 BModeCount[MAX_MODES+1];
- UINT32 CountModeSameAsLast[4][MAX_MODES+1];
- UINT32 CountModeDiffFrLast[4][MAX_MODES+1];
- UINT32 ModeCodeArray[4][MAX_MODES+1][MAX_MODES+1];
- UINT8 ModeLengthArray[4][MAX_MODES+1][MAX_MODES+1];
- // TEMP
- UINT32 ModeBitCount[2];
- INT64 ModeComplexity[2];
- UINT32 ModeBlocks[2];
- UINT32 MBModeCostBoth[11];
- UINT32 MBModeCostNoNear[11];
- UINT32 MBModeCostNoNearest[11];
- UINT32 BModeCost[11];
- UINT32 MvBaselineDist[2][MV_ENTROPY_TOKENS];
- UINT32 FrameMvCount;
- UINT32 EstMVCost[2][MV_ENTROPY_TOKENS];
- UINT32 EstModeCost[2][MAX_MODES];
-
- UINT32 nExperimentals;
- INT32 Experimental[C_SET_EXPERIMENTAL_MAX - C_SET_EXPERIMENTAL_MIN + 1];
- // Bandwidth and buffer control variables
- INT32 PerFrameBandwidth; // Target for average bandwidth per frame.
- INT32 InterFrameTarget; // Average "inter" frame bit target corrected for key frame costs
- INT32 ThisFrameTarget; // Modified rate target for this frame
- BOOL BufferedMode; // FALSE = Tight buffering (Video Conferencing mode); TRUE = normal buffered/streaming mode.
- BOOL ErrorResilliantMode; // A mode used for VC etc. to make the codec more resilliant to dropped frames.
- INT32 StartingBufferLevel; // The initial encoder buffer level
- INT32 CurrentBufferLevel; // Current decoder buffer fullness state
- INT32 OptimalBufferLevel; // The buffer level target we strive to reach / maintain.
- INT32 DropFramesWaterMark; // Buffer fullness watermark for forced drop frames.
- INT32 ResampleDownWaterMark; // Buffer fullness watermark for downwards spacial re-sampling
- INT32 ResampleUpWaterMark; // Buffer fullness watermark where returning to larger image size is consdered
- INT32 LastKeyFrameBufferLevel; // Used to monitor changes in buffer level when considering re-sampling.
- INT32 Speed;
- INT32 CPUUsed;
- UINT32 ModeMvCostEstimate; // Running total of cost estimates for modes and MVs in this frame.
- // Variables used in regulating cost of new motion vectors based upon an estimate of new MV frequency.
- UINT32 FrameNewMvCounter;
- UINT32 FrameModeCounter;
- UINT32 MvEpbCorrection;
- UINT32 LastFrameNewMvUsage; // 0 = Low 9 = High
- UINT32 * MbBestErr;
- UINT32 * MbBestErrAlloc;
- UINT32 EstDcTokenCosts[2][MAX_ENTROPY_TOKENS];
- UINT32 EstAcTokenCosts[PREC_CASES][2][VP5_AC_BANDS][MAX_ENTROPY_TOKENS];
- // Data structures used to save and restor MB and DC contexts during rate distortion
- MACROBLOCK_INFO CopyMbi;
- BLOCK_CONTEXTA AboveCopyY[2];
- BLOCK_CONTEXTA AboveCopyU;
- BLOCK_CONTEXTA AboveCopyV;
- BLOCK_CONTEXT LeftYCopy[2];
- BLOCK_CONTEXT LeftUCopy;
- BLOCK_CONTEXT LeftVCopy;
- Q_LIST_ENTRY LastDcYCopy[3];
- Q_LIST_ENTRY LastDcUCopy[3];
- Q_LIST_ENTRY LastDcVCopy[3];
- // Above and left context for encoding
- UINT8 *aboveDcTokensAlloc[3]; // 0 for y, 1 for u and 2 for v
- UINT8 *aboveDcTokens[3]; // 0 for y, 1 for u and 2 for v
- UINT8 leftTokens[4][64]; // 0 1 for y 2 for u and 3 for v
- MB_DC_CONTEXT MbDcContexts[MAX_MODES][6]; // Per mode, per block position data structure for and MB
- UINT32 avgPickModeTime;
- UINT32 avgEncodeTime;
- UINT32 avgPackVideoTime;
- UINT32 ForceHScale;
- UINT32 ForceHRatio;
- UINT32 ForceVScale;
- UINT32 ForceVRatio;
- BOOL ForceInternalSize;
- PreProcInstance preproc;
- INT32 FrameRateInput;
- INT32 FrameRateDropFrames;
- INT32 FrameRateDropCount;
-
- //
- UINT32 EncoderLoopFilterOff;
- // variables for 5 region diamond MV search
- INT32 DSMVSearchSteps;
- INT32 DSMVPixelOffsetY[MAX_SEARCH_SITES];
- INT32 DSMVOffsetX[MAX_SEARCH_SITES];
- INT32 DSMVOffsetY[MAX_SEARCH_SITES];
- UINT32 (*FindMvViaSearch)( xCP_INST cpi,
- UINT8 *SrcPtr,
- INT32 SourceStride,
- UINT8 *RefPtr,
- INT32 ReconStride,
- MOTION_VECTOR *MV,
- UINT8 **BestBlockPtr,
- UINT32 BlockSize);
- void (*FindBestHalfPixelMv)(xCP_INST cpi,
- UINT8 *SrcPtr,
- INT32 SourceStride,
- UINT8 *RefPtr,
- INT32 ReconStride,
- MOTION_VECTOR *MV,
- UINT8 **BestBlockPtr,
- UINT32 BlockSize,
- UINT32 MinError);
- } CP_INSTANCE;
- UINT32 (*GetMBFrameVertVar)(CP_INSTANCE *cpi);
- UINT32 (*GetMBFieldVertVar)(CP_INSTANCE *cpi);
- /****************************************************************************
- * Functions.
- *****************************************************************************
- */
- extern void UpdateFrame(CP_INSTANCE *cpi);
- extern UINT32 QuadCodeDisplayFragments (CP_INSTANCE *cpi);
- extern UINT32 QuadCodeComponent ( CP_INSTANCE *cpi, UINT32 FirstSB, UINT32 SBRows, UINT32 SBCols, UINT32 HExtra, UINT32 VExtra, INT32 SourceStride );
- extern void AcquireSingleFrame( CP_INSTANCE *cpi, UINT32 CurrFrame );
- extern void AcquireFirstFrame(CP_INSTANCE *cpi);
- extern void AcquireNextFrame( CP_INSTANCE *cpi, UINT32 CurrFrame );
- extern void InitFrameTimer( CP_INSTANCE *cpi);
- extern UINT32 EncodeData(CP_INSTANCE *cpi);
- // Loop optimizations
- extern void InitMapArrays();
- // Codec
- extern UINT32 DPCMTokenizeBlock ( CP_INSTANCE *cpi, INT32 FragIndex, INT32 SourceStride );
- extern void SUB8( UINT8 *FiltPtr, UINT8 *ReconPtr, INT16 *DctInputPtr, UINT8 *old_ptr1, UINT8 *new_ptr1,
- INT32 SourceStride, INT32 ReconStride );
- extern void SUB8_128( UINT8 *FiltPtr, INT16 *DctInputPtr, UINT8 *old_ptr1, UINT8 *new_ptr1,
- INT32 SourceStride );
- extern void SUB8AV2( UINT8 *FiltPtr, UINT8 *ReconPtr1, UINT8 *ReconPtr2, INT16 *DctInputPtr, UINT8 *old_ptr1, UINT8 *new_ptr1,
- INT32 SourceStride, INT32 ReconStride );
- extern void PackEOBRun(CP_INSTANCE *cpi);
- extern void ConvertBmpToYUV( PB_INSTANCE *pbi, UINT8 * BmpDataPtr, UINT8 * YuvBufferPtr );
- extern CP_INSTANCE * CreateCPInstance(void);
- extern void DeleteCPInstance(CP_INSTANCE **cpi);
- extern void CMachineSpecificConfig(void);
- // extern void fdct_slow16 ( INT16 * InputData, INT16 * OutputData );
- extern void fdct_slowf ( INT16 * InputData, INT16 * OutputData );
- extern void fdct_short_C ( INT16 * InputData, INT16 * OutputData );
- extern void fdct_short_C ( INT16 * InputData, INT16 * OutputData );
- extern BOOL EAllocateFragmentInfo(CP_INSTANCE *cpi);
- extern BOOL EAllocateFrameInfo(CP_INSTANCE *cpi);
- extern void EDeleteFragmentInfo(CP_INSTANCE *cpi);
- extern void EDeleteFrameInfo(CP_INSTANCE *cpi);
- extern UINT32 PickIntra( CP_INSTANCE *cpi );
- extern UINT32 PickModes( CP_INSTANCE *cpi, UINT32 *InterError, UINT32 *IntraError);
- extern INT32 GetSpeckSumAbsDiffs( UINT8 * NewDataPtr, UINT8 * RefDataPtr,
- INT32 SourceStride, INT32 ErrorSoFar, INT32 BestSoFar );
- extern INT32 GetNextSpeckSumAbsDiffs( UINT8 * NewDataPtr, UINT8 * RefDataPtr,
- INT32 SourceStride, INT32 ErrorSoFar, INT32 BestSoFar );
- extern INT32 GetHalfPixelSpeckSumAbsDiffs( UINT8 * SrcData, UINT8 * RefDataPtr1, UINT8 * RefDataPtr2,
- INT32 SourceStride, INT32 ErrorSoFar, INT32 BestSoFar );
- extern void ClampAndUpdateQ ( CP_INSTANCE *cpi, UINT32 QIndex) ;
- // cx\generic\encodembs.c
- extern void EncodeFrameMbs(CP_INSTANCE *cpi);
- // cx\generic\vfw_comp_if.c
- extern void CCONV ChangeEncoderSize(CP_INSTANCE* cpi, UINT32 Width, UINT32 Height);
- extern void CopyOrResize(CP_INSTANCE* cpi);
- // cx\generic\tokenize.c
- extern UINT16 TokenizeFrag(CP_INSTANCE* cpi, INT16* RawData, UINT16 BlockSize, UINT32 Plane, BLOCK_CONTEXTA* Above, BLOCK_CONTEXT* Left);
- #endif
|