📄 iframe.h
字号:
/***********************************************************************/
/* IFrame.h : Implementation of Memory Manager IFrame
* REALmagic Quasar Hardware Library
* Created by Kevin Vo
* Copyright Sigma Designs Inc
* Sigma Designs Proprietary and confidential
* Created on 4/20/01
* Description:
/************************************************************************/
#ifndef __IFRAME_H
#define __IFRAME_H
class CIFrame
{
public:
CIFrame();
~CIFrame();
// Stop sending data to hardware
void StopDemux ();
// Restart the demux
void RestartDemux();
void Receiver(CIMediaSample *pMedia);
DWORD GetVideoInfo ();
private:
// Fast forward
void Cleanup(); // Clean up the video buffer
// Parse video packet
int GetHeaders ();
DWORD GetBits (int bits);
DWORD ShowBits (int bits);
void FlushBits(int bits);
DWORD GetStartCode ();
BYTE GetNextByte();
void SequenceHeader ();
void SequenceExtension ();
void SequenceDisplayExtension ();
void QuantMatrixExtension ();
void SequenceScalableExtension ();
void PictureDisplayExtension ();
void GOPHeader ();
void PictureHeader ();
void ExtensionUserData ();
void PictureCodingExtension ();
void PictureTemporalScalableExtension ();
void PictureSpatialScalableExtension ();
void CopyrightExtension ();
void PictureData ();
int Slice (int MBAmax);
int Macroblock(int* pMacroblockType, int* pStwType, int* StwClass, int* pMotionType,
int* pDctType, int PMV[2][2][2], int dc_dct_pred[3], int motion_vertical_field_select[2][2], int dmvector[2]);
void SkipMacroblock(int dc_dct_pred[3], int PMV[2][2][2], int* pMotionType, int iMotionVerticalFieldSelect[2][2],
int *pStwType, int* pMacroblockType);
int MacroblockAddrIncrement ();
int MacroblockModes (int*, int*, int*,
int*, int*, int*, int*, int*, int*);
int GetMacroblockType ();
int Get_I_Spatial_macroblock_type();
int Get_P_Spatial_macroblock_type();
int Get_B_Spatial_macroblock_type();
int Get_SNR_macroblock_type();
int Get_I_macroblock_type();
int Get_P_macroblock_type();
int Get_B_macroblock_type();
int Get_D_macroblock_type();
void MotionVectors(int PMV[2][2][2],int dmvector[2], int motion_vertical_field_select[2][2], int s,
int motion_vector_count,int mv_format,int h_r_size,int v_r_size,int dmv, int mvscale);
void MotionVector(int *PMV,int *dmvector, int h_r_size,int v_r_size,int dmv, int mvscale,int full_pel_vector);
int GetDmVector();
void DecodeMotionVector(int *pred, int r_size,int motion_code, int motion_residual, int full_pel_vector);
int GetMotionCode();
int GetCodedBlockPattern();
void Clear_Block(int comp);
void Decode_MPEG1_Intra_Block(int comp,int dc_dct_pred[]);
void Decode_MPEG1_Non_Intra_Block(int comp);
void DecodeMPEG2IntraBlock(int comp,int dc_dct_pred[]);
void Decode_MPEG2_Non_Intra_Block(int comp);
int Get_Luma_DC_dct_diff();
int Get_Chroma_DC_dct_diff();
private:
BOOL m_bStopVideoDemux;
CIMediaSampleList *m_pVideoSampleList;
CRITICAL_SECTION m_crVideoList;
HANDLE m_hVideoThread;
BOOL m_bStartVideoThread;
CIMediaSample* m_pVSample;
PBYTE m_pVBuffer;
DWORD m_dwVLength;
DWORD m_dwVIndex;
BOOL m_bStartIFrame;
BOOL m_bEndIFrame;
int m_iStartIFrameIndex;
int m_iEndIFrameIndex;
int MPEG2_Flag;
BOOL m_bSequenceHeader;
BOOL m_bSequenceEnd;
BOOL m_bLookForPictureHeader;
BOOL m_bSequenceHeaderDisplay;
BOOL m_bFirstBuffer;
DWORD m_dw32Bits;
int m_iBitIndex;
int m_iFrameNumber;
int mb_width;
int mb_height;
int block_count;
short block[12][64];
// Non-normative variables derived from normative elements
int profile, level;
// Sequence header
int m_iHorizontalSize;
int m_iVerticalSize;
int m_iAspectRatio;
int m_iFrameRateCode;
DWORD m_dwFrameRate;
DWORD m_dwBitRateVal;
// Sequence Extension
int m_iProgressiveSequence;
int m_iChromaFormat;
// Sequence Display Extension
int m_iMatrixCoefficients;
// Picture Header
int m_iTemporalRef;
int m_iPictureCodeType;
int m_iForwardFCode;
int m_iBackwardFCode;
int m_iFullPelForwardVector;
int m_iFullPelBackwardVector;
// Picture Coding Extension
int f_code[2][2];
int m_iIntraDcPrecision;
int m_iPictureStructure;
int m_iTopFieldFirst;
int m_iFramePredFrameDct;
int m_iConcealmentMotionVectors;
int m_iQScaleType;
int m_iIntraVlcFormat;
int m_iAlternateScan;
int m_iRepeatFirstField;
int m_iProgressiveFrame;
// Picture Display Extension
int m_iFrameCenterHorizontalOffset[3];
int m_iFrameCenterVerticalOffset[3];
// Picture Spatial Scalable Extension
int m_iPictScal ;
int m_iSpatialTemporalWeightCodeTableIndex;
int m_iLowerLayerHorizontalOffset;
int m_iLowerLayerVerticalOffset;
// SequenceScalableExtension
int m_iScalableMode;
// Quant Matrix Extention
int m_iIntraQuantiserMatrix[64];
int m_iNonIntraQuantiserMatrix[64];
int m_iChromaIntraQuantiserMatrix[64];
int m_iChromaNonIntraQuantiserMatrix[64];
// Slice
int m_iQuantiserScale;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -