150 likes | 331 Views
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
E N D
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
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
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
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 InformationYohan Launay • Mail : yohan.launay@gmail.com • McGill : yohan.launay@mail.mcgill.ca • MSDL: http://msdl.cs.mcgill.ca/people/yohan • Past Work: http://hellaynnea.free.fr Thank You For Your Attention!