#include <FrameQueue.h>
Collaboration diagram for NSPipeline::TFrameQueue:
Public Member Functions | |
TFrameQueue (void) | |
Konstruktor. | |
~TFrameQueue (void) | |
Destruktor. | |
void | AddFrame (TFrameReal *frame) |
Prida snimek do fronty. | |
TFrameReal * | GetRenderableFrame (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 |
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.
|
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. |
|
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: ![]() |
|
falesny kopirovaci konstruktor
|
|
Prida snimek do fronty. Zvysi pocet referenci na tento snimek. Fronta udrzuje pouze referenci na snimek, nikdy neudrzuje zamek.
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: ![]() |
|
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: ![]() |
|
Vrati maximalni velikost vnitrniho bufferu.
Definition at line 118 of file FrameQueue.cpp. References m_length. |
|
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.
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: ![]() |
|
falesny operator prirazeni
|
|
Nastavi novou velikost pro vnitrni buffer. Pokud je velikost mensi nez aktualni velikost bufferu pak jsou polozky presunuty do vystupni fronty.
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: ![]() |
|
vnitrni buffer
Definition at line 80 of file FrameQueue.h. Referenced by AddFrame(), and SetInputBufferLength(). |
|
kriticka sekce pro pristup ke snimkum z fronty
Definition at line 83 of file FrameQueue.h. Referenced by AddFrame(), Free(), GetRenderableFrame(), SetInputBufferLength(), and ~TFrameQueue(). |
|
vystupni fronta snimku
Definition at line 81 of file FrameQueue.h. Referenced by AddFrame(), Free(), GetRenderableFrame(), SetInputBufferLength(), and ~TFrameQueue(). |
|
delka vnitrniho buffer
Definition at line 78 of file FrameQueue.h. Referenced by AddFrame(), GetInputBufferLength(), and TFrameQueue(). |