NSPipeline::TFrameQueue Class Reference

Fronta snimku (FIFO). More...

#include <FrameQueue.h>

Collaboration diagram for NSPipeline::TFrameQueue:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 TFrameQueue (void)
 Konstruktor.
 ~TFrameQueue (void)
 Destruktor.
void AddFrame (TFrameReal *frame)
 Prida snimek do fronty.
TFrameRealGetRenderableFrame (void)
 Vrati snimek pripraveny pro zobrazeni.
DWORD GetInputBufferLength (void) const
 Vrati maximalni velikost vnitrniho bufferu.
void SetInputBufferLength (DWORD length)
 Nastavi novou velikost pro vnitrni buffer.
void Free (void)
 Metoda odstrani z fronty vsechny snimky.

Private Member Functions

 TFrameQueue (const TFrameQueue &orig)
 falesny kopirovaci konstruktor
void operator= (const TFrameQueue &orig)
 falesny operator prirazeni

Private Attributes

DWORD m_length
 delka vnitrniho buffer
queue< TFrameReal * > m_buffer
 vnitrni buffer
queue< TFrameReal * > m_frames
 vystupni fronta snimku
TCriticalSection m_critical
 kriticka sekce pro pristup ke snimkum z fronty

Detailed Description

Fronta snimku (FIFO).

Obsahuje dve vnitrni fronty - vyrovnavaci buffer a vystupni frontu.

Vnitrni buffer obsahuje snimky, ktere nelze zobrazit a zajistuje tedy plynulost zobrazovani. Vystupni fronta pak obsahuje snimky, ktere vystoupily z vnitrniho bufferu a mohou byt ziskany pro zobrazenu.

Velikost vnitrniho bufferu lze menit za behu aplikace a tim urcovat zpozdeni.

Pokud je snimek jeste zpracovavan nejakou jednotkou pak by vystupni fronta nemela pustit snimek ven z fronty - to je zajisteno zamkem na snimku od dane jednotky.

Fronta nema vlastni vlakno (neni to nutne), ale jeji metody jsou zabezpecene pro vicenasobny pristup.

Vstupem snimku do fronty je tomuto zvysen pocet referenci. Fronta nikdy nezvysuje pocet zamku na snimku.

Snimek je do fronty automaticky zaslan dispatcherem, kteremu je fronta predana jako parameter.

Dulezita vlastnost je, ze jakmile je snimek ve fronte zarazen pak uz se nemuze zvysovat pocet zamku na nem. Zamek totiz lze na snimek pridat pouze v dispatcheru.

Definition at line 56 of file FrameQueue.h.


Constructor & Destructor Documentation

TFrameQueue::TFrameQueue void   ) 
 

Konstruktor.

Vytvori frontu s vnitrnim bufferem s delkou 0. Snimky tedy lze zobrazit okamzite pote co nemaji zadny zamek.

Definition at line 24 of file FrameQueue.cpp.

References m_length.

TFrameQueue::~TFrameQueue void   ) 
 

Destruktor.

Odstrani vsechny snimky z fronty - tj. na kazdy snimek zavola Release().

Definition at line 34 of file FrameQueue.cpp.

References NSPipeline::TCriticalSection::Enter(), m_critical, and m_frames.

Here is the call graph for this function:

NSPipeline::TFrameQueue::TFrameQueue const TFrameQueue orig  )  [private]
 

falesny kopirovaci konstruktor


Member Function Documentation

void TFrameQueue::AddFrame TFrameReal frame  ) 
 

Prida snimek do fronty.

Zvysi pocet referenci na tento snimek.

Fronta udrzuje pouze referenci na snimek, nikdy neudrzuje zamek.

Note:
Metoda by mela byt volana z dispatcheru.
Parameters:
frame [in] pridavany snimek, fronta zvysi pocet referenci na tento snimek o 1

Definition at line 57 of file FrameQueue.cpp.

References NSPipeline::TFrameReal::AddRefs(), NSPipeline::TCriticalSection::Enter(), m_buffer, m_critical, m_frames, and m_length.

Referenced by NSPipeline::TDispatcher::SetFrame().

Here is the call graph for this function:

void TFrameQueue::Free void   ) 
 

Metoda odstrani z fronty vsechny snimky.

Metoda by mela byt volana na konci aplikace pred odstranenim objektu.

Definition at line 150 of file FrameQueue.cpp.

References NSPipeline::TCriticalSection::Enter(), m_critical, and m_frames.

Referenced by main().

Here is the call graph for this function:

DWORD TFrameQueue::GetInputBufferLength void   )  const
 

Vrati maximalni velikost vnitrniho bufferu.

Definition at line 118 of file FrameQueue.cpp.

References m_length.

TFrameReal * TFrameQueue::GetRenderableFrame void   ) 
 

Vrati snimek pripraveny pro zobrazeni.

Tento snimek je odstranen z fronty.

Muze vratit NULL pokud neni zadny snimek pripraven ke zobrazeni. To se muze stat v pripade ze je fronta prazdna nebo pokud je snimek zamceny.

Warning:
Volajici objekt je zodpovedny za vraceny objekt (referenci)!!!

Definition at line 84 of file FrameQueue.cpp.

References NSPipeline::TCriticalSection::Enter(), m_critical, and m_frames.

Here is the call graph for this function:

void NSPipeline::TFrameQueue::operator= const TFrameQueue orig  )  [private]
 

falesny operator prirazeni

void TFrameQueue::SetInputBufferLength DWORD  length  ) 
 

Nastavi novou velikost pro vnitrni buffer.

Pokud je velikost mensi nez aktualni velikost bufferu pak jsou polozky presunuty do vystupni fronty.

Parameters:
length [in] nova velikost vnitrniho bufferu

Definition at line 129 of file FrameQueue.cpp.

References NSPipeline::TCriticalSection::Enter(), m_buffer, m_critical, and m_frames.

Here is the call graph for this function:


Member Data Documentation

queue<TFrameReal*> NSPipeline::TFrameQueue::m_buffer [private]
 

vnitrni buffer

Definition at line 80 of file FrameQueue.h.

Referenced by AddFrame(), and SetInputBufferLength().

TCriticalSection NSPipeline::TFrameQueue::m_critical [private]
 

kriticka sekce pro pristup ke snimkum z fronty

Definition at line 83 of file FrameQueue.h.

Referenced by AddFrame(), Free(), GetRenderableFrame(), SetInputBufferLength(), and ~TFrameQueue().

queue<TFrameReal*> NSPipeline::TFrameQueue::m_frames [private]
 

vystupni fronta snimku

Definition at line 81 of file FrameQueue.h.

Referenced by AddFrame(), Free(), GetRenderableFrame(), SetInputBufferLength(), and ~TFrameQueue().

DWORD NSPipeline::TFrameQueue::m_length [private]
 

delka vnitrniho buffer

Definition at line 78 of file FrameQueue.h.

Referenced by AddFrame(), GetInputBufferLength(), and TFrameQueue().


The documentation for this class was generated from the following files:
Generated on Sat Nov 17 16:25:32 2007 for Image Processing Pipeline by  doxygen 1.4.6-NO