VoutRework

From VideoLAN Wiki
Revision as of 11:08, 28 August 2005 by Zorglub (talk | contribs)
Jump to navigation Jump to search

Draft design for the vout rework effort

Overall architecture

The current system (one vout_thread_t per window) will be splitted

  • A single vout_core that manages all vout instances and windows
  • A vout_window object per displayed window
  • A vout_input (needed for cases when not 1:1 mapping between input and window : wall, clone)

OSD and subpictures

We need to be able to display them either:

  • At video resolution, for DVD subtitles (on the "render")
  • At screen resolution (text subtitles, OSD control) (on the "output")
    • This will also allow us to draw subtitles outside of the video rendering
    • Probably needs specific code for each vout

At the moment, subpictures have very annoying timing constraints. subpictures should be timed either on the stream (for subpictures) or absolute, from the vout_core (for subfilters)

Filters

Make a clean separation:

  • vout_filters should not be the same as real vouts anymore (will come from the split)
  • pic_filter
    • Currently called video_filter2, should be renamed
    • Works on a single pic buffer
    • Can be streamed
  • subpicture_filter

Modularization of specific calls

For many of the operations we need, OS specific calls exist (OpenGL, Quartz, DirectX). This should be modularized, with a native "C" fallback.

OS specific calls are often faster.

Misc

  • Vout plugins (that provide vout windows) should allow reusing a vout by reusing it. This would much improve the experience)
  • Vout windows must have a flag to tell if they are "main" or "helper" (audio visualization, ...). Helper vouts should get no OSD (if another vout is present) and should not "steal" the accelerated vout"
  • 4:3, 16:9, freeform Aspect Ratio
  • cropping and padding (do at OS level, but provide a core call to set it up and configure).
  • better hotkeys integration : need hotkey module redesign to act on selected vout and relevant input instead of the first we find