www.pudn.com > mediator15src.zip > VideoSequenceCompressor.h


/* 
 * VideoSequenceCompressor.h 
 * Copyright (C) 2002 Arno Hornberger  
 * Original Version Copyright (C) 1998-2001 Avery Lee 
 * 
 * This file is part of MPEG Mediator, a free MPEG stream converter. 
 * 
 * MPEG Mediator is free software; you can redistribute it and/or modify 
 * it under the terms of the GNU General Public License as published by 
 * the Free Software Foundation; either version 2 of the License, or 
 * (at your option) any later version. 
 * 
 * MPEG Mediator is distributed in the hope that it will be useful, 
 * but WITHOUT ANY WARRANTY; without even the implied warranty of 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 * GNU General Public License for more details. 
 * 
 * You should have received a copy of the GNU General Public License 
 * along with this program; if not, write to the Free Software 
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
 */ 
 
#ifndef VIDEOSEQUENCECOMPRESSOR_H 
#define VIDEOSEQUENCECOMPRESSOR_H 
 
#include  
#include  
#include  
#include  
#include  
#include "error.h" 
 
class VideoSequenceCompressor 
{ 
	public: 
		VideoSequenceCompressor(HIC hic, LPBITMAPINFOHEADER lpbih, int rate, int scale, 
														long lQuality, long lKeyRate, long lDataRate); 
		~VideoSequenceCompressor(); 
 
//		void dropFrame(); 
		void *packFrame(void *pBits, bool *pfKeyframe, long *plSize); 
		BITMAPINFOHEADER *GetOutputFormat(); 
		int GetOutputFormatSize(); 
 
//		bool isSequenceIntelligent() { return !!(dwFlags & VIDCF_COMPRESSFRAMES); } 
//		long getMaxSize() { return lMaxPackedSize; } 
 
	private: 
		bool DeInitVideoCompressor(); 
 
		void init(HIC hic, BITMAPINFO *pbiInput, BITMAPINFO *pbiOutput, long lQ, long lKeyRate); 
		void setDataRate(long lDataRate, long lUsPerFrame, long lFrameCount); 
		void start(); 
 
		HIC	  hic; 
		DWORD	dwFlags; 
		BITMAPINFO	*pbiInput, *pbiOutput; 
		char	*pOutputBuffer, *pPrevBuffer; 
		long	lFrameNum, lKeyRate, lQuality; 
		long	lKeyRateCounter; 
		long	lMaxFrameSize; 
		long	lMaxPackedSize; 
		bool	fCompressionStarted; 
		long	lSlopSpace; 
 
		void	*pConfigData; 
		int		cbConfigData; 
}; 
 
#endif