Initial community commit
This commit is contained in:
136
Src/libvpShared/corelibs/cdxv/vppp/include/postp.h
Normal file
136
Src/libvpShared/corelibs/cdxv/vppp/include/postp.h
Normal file
@@ -0,0 +1,136 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Module Title : postp.h
|
||||
*
|
||||
* Description : Post processor interface
|
||||
*
|
||||
****************************************************************************/
|
||||
#ifndef POSTP_H
|
||||
#define POSTP_H
|
||||
|
||||
#include "codec_common.h"
|
||||
|
||||
// YUV buffer configuration structure
|
||||
typedef struct
|
||||
{
|
||||
int YWidth;
|
||||
int YHeight;
|
||||
int YStride;
|
||||
|
||||
int UVWidth;
|
||||
int UVHeight;
|
||||
int UVStride;
|
||||
|
||||
char * YBuffer;
|
||||
char * UBuffer;
|
||||
char * VBuffer;
|
||||
|
||||
} YUV_BUFFER_CONFIG;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
MAINTAIN_ASPECT_RATIO = 0x0,
|
||||
SCALE_TO_FIT = 0x1,
|
||||
CENTER = 0x2,
|
||||
OTHER = 0x3
|
||||
} SCALE_MODE;
|
||||
|
||||
// macro defined so that I can get the information from fraginfo ( I suspect this is going to change !)
|
||||
// and I wanted to be ready for the change!
|
||||
#define blockCoded(i) (ppi->FragInfo[(i)*ppi->FragInfoElementSize]&ppi->FragInfoCodedMask)
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
||||
// per frame information passed in
|
||||
INT32 Vp3VersionNo; // version of frame
|
||||
INT32 FrameType; // key or non key
|
||||
INT32 PostProcessingLevel; // level of post processing to perform
|
||||
INT32 FrameQIndex; // q index value used on passed in frame
|
||||
UINT8 *LastFrameRecon; // reconstruction buffer : passed in
|
||||
UINT8 *PostProcessBuffer; // postprocessing buffer : passed in
|
||||
|
||||
// per block information passed in
|
||||
UINT8 *FragInfo; // blocks coded : passed in
|
||||
UINT32 FragInfoElementSize; // size of each element
|
||||
UINT32 FragInfoCodedMask; // mask to get at whether fragment is coded
|
||||
|
||||
// per block info maintained by postprocessor
|
||||
INT32 *FragQIndex; // block's q index : allocated and filled
|
||||
INT32 *FragmentVariances; // block's pseudo variance : allocated and filled
|
||||
UINT8 *FragDeblockingFlag; // whether to deblock block : allocated and filled
|
||||
|
||||
// filter specific vars
|
||||
INT32 *BoundingValuePtr; // pointer to a filter
|
||||
INT32 *FiltBoundingValue; // allocated (512 big)
|
||||
|
||||
// deblocker specific vars
|
||||
INT32 *DeblockValuePtr; // pointer to a filter
|
||||
INT32 *DeblockBoundingValue; // allocated (512 big)
|
||||
|
||||
|
||||
// frame configuration
|
||||
CONFIG_TYPE Configuration;
|
||||
UINT32 ReconYDataOffset; // position within buffer of first y fragment
|
||||
UINT32 ReconUDataOffset; // position within buffer of first u fragment
|
||||
UINT32 ReconVDataOffset; // position within buffer of first v fragment
|
||||
UINT32 YPlaneFragments; // number of y fragments
|
||||
UINT32 UVPlaneFragments; // number of u and v fragments
|
||||
UINT32 UnitFragments; // number of total fragments y+u+v
|
||||
UINT32 HFragments; // number of horizontal fragments in y
|
||||
UINT32 VFragments; // number of vertical fragments in y
|
||||
INT32 YStride; // pitch of y in bytes
|
||||
INT32 UVStride; // pitch of uv in bytes
|
||||
|
||||
// allocs so we can align our ptrs
|
||||
INT32 *FiltBoundingValueAlloc;
|
||||
INT32 *DeblockBoundingValueAlloc;
|
||||
INT32 *FragQIndexAlloc;
|
||||
INT32 *FragmentVariancesAlloc;
|
||||
UINT8 *FragDeblockingFlagAlloc;
|
||||
UINT32 MVBorder;
|
||||
UINT8 *IntermediateBufferAlloc;
|
||||
UINT8 *IntermediateBuffer;
|
||||
UINT32 DeInterlaceMode;
|
||||
UINT32 AddNoiseMode;
|
||||
|
||||
} POSTPROC_INSTANCE;
|
||||
|
||||
#define VAL_RANGE 256
|
||||
extern UINT8 LimitVal_VP31[VAL_RANGE * 3];
|
||||
typedef POSTPROC_INSTANCE * xPB_INST ;
|
||||
|
||||
extern void (*FilteringVert_12)(UINT32 QValue,UINT8 * Src, INT32 Pitch);
|
||||
extern void (*FilteringHoriz_12)(UINT32 QValue,UINT8 * Src, INT32 Pitch);
|
||||
extern void (*FilteringVert_8)(UINT32 QValue,UINT8 * Src, INT32 Pitch);
|
||||
extern void (*FilteringHoriz_8)(UINT32 QValue,UINT8 * Src, INT32 Pitch);
|
||||
|
||||
extern void (*CopyBlock) (unsigned char *src, unsigned char *dest, unsigned int srcstride);
|
||||
extern void (*VerticalBand_4_5_Scale)(unsigned char * dest,unsigned int destPitch,unsigned int destWidth);
|
||||
extern void (*LastVerticalBand_4_5_Scale)(unsigned char * dest,unsigned int destPitch,unsigned int destWidth);
|
||||
extern void (*VerticalBand_3_5_Scale)(unsigned char * dest,unsigned int destPitch,unsigned int destWidth);
|
||||
extern void (*LastVerticalBand_3_5_Scale)(unsigned char * dest,unsigned int destPitch,unsigned int destWidth);
|
||||
extern void (*HorizontalLine_1_2_Scale)(const unsigned char * source,unsigned int sourceWidth,unsigned char * dest,unsigned int destWidth);
|
||||
extern void (*HorizontalLine_3_5_Scale)(const unsigned char * source,unsigned int sourceWidth,unsigned char * dest,unsigned int destWidth);
|
||||
extern void (*HorizontalLine_4_5_Scale)(const unsigned char * source,unsigned int sourceWidth,unsigned char * dest,unsigned int destWidth);
|
||||
extern void (*VerticalBand_1_2_Scale)(unsigned char * dest,unsigned int destPitch,unsigned int destWidth);
|
||||
extern void (*LastVerticalBand_1_2_Scale)(unsigned char * dest,unsigned int destPitch,unsigned int destWidth);
|
||||
extern void (*FilterHoriz_Simple)(xPB_INST pbi, UINT8 * PixelPtr, INT32 LineLength, INT32*);
|
||||
extern void (*FilterVert_Simple)(xPB_INST pbi, UINT8 * PixelPtr, INT32 LineLength, INT32*);
|
||||
extern void (*DeringBlockWeak)(xPB_INST, const UINT8 *, UINT8 *, INT32, UINT32, UINT32 *);
|
||||
extern void (*DeringBlockStrong)(xPB_INST, const UINT8 *, UINT8 *, INT32, UINT32, UINT32 *);
|
||||
extern void (*DeblockLoopFilteredBand)(xPB_INST, UINT8 *, UINT8 *, UINT32, UINT32, UINT32, UINT32 *);
|
||||
extern void (*DeblockNonFilteredBand)(xPB_INST, UINT8 *, UINT8 *, UINT32, UINT32, UINT32, UINT32 *);
|
||||
extern void (*DeblockNonFilteredBandNewFilter)(xPB_INST, UINT8 *, UINT8 *, UINT32, UINT32, UINT32, UINT32 *);
|
||||
extern INT32*(*SetupBoundingValueArray)(xPB_INST pbi, INT32 FLimit);
|
||||
extern INT32*(*SetupDeblockValueArray)(xPB_INST pbi, INT32 FLimit);
|
||||
extern void (*FilterHoriz)(xPB_INST pbi, UINT8 * PixelPtr, INT32 LineLength, INT32*);
|
||||
extern void (*FilterVert)(xPB_INST pbi, UINT8 * PixelPtr, INT32 LineLength, INT32*);
|
||||
extern void (*ClampLevels)( POSTPROC_INSTANCE *pbi,INT32 BlackClamp, INT32 WhiteClamp, UINT8 *Src, UINT8 *Dst);
|
||||
extern void (*FastDeInterlace)(UINT8 *SrcPtr, UINT8 *DstPtr, INT32 Width, INT32 Height, INT32 Stride);
|
||||
extern void (*PlaneAddNoise)( UINT8 *Start, UINT32 Width, UINT32 Height, INT32 Pitch, int q);
|
||||
|
||||
extern void DMachineSpecificConfig(INT32 MmxEnabled, INT32 XmmEnabled, INT32 WmtEnabled);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user