jb, 28y

Keyword - VLC media player

Entries feed - Comments feed

Wednesday, December 14 2011

VLC 1.2: nouveautés

Un an et demi après la dernière version majeure (1.1.0), VLC revient avec une nouvelle version: 1.2.0, disponible en pré-version de test. L'occasion de revenir sur les nouveautés de cette version.

Avec près de 8000 changements fait par 150 développeurs, 600 bugs fermés et près de 200 000 lignes de code modifiées, cette version est une des versions les plus importantes de VLC. Plus d'informations sur les contributeurs de VLC 1.2.

De son petit nom "TwoFlower" (qui vient de l'univers DiscWorld), les principales nouveautés de VLC portent sur les sorties vidéos, les nouveaux codecs, le support des Blu-Ray et les interfaces.

Nota Bene: ce post est un écrit qui a servit de base à un article de PCINpact que vous trouverez en ligne.

Coeur Vidéo

Les modifications les plus importantes, mais aussi moins visibles, portent sur la réécriture du coeur vidéo et les modules d'affichage à l'écran.

Sous-titres

Dans les versions actuelles de VLC, les sous-titres textes ont souvent une mauvaise qualité de rendu, notamment lors de visionnage de vidéo SD sur des écrans HD. En effet, pour des raisons de performance, VLC rend les sous-titres à la taille de la vidéo, puis les intègre dans la vidéo avant de les passer à la carte graphique en une seule texture, qui fait le scaling de l'ensemble. Dans certains cas, les sous-titres sont crénelés et de mauvaise qualité.

Sous TwoFlower, un nouveau mode de rendu est possible: VLC envoie 2 textures à la carte graphique, une pour la vidéo, à sa taille d'origine et une pour les sous-titres, à la taille de l'écran. La carte graphique se charge du scaling de la vidéo et d'afficher l'ensemble. Le résultat est bien plus agréable, mais demande du matériel plus récent.

Ce nouveau mode de rendu est disponible pour les sorties Direct3d pour Windows, OpenGL pour Linux et MacOS X et x11 pour Linux.

Shaders, 3D et performance

Le nouveau coeur vidéo permet aussi des améliorations de performances en déchargeant plus de calculs sur le GPU, lorsque cela est possible.

Par exemple, l'utilisation de shaders ARB dans la sortie vidéo OpenGL permet de faire les conversions YUV vers RGB sur le GPU, même en profondeur de 10 ou 12bits.

De plus, les bases des shaders sous Direct3d et de l'affichage 3D ont été ajoutés pour les prochaines versions. Un fork de VLC permet déjà l'affichage 3D sous nVidia Stereo Vision.

Filtres vidéos

VLC 1.2 voit l'ajout de nombreux filtres vidéos, certains connus, comme hqdn3d (suppression du grain), ou gradfun (suppression des gradients), d'autres originaux comme un nouveau filtre de grain, un filtre d'inverse téléciné ou un filtre de stabilisation pour les caméscopes.

Codecs, Formats

VLC TwoFlower, comme à chaque version, apporte le support de nombreux nouveaux codecs, formats de fichiers et périphériques.

Un support limité des Blu-Rays est donc intégré sur toutes les plate-formes. La configuration est compliquée et peu documentée, et une grosse proportion des Blu-Rays n'est pas supportée du tout. Les menus ne sont pas activés non plus. Ceci étant dit, c'est un premier pas.

L'ajout des protocoles de streaming adaptatifs HLS et DASH, des périphériques de capture de vidéo sous MacOS et des cartes d'acquisition professionnelles de types SDI viennent compléter le tableau au niveau du support des périphériques et protocoles.

Codecs

Au niveau codecs, le décodage multi-coeur est dorénavant possible et activé en H.264, DivX, VP3/Theora, Jpeg2000 et Webm/VP8, ce qui peut apporter des améliorations très importantes en performance, notamment en Full-HD. VLC était, sur ce point là, bien en-dessous des packs de codecs du style CoreAVC.

Autre ajout important, notamment pour les professionnels et les fans d'animation japonaise, les codecs en profondeur 10bits, en H.264, Jpeg2000, DNxHD et ProRes sont dorénavant décodés et correctement affichés.

En plus du support de nouveaux codecs, de très nombreuses améliorations ont été apportés à l'existant, notamment au niveau décodage audio et sous-titres HD, au support des méta-données, des codecs RealVideo, des images fixes et des formats Matroska et MPEG-2 TS.

Enfin, le décodage matériel est dorénavant supporté pour les cartes CrystalHD et les smartphones avec OpenMax IL, sous Android.

Interfaces

Les interfaces de VLC ont toujours été les parents pauvres de ce logiciel, notamment sous Mac OS X.

Cette version introduit donc une réécriture complète des interfaces Mac OS et Web.

L'interface Mac OS se présente dorénavant en une seule fenêtre, avec une barre latérale, comme iTunes ou Mail. 2 styles sont possibles dans les préférences: le noir de QT X et le gris de Lion. La plupart des fenêtres secondaires utilisent la transparence...

Ports

La version 1.2 de VLC apporte le portage de VLC sous iOS, Android, OS/2 et Windows 64bits.

Pour cela, le coeur de VLC a été adapté, des sorties audio et vidéo pour iOS, Android, OS/2 et Direct2d ont été ajoutées, et de nombreuses optimisations assembleurs ARM, ont été écrites.

libVLC en LGPL

La dernière chose importante de VLC 1.2.0, c'est le passage du coeur de VLC (libVLCcore et libVLC) de GPLv2 vers LGPLv2.1. Cela permet aux développeurs utilisant une autre licence que la GPL d'utiliser le moteur de VLC.

Monday, November 28 2011

Who wrote VLC 1.2?

VLC 1.2

So, VLC 1.2.x is approaching. But who wrote it? Here are some statistics computed by Rémi.

Wednesday, June 29 2011

VLC 1.2.0 features: part 1, video output - update

Video Output modification, continued

I was previously detailing VLC 1.2.x improvements on the video output, a few weeks ago.

Subtitles quality

In comments, on this blogpost and on our IRC, people made a good point that the subtitles improvements were not enough.

Indeed, compared to MPC-HC or VSFilter, the lisibility wasn't the best, and it was notably missing a few options.

Point taken

Since then, VLC devs have added a few things:

  • better outline with options: thickness, color and opacity
  • a parametric shadow: distance, angle, color, opacity
  • a better parametric blackbox: color and opacity

This is an update of the previous rendering on the same video with the shadow and a think outline. VLC 1.2 Subtitle display part 2

And here is a screenshot of the complete preferences part. VLC 1.2 subtitle display preferences

Read the update about VLC formats support in VLC 1.2.0

Sunday, June 5 2011

VLC 1.2.0 features: part 1, video output

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:

  1. Most of the Video Outputs have been rewritten in a way or another, and their priority revised;
  2. Other Video Outputs were just dropped, like gapi, omapfb, hd1000v;
  3. OpenGL output has now got shaders to do YUV->RGB conversions in the GPU,
  4. 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:

  1. Sharper subtitles rendering,
  2. New Video Outputs were written, notably for Direct2D, for iOS and Android,
  3. Important changes for the deinterlacers,
  4. New filter for debanding videos,
  5. New filter for anti-flickering of videos,
  6. 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 call video 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 call window 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 a renderer, like Freetype, it converts the text into an image.
  • What we call blending of 2 images, if what people would call merging.

How does VLC display subtitles

Those days, to display subtitles, we have the following steps:

  1. the text OSD is rendered to the source size,
  2. the rendered OSD is blended into the source image,
  3. 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:

  1. the text OSD is rendered to the window size,
  2. the rendered OSD passed to the video output in a texture,
  3. the source image is passed to the video output in a texture,
  4. the video output scales the source texture from source size to window size,
  5. the video output blends both textures.

You can see quickly that the new way is sharper (you might need to click on the images) VLC 1.1 Subtitle display VLC 1.2 Subtitle display

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

Friday, September 4 2009

VLC 64bit running on Windows 7 64bits. 1st!

64 bits and Windows

64 bits VLC is a "hype" topic those days in our community.

On Windows, we couldn’t have a 64bits native version, because of lack of correct compiler (No, Microsoft Visual doesn’t fit in correct compiler section.

Fortunately, the mingw-w64 hackers are making a new one, and they ROCK. Huge thanks to NightStrike and ktietz!

VLC Win64

So, I have been working a bit on it. And two days ago:

Voilà :D

Don’t expect something complete soon, but still :)

Friday, August 28 2009

Snow Leopard is out! And why you will not have VLC 64bits right now...

Apple OS X 10.6 is out

If you have missed the news, then you are not on the same techy blogs than I am.

So, Apple new operating system Mac OS X.6, named Snow Leopard is out, and it improves a lot the speed, and ports most of its application to 64bits, but doesn’t introduce any important new feature. Learn more about it !

VLC and 64bits

Do you really need 64bits for a video application? I seriously doubt it. But well, you might want/need it in the future.

Linux

VLC 64bits runs on 64bits linux since a long time, and I use it a lot. No majors problems since Linux is cleverly engineered.

Windows

VLC runs on Windows 64 as a Win32 application, but we haven’t finished the port to Win64, especially because of external libraries issues. It will come eventually.

Mac OS X

Since the WWDC ‘08, we know we have to remove all Carbon code, and we have mostly done it.

Leopard

VLC 64bits runs on 32bits Leopard without issues.

Snow Leopard

As one of our OSX developers says: I’ve you had asked me a month ago, I had said that everything is cool and VLC64 will be released the same day as Snow Leopard.

BUT

It doesn’t work now, because of a change in the Cocoa runtime. VLC stopped working in the last two seeds (the GM and the one prior to it).

Launching VLC results in crashes in a low level function called _NSBundleCreate, which is triggered by a whole bunch of Cocoa and IOKit methods. Basically every method of these frameworks results in a crash on Snow Leopard. This is strange, as exactly the same code runs nicely in 64bit on Leopard and prior seeds of Snow Leopard.

The problem is that VLC is not an ordinary NSApplication, but a plain C app, that loads a Cocoa plugin, which instantiates NSApp itself. Therefore, you cannot reproduce the crashes in normal Cocoa apps.

Conclusion

Apple, once again, breaks everything with a new OS, as it happens often, or when a new version of Xcode gets out. Last version of Xcode forced us to drop X.4 if we wanted to go 64bits and compatible with Snow Leopard. Seriously, I don’t get it.

I have applications that are running on the Win7 64bit setup that are Win98 games!

Anyway, to not finish on a bad note, Snow Leopard looks gorgeous!

- page 1 of 11


Jean-Baptiste KEMPF | jean-baptiste.kempf _(at)_ via.ecp.fr | Powered by Chaussure | xHtml et CSS valide