00001 #ifndef WEBCAMCODEC_SUBBAND_HPP 00002 #define WEBCAMCODEC_SUBBAND_HPP 00003 00004 #ifdef HAVE_CONFIG_H 00005 #include "config.h" 00006 #endif 00007 00008 #include <qtimer.h> 00009 00010 #include "VideoDevice.h" 00011 00012 #include "CamWindow.h" 00013 #include "CodecImage.h" 00014 #include "CodecImageSubband.h" 00015 #include "CodecImageViewer.h" 00016 #include "BasicPanel.h" 00017 #include "ImagePanelRGB.h" 00018 #include "ImagePanelYUV.h" 00019 00020 class CWebCamCodecSubband: public CCamWindow 00021 { 00022 Q_OBJECT 00023 private: 00024 CVideoDevice *m_pVideo; 00025 00026 YUVTriplet<CCodecImage> m_SourceFrame[2]; // original images from webcam 00027 int m_PreviousFrame, m_CurrentFrame, m_MaxFrames; 00028 CCamPanel *m_pSourceViewer; 00029 00030 YUVTriplet<CCodecImage> m_Diff; 00031 CCodecImageViewer *m_pDiffViewer; 00032 00033 YUVTriplet<CCodecImageSubband> m_CodecSubband; 00034 CCodecImageViewer *m_pSubbandViewer; 00035 00036 YUVTriplet<CCodecImageSubband> m_InverseSubband; 00037 CCodecImageViewer *m_pInverseViewer; 00038 00039 YUVTriplet <CCodecImage> m_Reconstructed; 00040 CCodecImageViewer *m_pReconstructedViewer; 00041 00042 QTimer *m_pSizeTimer; 00043 int m_Rows, m_Cols; 00044 int m_CellWidth, m_CellHeight; 00045 00046 void PutAtGrid(int row, int column, QWidget *w); 00047 00048 protected: 00049 void RecalcTotalViewSize(); 00050 00051 protected slots: 00052 void DeviceChangedSize(const QSize &size); 00053 void DeviceError(int err_no); 00054 00055 void CallAdjustSize(); 00056 void VideoFrameReady(); 00057 00058 public: 00059 CWebCamCodecSubband(CVideoDevice *video, QWidget *parent = 0, const char *name = 0); 00060 virtual ~CWebCamCodecSubband(); 00061 }; 00062 00063 00064 #endif