Dispatcher.h

Go to the documentation of this file.
00001 /*
00002 *       This file contains class that represents dispatcher between input (camera), frame queue
00003 *       and working units.
00004 *
00005 *       Author:
00006 *                       Tomas Mrkvicka
00007 *                       xmrkvi03@stud.fit.vutbr.cz
00008 *
00009 */
00010 
00011 namespace NSPipeline
00012 {
00013         class TDispatcher;
00014 };
00015 
00016 #ifndef _PIPELINE_DISPATCHER_HH_
00017 #define _PIPELINE_DISPATCHER_HH_
00018 
00019 #include "pipeline/Image.h"
00020 #include "pipeline/FrameQueue.h"
00021 
00022 namespace NSPipeline
00023 {
00024 
00025 ////////////////////////////////////////////////////////////////////////////////
00026 ////////////////////////////////////////////////////////////////////////////////
00027 ////////////////////////////////////////////////////////////////////////////////
00028 // TDispatcher
00029 
00030 /** Tato trida obsahuje naposledy ziskany snimek z kamery.
00031 *
00032 *       Tento snimek musi byt zarazen do fronty snimku (TFrameQueue) a musi byt v TDispatcher k dispozici
00033 *       az do prichodu do noveho snimku. Vypocetni jednotky si mohou tento snimek z TDispatcher vyzadat.
00034 *
00035 *       Snimek ulozeny v TDispatcher ma minimalne jeden zamek!!! a tedy NESMI opustit frontu TFrameQueue!!!
00036 *       Teprve po prichodu noveho snimku je ze stareho snimku uvolnen zamek.
00037 *
00038 *       Dispatcher zaroven obsahuje informace o velikosti poskytovanych snimku.
00039 *       Tato informace je uzitecna pri inicializaci vypocetnich jednotek, ktere takovou
00040 *       informaci mohou vyuzit, protoze se predpoklada, ze za behu aplikace se tato velikost nebude menit.
00041 *       Rozmery snimku musi byt do dispatcheru ulozeny pred vytvorenim prvni vypocetni jednotky, nejlepe
00042 *       ihned jak je to mozne (po vytvoreni kamery).
00043 *
00044 *       \note   Pomoci parametru konstruktoru lze nastavit chovani dispatcheru tak, aby
00045 *                       nepreposilal snimky dale do aplikace. Tim je mozne pouzit cely vypocetni retezec
00046 *                       bez nutnosti zobrazovani snimku.
00047 */
00048 class TDispatcher : public TDispatcherInterface
00049 {
00050 //PUBLIC OVERRIDEN METHODS
00051 public:
00052         virtual DWORD           GetWidth(void);         
00053         virtual DWORD           GetHeight(void);
00054 
00055         virtual TFrame *        GetFrame(void);
00056         virtual TFrame *        GetLockedFrame(void);
00057 
00058         virtual                         ~TDispatcher(void);
00059 //PUBLIC METHODS
00060 public:
00061                                                 TDispatcher( TFrameQueue * queue );                                             
00062 
00063         void                            SetFramesInfo( DWORD width, DWORD height );
00064 
00065         void                            SetFrame( TFrameReal * frame );
00066 
00067         void                            Free(void);
00068 
00069 //PRIVATE FAKE METHODS
00070 private:
00071                                                 TDispatcher( const TDispatcher & orig );        ///< falesny kopirovaci konstruktor
00072         void                            operator=( const TDispatcher & orig );          ///< falesny operator prirazeni
00073 
00074 //PRIVATE COMPONENTS
00075 private:
00076         DWORD                           m_width;                ///< sirka poskytovanych snimku
00077         DWORD                           m_height;               ///< vyska poskytovanych snimku
00078 
00079         TCriticalSection        m_critical;             ///< kriticka sekce pro synchronizaci pristupu ke snimku
00080                                                                                 ///< ulozenem v dispatcheru
00081 
00082         TFrameReal*                     m_frame;                ///< posledni snimek ulozeny v TDispatcher
00083 
00084         TFrameQueue*            m_queue;                ///< ukazatel na frontu celeho retezce - je predana v konstruktoru
00085                                                                                 ///< pokud je misto fronty predan NULL pak dispatcher nikam snimky neposila
00086 
00087 };
00088 //OK 2007-08-25 14:20:30 B04-315B\Tom
00089 
00090 // TDispatcher
00091 ////////////////////////////////////////////////////////////////////////////////
00092 ////////////////////////////////////////////////////////////////////////////////
00093 ////////////////////////////////////////////////////////////////////////////////
00094 
00095 }; //end of NSPipeline
00096 using namespace NSPipeline;
00097 
00098 #endif

Generated on Sat Nov 17 16:23:26 2007 for Image Processing Pipeline by  doxygen 1.4.6-NO