Introduction
As promised in my last major post, I will try to discuss about features that are getting shaped for VLC 1.2.0.
This post is therefore the first of the series.
Be careful, this post is a bit technical.
tl;dr version: VLC 1.2.0 will be awesome, faster and have better display quality.
Video Output Rework
When I joined the VideoLAN project and the VLC development team, something like 5 years ago, people were already speaking about the Video Output rework.
This Arlésienne was, to me, a bit like our DNF.
However, during the development of VLC 1.1, VLC guru Laurent Aimar, aka 'fenrir' started to work on it. The VLC 1.1.x series has had part of this work in it, but most of the nice features were hidden to the users.
Vout Rework features
VLC 1.2.0 has seen enormous amount of work to go on this project and this work is almost finished.
This means:
- Most of the Video Outputs have been rewritten in a way or another, and their priority revised;
- Other Video Outputs were just dropped, like gapi, omapfb, hd1000v;
- OpenGL output has now got shaders to do YUV->RGB conversions in the GPU,
- Most video filters were ported to the new API, and most of them should be transcodable and streamable now.
New features
But this also means new features, like:
- Sharper subtitles rendering,
- New Video Outputs were written, notably for Direct2D, for iOS and Android,
- Important changes for the deinterlacers,
- New filter for debanding videos,
- New filter for anti-flickering of videos,
- New posterize and sepia filters for more fun.
I would like to speak about 2 of those features, in the following parts of this post.
Subtitles rendering in VLC
Definitions
- What we call
source size
is the original size in pixels of the video in the file. It is often what people callvideo definition
, like 480x640, 576x720, 720x1280, 1080x1920.
- What we call
window size
is the display size in pixels of the video in the file. It is often what people callwindow resolution
. It depends on the size of your VLC window, whether you resize it or not or if you are in full-screen mode or not.
- What we call
text OSD
are text subtitles and OSD were the text is rendered on the screen. Using arenderer
, like Freetype, it converts the text into an image.
- What we call
blending
of 2 images, if what people would callmerging
.
How does VLC display subtitles
Those days, to display subtitles, we have the following steps:
- the
text OSD
is rendered to thesource size
, - the rendered OSD is blended into the source image,
- the resulting image is passed to the video output, that scales to the
window size
and does it usually in your hardware GPU.
As you can imagine, if your source is 640x480 and your monitor is full HD, the text will be badly scaled.
However, doing this that way is better for your resources, because the most costly operation (scaling) is done in your hardware.
How will VLC display subtitles
But those days, with very powerful GPUs, can't we do differently?
Yes, we can. Using Direct3D or OpenGL.
To display subtitles, we will have the following steps:
- the
text OSD
is rendered to thewindow size
, - the rendered OSD passed to the video output in a texture,
- the
source image
is passed to the video output in a texture, - the video output scales the
source texture
fromsource size
towindow size
, - the video output blends both textures.
You can see quickly that the new way is sharper (you might need to click on the images)

Before people scream, yes, it isn't exactly the same frame which is why the colors are different and yes, white on white isn't very readable. But this is beyond the point. The point is the difference in sharpness. I'll do better screenshots, when I got time (never :D).
Compatible Video Outputs
At the time of this writing, the video outputs that can do this blending are:
- Direct3D, default on Vista and 7
- OpenGL,
- x11.
However, notable video outputs like DirectDraw and Xv are not able to work in this mode.
Deinterlacers
In addition to this work, an important amount of work was done on the VLC deinterlacers by Juha.
Notably, he has written new deinterlacer modes, fixed bugs, cleaned the code and written an impressive documentation.
The most notable parts of the work include:
- a complete InVerse TeleCine deinterlacer, very useful for old NTSC anime,
- a framerate doubling CRT TV simulator mode, named Phosphor.
And all of them are properly documented on our .
Moreover, as previously told, all modes of deinterlacing should be transcodable or streamable.
Thanks for the support. To be continued...
Read: Update of this article