Multi-Threaded Video Rendering COMP400 Project – 2006 Yohan Launay
Agenda Basic System Description + Demo Quick Multi-threaded Programming Guide Video Channel Description Graphical Engine Description Results
Basic System Description Client system connected to a video server MPEG4 Streaming Multivision System (1 screen – X cameras) Client: OpenGL graphical engine + GTK GUI Existing system audited, re-designed & optimized: Optimization for multi-core systems 100% Thread safe design MT Programming Guide Performances Gain Live Demo !
MT Programming Guide (1) Modular System Mandatory 1 thread = 1 module (Core) Set of rules for safe MT programming (see report) 1 mutex per core handled by the core itself not externally Consequence: Extensive use of Controller & Façade Pattern
Graphical Engine Architecture Overview
MT Programming Guide (2) Mutex Class: Lock/Unlock (Existing) Guarantee exclusive access to resources Synchronize Class (Optimization) Lock/Unlock – ExclusiveLock/ExclusiveUnlock Read/Write Access AutoMutex Class (Ease of coding) Uses variable scope to lock/unlock Mutex
Video Channel Description Connect to the video stream Fetch picture Ask for display: Use of flags and IDs – Avoid memory copy Try to save space (pictures are big > 1MB)
Graphical Engine Description (1) OpenGL + GTK : need specific design Widget System Widget (Abstract) WidgetContainer WidgetTexture Chain of command: horizontal & vertical hierarchy OpenGL: 1 Thread = 1 Rendering Context: Use of message pump / Command pattern
Widgets Architecture
Graphical Engine Description (2) Texture Register: Avoid textures duplication in Graphical Card Manage texture loading and release Manage texture update Extensive use of display lists Use of glTexSubImage: partial update On-demand display of channels
Video Rendering Process
Results
Optimized for dual-core systems Unlimited number of cameras on the screen, performances limited by the hardware. 400 FPS multivisions ! (hardware related) Future Plans: OpenGL Game Mode (no more window + GTK)
Contact Information Yohan Launay Mail : McGill : MSDL: Past Work: Thank You For Your Attention!