⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iframe.h

📁 神龙卡 SDK_84xx_DShow_145_02.zip 这个是 windows 上二个是linux
💻 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 + -