codec_internal.h
来自「mediastreamer2是开源的网络传输媒体流的库」· C头文件 代码 · 共 845 行 · 第 1/3 页
H
845 行
ogg_uint32_t ResidueLastEndSB; /* Where we were in the residue update loop last time. */ /* Controlling Block Selection */ ogg_uint32_t MVChangeFactor; ogg_uint32_t FourMvChangeFactor; ogg_uint32_t MinImprovementForNewMV; ogg_uint32_t ExhaustiveSearchThresh; ogg_uint32_t MinImprovementForFourMV; ogg_uint32_t FourMVThreshold; /* Module shared data structures. */ ogg_int32_t frame_target_rate; ogg_int32_t BaseLineFrameTargetRate; ogg_int32_t min_blocks_per_frame; ogg_uint32_t tot_bytes_old; /*********************************************************************/ /* Frames Used in the selecetive convolution filtering of the Y plane. */ unsigned char *ConvDestBuffer; YUV_BUFFER_ENTRY *yuv0ptr; YUV_BUFFER_ENTRY *yuv1ptr; /*********************************************************************/ /*********************************************************************/ /* Token Buffers */ ogg_uint32_t *OptimisedTokenListEb; /* Optimised token list extra bits */ unsigned char *OptimisedTokenList; /* Optimised token list. */ unsigned char *OptimisedTokenListHi; /* Optimised token list huffman table index */ unsigned char *OptimisedTokenListPl; /* Plane to which the token belongs Y = 0 or UV = 1 */ ogg_int32_t OptimisedTokenCount; /* Count of Optimized tokens */ ogg_uint32_t RunHuffIndex; /* Huffman table in force at the start of a run */ ogg_uint32_t RunPlaneIndex; /* The plane (Y=0 UV=1) to which the first token in an EOB run belonged. */ ogg_uint32_t TotTokenCount; ogg_int32_t TokensToBeCoded; ogg_int32_t TokensCoded; /********************************************************************/ /* SuperBlock, MacroBLock and Fragment Information */ /* Coded flag arrays and counters for them */ unsigned char *PartiallyCodedFlags; unsigned char *PartiallyCodedMbPatterns; unsigned char *UncodedMbFlags; unsigned char *extra_fragments; /* extra updates not recommended by pre-processor */ ogg_int16_t *OriginalDC; ogg_uint32_t *FragmentLastQ; /* Array used to keep track of quality at which each fragment was last updated. */ unsigned char *FragTokens; ogg_uint32_t *FragTokenCounts; /* Number of tokens per fragment */ ogg_uint32_t *RunHuffIndices; ogg_uint32_t *LastCodedErrorScore; ogg_uint32_t *ModeList; MOTION_VECTOR *MVList; unsigned char *BlockCodedFlags; ogg_uint32_t MvListCount; ogg_uint32_t ModeListCount; unsigned char *DataOutputBuffer; /*********************************************************************/ ogg_uint32_t RunLength; ogg_uint32_t MaxBitTarget; /* Cut off target for rate capping */ double BitRateCapFactor; /* Factor relating delta frame target to cut off target. */ unsigned char MBCodingMode; /* Coding mode flags */ ogg_int32_t MVPixelOffsetY[MAX_SEARCH_SITES]; ogg_uint32_t InterTripOutThresh; unsigned char MVEnabled; ogg_uint32_t MotionVectorSearchCount; ogg_uint32_t FrameMVSearcOunt; ogg_int32_t MVSearchSteps; ogg_int32_t MVOffsetX[MAX_SEARCH_SITES]; ogg_int32_t MVOffsetY[MAX_SEARCH_SITES]; ogg_int32_t HalfPixelRef2Offset[9]; /* Offsets for half pixel compensation */ signed char HalfPixelXOffset[9]; /* Half pixel MV offsets for X */ signed char HalfPixelYOffset[9]; /* Half pixel MV offsets for Y */ ogg_uint32_t bit_pattern ; unsigned char bits_so_far ; ogg_uint32_t lastval ; ogg_uint32_t lastrun ; Q_LIST_ENTRY *quantized_list; MOTION_VECTOR MVector; ogg_uint32_t TempBitCount; ogg_int16_t *DCT_codes; /* Buffer that stores the result of Forward DCT */ ogg_int16_t *DCTDataBuffer; /* Input data buffer for Forward DCT */ /* Motion compensation related variables */ ogg_uint32_t MvMaxExtent; double QTargetModifier[Q_TABLE_SIZE]; /* instances (used for reconstructing buffers and to hold tokens etc.) */ PP_INSTANCE pp; /* preprocessor */ PB_INSTANCE pb; /* playback */ /* ogg bitpacker for use in packet coding, other API state */ oggpack_buffer *oggbuffer;#ifdef LIBOGG2 /* Remember, this is just until we drop libogg1 */ ogg_buffer_state *oggbufferstate;#endif int readyflag; int packetflag; int doneflag; DspFunctions dsp; /* Selected functions for this platform */} CP_INSTANCE;#define clamp255(x) ((unsigned char)((((x)<0)-1) & ((x) | -((x)>255))))extern void ConfigurePP( PP_INSTANCE *ppi, int Level ) ;extern ogg_uint32_t YUVAnalyseFrame( PP_INSTANCE *ppi, ogg_uint32_t * KFIndicator );extern void ClearPPInstance(PP_INSTANCE *ppi);extern void InitPPInstance(PP_INSTANCE *ppi, DspFunctions *funcs);extern int GetFrameType(PB_INSTANCE *pbi);extern void InitPBInstance(PB_INSTANCE *pbi);extern void ClearPBInstance(PB_INSTANCE *pbi);extern void IDctSlow( Q_LIST_ENTRY * InputData, ogg_int16_t *QuantMatrix, ogg_int16_t * OutputData ) ;extern void IDct10( Q_LIST_ENTRY * InputData, ogg_int16_t *QuantMatrix, ogg_int16_t * OutputData );extern void IDct1( Q_LIST_ENTRY * InputData, ogg_int16_t *QuantMatrix, ogg_int16_t * OutputData );extern void ReconIntra( PB_INSTANCE *pbi, unsigned char * ReconPtr, ogg_int16_t * ChangePtr, ogg_uint32_t LineStep );extern void ReconInter( PB_INSTANCE *pbi, unsigned char * ReconPtr, unsigned char * RefPtr, ogg_int16_t * ChangePtr, ogg_uint32_t LineStep ) ;extern void ReconInterHalfPixel2( PB_INSTANCE *pbi, unsigned char * ReconPtr, unsigned char * RefPtr1, unsigned char * RefPtr2, ogg_int16_t * ChangePtr, ogg_uint32_t LineStep ) ;extern void SetupLoopFilter(PB_INSTANCE *pbi);extern void CopyBlock(unsigned char *src, unsigned char *dest, unsigned int srcstride);extern void LoopFilter(PB_INSTANCE *pbi);extern void ReconRefFrames (PB_INSTANCE *pbi);extern void ExpandToken( Q_LIST_ENTRY * ExpandedBlock, unsigned char * CoeffIndex, ogg_uint32_t Token, ogg_int32_t ExtraBits );extern void ClearDownQFragData(PB_INSTANCE *pbi);extern void select_Y_quantiser ( PB_INSTANCE *pbi );extern void select_Inter_quantiser ( PB_INSTANCE *pbi );extern void select_UV_quantiser ( PB_INSTANCE *pbi );extern void select_InterUV_quantiser ( PB_INSTANCE *pbi );extern void quantize( PB_INSTANCE *pbi, ogg_int16_t * DCT_block, Q_LIST_ENTRY * quantized_list);extern void UpdateQ( PB_INSTANCE *pbi, int NewQIndex );extern void UpdateQC( CP_INSTANCE *cpi, ogg_uint32_t NewQ );extern void fdct_short ( ogg_int16_t * InputData, ogg_int16_t * OutputData );extern ogg_uint32_t DPCMTokenizeBlock (CP_INSTANCE *cpi, ogg_int32_t FragIndex);extern void TransformQuantizeBlock (CP_INSTANCE *cpi, ogg_int32_t FragIndex, ogg_uint32_t PixelsPerLine ) ;extern void ClearFragmentInfo(PB_INSTANCE * pbi);extern void InitFragmentInfo(PB_INSTANCE * pbi);extern void ClearFrameInfo(PB_INSTANCE * pbi);extern void InitFrameInfo(PB_INSTANCE * pbi, unsigned int FrameSize);extern void InitializeFragCoordinates(PB_INSTANCE *pbi);extern void InitFrameDetails(PB_INSTANCE *pbi);extern void WriteQTables(PB_INSTANCE *pbi,oggpack_buffer *opb);extern int ReadQTables(codec_setup_info *ci,oggpack_buffer* opb);extern void CopyQTables(PB_INSTANCE *pbi, codec_setup_info *ci);extern void InitQTables( PB_INSTANCE *pbi );extern void InitHuffmanSet( PB_INSTANCE *pbi );extern void ClearHuffmanSet( PB_INSTANCE *pbi );extern int ReadHuffmanTrees(codec_setup_info *ci, oggpack_buffer *opb);extern void WriteHuffmanTrees(HUFF_ENTRY *HuffRoot[NUM_HUFF_TABLES], oggpack_buffer *opb);extern void InitHuffmanTrees(PB_INSTANCE *pbi, const codec_setup_info *ci);extern void ClearHuffmanTrees(HUFF_ENTRY *HuffRoot[NUM_HUFF_TABLES]);extern void WriteFilterTables(PB_INSTANCE *pbi, oggpack_buffer *opb);extern int ReadFilterTables(codec_setup_info *ci, oggpack_buffer *opb);extern void CopyFilterTables(PB_INSTANCE *pbi, codec_setup_info *ci);extern void InitFilterTables(PB_INSTANCE *pbi);extern void QuadDecodeDisplayFragments ( PB_INSTANCE *pbi );extern void PackAndWriteDFArray( CP_INSTANCE *cpi );extern void UpdateFragQIndex(PB_INSTANCE *pbi);extern void PostProcess(PB_INSTANCE *pbi);extern void InitMotionCompensation ( CP_INSTANCE *cpi );extern ogg_uint32_t GetMBIntraError (CP_INSTANCE *cpi, ogg_uint32_t FragIndex, ogg_uint32_t PixelsPerLine ) ;extern ogg_uint32_t GetMBInterError (CP_INSTANCE *cpi, unsigned char * SrcPtr, unsigned char * RefPtr, ogg_uint32_t FragIndex, ogg_int32_t LastXMV, ogg_int32_t LastYMV, ogg_uint32_t PixelsPerLine ) ;extern void WriteFrameHeader( CP_INSTANCE *cpi) ;extern ogg_uint32_t GetMBMVInterError (CP_INSTANCE *cpi, unsigned char * RefFramePtr, ogg_uint32_t FragIndex, ogg_uint32_t PixelsPerLine, ogg_int32_t *MVPixelOffset, MOTION_VECTOR *MV );extern ogg_uint32_t GetMBMVExhaustiveSearch (CP_INSTANCE *cpi, unsigned char * RefFramePtr, ogg_uint32_t FragIndex, ogg_uint32_t PixelsPerLine, MOTION_VECTOR *MV );extern ogg_uint32_t GetFOURMVExhaustiveSearch (CP_INSTANCE *cpi, unsigned char * RefFramePtr, ogg_uint32_t FragIndex, ogg_uint32_t PixelsPerLine, MOTION_VECTOR *MV ) ;extern ogg_uint32_t EncodeData(CP_INSTANCE *cpi);extern ogg_uint32_t PickIntra( CP_INSTANCE *cpi, ogg_uint32_t SBRows, ogg_uint32_t SBCols);extern ogg_uint32_t PickModes(CP_INSTANCE *cpi, ogg_uint32_t SBRows, ogg_uint32_t SBCols, ogg_uint32_t PixelsPerLine, ogg_uint32_t *InterError, ogg_uint32_t *IntraError);extern CODING_MODE FrArrayUnpackMode(PB_INSTANCE *pbi);extern void CreateBlockMapping ( ogg_int32_t (*BlockMap)[4][4], ogg_uint32_t YSuperBlocks, ogg_uint32_t UVSuperBlocks, ogg_uint32_t HFrags, ogg_uint32_t VFrags );extern void UpRegulateDataStream (CP_INSTANCE *cpi, ogg_uint32_t RegulationQ, ogg_int32_t RecoveryBlocks ) ;extern void RegulateQ( CP_INSTANCE *cpi, ogg_int32_t UpdateScore );extern void CopyBackExtraFrags(CP_INSTANCE *cpi);extern void UpdateUMVBorder( PB_INSTANCE *pbi, unsigned char * DestReconPtr );extern void PInitFrameInfo(PP_INSTANCE * ppi);extern int GetFrameType(PB_INSTANCE *pbi);extern void SetFrameType( PB_INSTANCE *pbi,unsigned char FrType );extern double GetEstimatedBpb( CP_INSTANCE *cpi, ogg_uint32_t TargetQ );extern void ClearTmpBuffers(PB_INSTANCE * pbi);extern void InitTmpBuffers(PB_INSTANCE * pbi);extern void ScanYUVInit( PP_INSTANCE * ppi, SCAN_CONFIG_DATA * ScanConfigPtr);extern int LoadAndDecode(PB_INSTANCE *pbi);#endif /* ENCODER_INTERNAL_H */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?