Difference between revisions of "SoC 2011/OpenGL Interface for VLC"

From VideoLAN Wiki
Jump to navigation Jump to search
Line 64: Line 64:
  
 
== Planning and Design ==
 
== Planning and Design ==
 +
 +
The interface has 3 main parts - user input, GUI (widgets in OpenGL), functionality (interaction with VLC).
 +
User -> user input -> GUI <-> VLC
 +
User <- GUI <-> VLC
 +
 +
===Classes===
 +
Main:
 +
* GLIntf (module code, create main things)
 +
* GLIntfWidget (a specialized QGLWidget for OpenGL and input)
 +
* MainInterface (centralizes the others, issues drawing and updates)
 +
 +
User Input:
 +
* UserInputMonitor (handles input from multiple possible sources)
 +
* AbstractUserInput (base class for an input type)
 +
* QtUserInput (input from Qt events - touch / mouse, keys)
 +
* LircInput (buttons from remote control)
 +
 +
Widgets:
 +
* Widget (base class for every widget)
 +
* Layout (sets positions, sizes of multiple widgets)
 +
* DynamicLayout (layout that can transition smoothly)
 +
* Container (a widget that can contain other widgets and has a layout)
 +
* PlaylistBrowser (the playlist)
 +
* PlaylistItem (an item from the playlist)
 +
* NavigationPanel (choose Media Library, Internet, etc.)
 +
* NavigationItem (item for selecting media sources ^)
 +
* Button (base class for a button)
 +
* Label (draws text)
 +
* PlayButton
 +
* SeekSlider
 +
* VolumeWidget
 +
* VideoWidget ("holds" the video)
 +
* FilterEdit
 +
 +
Functionality:
 +
* PlaylistManager (like MainInputManager from Qt interface)
 +
* InputManager (like InputManager from Qt interface)
 +
* Dialogs (to handle showing dialogs using a dialog provider)
 +
 +
Other:
 +
* AbstractEffect (a generic effect)
 +
* TextDrawer (draws text with OpenGL, has cache)
  
 
===GUI Sketches===
 
===GUI Sketches===

Revision as of 18:11, 26 June 2011

This project is part of Google Summer of Code 2011.
Student: Casian Andrei
Mentor: Ludovic Fauvet

Abstract

A nice looking, intuitive, effect-oriented OpenGL interface for the VLC Media Player. It should combine the utility of the current Qt interface with the graphics of media centers. OpenGL will be used for all rendering operations for the interface, bringing a wide range of possibilities to develop pretty graphics. All the user interface elements will be specialized according to the needs of the VLC interface.

Progress

Task Progress
Establish a primitive working interface module. Done
Create a basic OpenGL "engine" for the interface. Done
Additional planning and design Done
Work on the layout system. In progress
Basic play functionality (primitive playlist) In progress
Selector / navigation, media library Not started
More work on the media library + playlist view (current item, tree view) Not started
Ensure scrolling around the playlist without problems Not started
Play video, ensure layout transitions work smoothly Not started
Implement basic effects for everything Not started
Add more effects as much as possible Not started
Nice play button, volume slider, stop, next, prev buttons Not started
Further improvements on the playlist, display more meta-data Not started
Lirc input Not started
Extra buttons, improve media library Not started
Fullscreen mode and search / filter Not started
Implement missing features and general improvements Not started

Planning and Design

The interface has 3 main parts - user input, GUI (widgets in OpenGL), functionality (interaction with VLC). User -> user input -> GUI <-> VLC User <- GUI <-> VLC

Classes

Main:

  • GLIntf (module code, create main things)
  • GLIntfWidget (a specialized QGLWidget for OpenGL and input)
  • MainInterface (centralizes the others, issues drawing and updates)

User Input:

  • UserInputMonitor (handles input from multiple possible sources)
  • AbstractUserInput (base class for an input type)
  • QtUserInput (input from Qt events - touch / mouse, keys)
  • LircInput (buttons from remote control)

Widgets:

  • Widget (base class for every widget)
  • Layout (sets positions, sizes of multiple widgets)
  • DynamicLayout (layout that can transition smoothly)
  • Container (a widget that can contain other widgets and has a layout)
  • PlaylistBrowser (the playlist)
  • PlaylistItem (an item from the playlist)
  • NavigationPanel (choose Media Library, Internet, etc.)
  • NavigationItem (item for selecting media sources ^)
  • Button (base class for a button)
  • Label (draws text)
  • PlayButton
  • SeekSlider
  • VolumeWidget
  • VideoWidget ("holds" the video)
  • FilterEdit

Functionality:

  • PlaylistManager (like MainInputManager from Qt interface)
  • InputManager (like InputManager from Qt interface)
  • Dialogs (to handle showing dialogs using a dialog provider)

Other:

  • AbstractEffect (a generic effect)
  • TextDrawer (draws text with OpenGL, has cache)

GUI Sketches

Repository

Repo

http://git.videolan.org/?p=vlc/vlc-skelet.git;a=summary

git://git.videolan.org/vlc/vlc-skelet.git

Backup Repo

git://repo.or.cz/vlc/vlc-skelet.git

http://repo.or.cz/r/vlc/vlc-skelet.git

Contact

You can reach me at skeletk13 at gmail or as skelet on IRC. Any suggestions are welcome.