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

📄 caviparser.h

📁 最近在学习directshow, Directshow实务精选的源代码
💻 H
字号:
//
// CAviParser.h
//

#ifndef __H_CAviParser__
#define __H_CAviParser__

#include <afxtempl.h>
#include <dshow.h>
#include <Aviriff.h>

class CAviParser
{
private:
	char	mFileName[MAX_PATH];
	FILE *  m_pFile;
	UINT64  m_pos, m_len;

public:
	AVIMAINHEADER  m_avih;

	struct strm_t
	{
		AVISTREAMHEADER    strh;
		BYTE *			   strf;
		CString            strn;
		AVISUPERINDEX *    indx;
	} m_strm;

	struct ODMLExtendedAVIHeader 
	{
		DWORD dwTotalFrames;
	} m_dmlh;

	AVIOLDINDEX * m_idx1;
	UINT64		  m_idx1Pos;		

public:
	CAviParser();
	~CAviParser();

	BOOL SetAviFile(const char * inFile);
	BOOL Parse(void);

private:
	UINT64 GetPos(void) { return m_pos; }
	UINT64 GetLength(void) { return m_len; }
	void Seek(UINT64 pos) { m_pos = pos; }
	void Release(void);
	HRESULT Parse(DWORD parentid, UINT64 end);

	HRESULT Read(void* pData, LONG len);
	template<typename T> HRESULT TRead(T& var, int offset = 0)
	{
#ifdef _DEBUG
		int size = sizeof(var);
#endif
		memset(&var, 0, sizeof(var));
		HRESULT hr = Read((BYTE*)&var + offset, sizeof(var) - offset);
		return hr;
	}	
};

#endif // __H_CAviParser__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -