// AbstractAnalyzer.h: interface for the AbstractAnalyzer class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_ABSTRACTANALYZER_H__5D3D8EA2_107C_4109_A371_FEE30ACD4B12__INCLUDED_)
#define AFX_ABSTRACTANALYZER_H__5D3D8EA2_107C_4109_A371_FEE30ACD4B12__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

const int NTEMP = 3;

class OptionPages;

class AbstractAnalyzer : public VideoHandler  
{
public:
	AbstractAnalyzer();
	virtual ~AbstractAnalyzer();

   void SetOptionPages(OptionPages *ops);

   virtual void OnStart(VIDEOINFOHEADER *pvih);

protected:

   int CreateVwnds(int n);
   virtual void Cleanup();

   LONGLONG duration;   // length of video sequence
   int nBytes;          // nPixels * 3 (i.e. # bytes in an 8 x 3 image)      
   int nPixels;         // vw * vh (i.e. # pixels in an image)
   int vw, vh;          // video width, height
   CVideoWnd **vwnds;
   int nVwnds;

   OptionPages *ops;

                              // [bits per channel] x [# channels]
                              // all images must have dimensions [vw] x [vh]
   IplImage *pFrame;          // 8 x 3    current frame
   IplImage *pTempf1[NTEMP];  // 32 x 1    temp images
};

#endif // !defined(AFX_ABSTRACTANALYZER_H__5D3D8EA2_107C_4109_A371_FEE30ACD4B12__INCLUDED_)
