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 + -
显示快捷键?