123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- /*------------------------------------------------------------------------------
- -- --
- -- This software is confidential and proprietary and may be used --
- -- only as expressly authorized by a licensing agreement from --
- -- --
- -- Hantro Products Oy. --
- -- --
- -- (C) COPYRIGHT 2006 HANTRO PRODUCTS OY --
- -- ALL RIGHTS RESERVED --
- -- --
- -- The entire notice above must be reproduced --
- -- on all copies and should not be removed. --
- -- --
- --------------------------------------------------------------------------------
- --
- -- Description : Hardware interface read/write
- --
- ------------------------------------------------------------------------------
- --
- -- Version control information, please leave untouched.
- --
- -- $RCSfile: refbuffer.h,v $
- -- $Revision: 1.19 $
- -- $Date: 2010/06/23 12:38:11 $
- --
- ------------------------------------------------------------------------------*/
- #ifndef __REFBUFFER_H__
- #define __REFBUFFER_H__
- #include "basetype.h"
- typedef enum {
- REFBU_FRAME,
- REFBU_FIELD,
- REFBU_MBAFF
- } refbuMode_e;
- /* Feature support flags */
- #define REFBU_SUPPORT_GENERIC (1)
- #define REFBU_SUPPORT_INTERLACED (2)
- #define REFBU_SUPPORT_DOUBLE (4)
- #define REFBU_SUPPORT_OFFSET (8)
- /* Buffering info */
- #define REFBU_BUFFER_SINGLE_FIELD (1)
- #define REFBU_MULTIPLE_REF_FRAMES (2)
- #define REFBU_DISABLE_CHECKPOINT (4)
- #define REFBU_FORCE_ADAPTIVE_SINGLE (8)
- #ifndef HANTRO_TRUE
- #define HANTRO_TRUE (1)
- #endif /* HANTRO_TRUE */
- #ifndef HANTRO_FALSE
- #define HANTRO_FALSE (0)
- #endif /* HANTRO_FALSE*/
- /* macro to get smaller of two values */
- #define MIN(a, b) (((a) < (b)) ? (a) : (b))
- /* macro to get greater of two values */
- #define MAX(a, b) (((a) > (b)) ? (a) : (b))
- typedef struct memAccess {
- u32 latency;
- u32 nonseq;
- u32 seq;
- } memAccess_t;
- struct refBuffer;
- typedef struct refBuffer {
- #if 0
- i32 ox[3];
- #endif
- i32 decModeMbWeights[2];
- i32 mbWeight;
- i32 oy[3];
- i32 picWidthInMbs;
- i32 picHeightInMbs;
- i32 frmSizeInMbs;
- i32 fldSizeInMbs;
- i32 numIntraBlk[3];
- i32 coverage[3];
- i32 fldHitsP[3][2];
- i32 fldHitsB[3][2];
- i32 fldCnt;
- i32 mvsPerMb;
- i32 filterSize;
- /* Thresholds */
- i32 predIntraBlk;
- i32 predCoverage;
- i32 checkpoint;
- u32 decMode;
- u32 dataExcessMaxPct;
- i32 busWidthInBits;
- i32 prevLatency;
- i32 numCyclesForBuffering;
- i32 totalDataForBuffering;
- i32 bufferPenalty;
- i32 avgCyclesPerMb;
- u32 prevWasField;
- u32 prevUsedDouble;
- i32 thrAdj;
- u32 prevFrameHitSum;
- memAccess_t currMemModel; /* Clocks per operation, modifiable from
- * testbench. */
- memAccess_t memAccessStats; /* Approximate counts for operations, set
- * based on format */
- u32 memAccessStatsFlag;
- /* Support flags */
- u32 interlacedSupport;
- u32 doubleSupport;
- u32 offsetSupport;
- /* Internal test mode */
- void (*testFunction)(struct refBuffer*,u32*regBase,u32 isIntra,u32 mode);
- } refBuffer_t;
- void RefbuInit( refBuffer_t *pRefbu, u32 decMode, u32 picWidthInMbs, u32
- picHeightInMbs, u32 supportFlags );
- void RefbuMvStatistics( refBuffer_t *pRefbu, u32 *regBase,
- u32 *pMv, u32 directMvsAvailable,
- u32 isIntraPicture );
- void RefbuMvStatisticsB( refBuffer_t *pRefbu, u32 *regBase );
- void RefbuSetup( refBuffer_t *pRefbu, u32 *regBase,
- refbuMode_e mode,
- u32 isIntraFrame, u32 isBframe,
- u32 refPicId0, u32 refpicId1,
- u32 flags );
- i32 RefbuGetHitThreshold( refBuffer_t *pRefbu );
- u32 RefbuVpxGetPrevFrameStats( refBuffer_t *pRefbu );
- #endif /* __REFBUFFER_H__ */
|