jb, 28y

Keyword - VLC media player

Entries feed - Comments feed

Tuesday, April 2 2013

New report about the WinRT port

News and Excuses

I must start this post by sharing some excuses of not doing enough updates lately.

The main reason is that we've been mostly under-water with the current development, that took most of our time.

News and report

The good news is that we have had tremendous progress...

The bad is that we have still a bit of work to do before sharing it on the store, as I will explain soon.

Pictures

But first, the current pictures:

Current start screen

Metro Start Screen

Metro Main Screen

Fully working playback

Metro Playback

Metro Playback 2

Technical update

If you followed closely, our main work, in addition to the UI, was to fight and replace the forbidden symbols not allowed on Windows App Store mode.

We've been quite efficient at that, working closely with Mingw-w64 project and GCC developers.

The biggest result is that we have now cut down 90% of our symbols, that are forbidden on Metro Mode.

We mostly did this by:

  • replacing our forbidden calls with newer authorized equivalent calls,
  • modifying gcc and Mingw-w64,
  • writing new code in a special library of ours,
  • writing dummy functions,
  • disabling VLC code that would not work on the Metro platform,
  • moving VLC to MSVCRT 11.0,
  • moving all the VLC codebase to UNICODE and WideChars to fit the new requirements.

We did also a lot of minor things to help the integration of libVLC and VLC in this modern platform.

What are we working on now:

We are now mainly working on 2 things:

  • make VLC work with MSVCRT 11.0 without crashing ;)
  • write headers and C/C++ code to access the new fashion of COM APIs in which WinRT is written in.

What we are gonna work just after:

  • ARM, ARM, ARM,
  • WP8

Goodies

They are gonna get shipped soon :)

Tuesday, December 11 2012

Why we need a KickStarter for VLC on Metro

KickStarter for VLC on Metro

As you might have heard, some developers of the VideoLAN team have started a kickstarter quest to crowdfound a port of VLC on WinRT.

The reason for this kickstarter is that porting VLC to WinRT will be hard and long, if we don't speed it up.

And yet, quite a few people seem to think the task will be simple, like on neowin or Hacker News.

I'm all for funding 40k pounds for VLC (they deserve it), but 40k under the guise of Metro seems a bit much, no?

I dont know but just creating a metro UI shouldn't be that hard should it?

The Windows RT app should be trivial to make... As long as they aren't using Win32 API's, it should just be a matter of recompiling for RT and correcting whatever few bugs they encounter.

Well, no, this is not too much.
We are not the kind of person asking money for nothing, I think we've proven that during all those years.

Let me explain why.

Why we need a KickStarter for VLC on Metro

Designing a UI above VLC, for the "Modern Experience" is quite easy, and we've already done a few proofs of concept.
Finding a designer would be simple and 1k$ for the project would be too much already :) It would take a couple of months and we would be done with it.

The issue is to get on the store. And this is hard.

Why is that?

VLC (and its underlying libraries, including codecs, networking access or demuxers) represents around 7 Million Lines of Code in C, C++ and ASM languages. And all of this code is following C99 standard and has inline ASM.

Visual Studio cannot eat that code in any way. Believe me, we tried. A lot. So we need to compile the VLC for Windows on Linux, using gcc and mingw.

Unfortunately, this does not work on WinRT ("Modern UI" or whatever you like to call it). WinRT restricts a lot the Win32 APIs. And only the Windows Store knows which ones are allowed.

For example, the BSD sockets are gone... Yes, this is not a joke.
They work on Linux, Windows, Mac, iOS, Solaris, Android, QNX, WP8, WinCE but not WinRT.

Roadmap

So, we need to:

  • change and update our toolchains,
  • fix MingW for WinRT, in the best way we can,
  • link to the newer Windows runtime,
  • list the problematic APIs,
  • rewrite the code that is using Win32 APIs since 10 years (and in all underlying libraries too...),
  • drop some modules or isolate some code,
  • write new replacement code,
  • write a new interface above all this,
  • design the interface correctly,
  • fix the code using windows HWND,
  • port the audio and video outputs,
  • work-around the sandbox for DVD and BluRay playback,
  • probably write a WinSock2 replacement library to build all the cross-platform libraries that expect a BSD-socket-like library,
  • port to ARM,
  • etc...

Add to that the need to modify MingW to output dlls that we can load on ARM (Windows RT) and do the same project for the different APIs present on WP8.

Conclusion

As you can see, a lot of the work is not really on VLC, but on being able to compile for WinRT with open source tools, since Microsoft tools are not enough. And a lot of work will be work-around the limitations of WinRT.

Of course, a lot of the work will be re-usable to other projects.

So, yes, we will need quite a few developers to do all that. We can do the Android route, and it might take a couple of years to get it there, or we can try to get some money to speed it up...

Thursday, October 18 2012

VLC media player 2.0.4 and VLC for Android 0.0.6

VLC 2.0.4

So, yet another release for VLC is around the corner. Why should you care?

Well, first, it shows that the VLC project is still quite alive and that we care about our users, even if we are focusing on 2.1.0.

Then, a bit of stabilization of the 2.0.x branch cannot be bad. :)

For a summary of the most important features, you have:

  • Support for Opus codec, including multi-channel and icecast streams,
  • Support for MSS1 and MSS2 codecs through DMO on Windows and Linux (this can still be hard to use until 2.1.0).
  • Support for Youtube Live Streams,
  • Support for BluRays correctly on OSX,
  • Karaoke control on OSX interface.

For important fixes, we have also:

  • Youtube, Vimeo, Koreus and Soundcloud are back,
  • Ogg duration should be fixed in most cases,
  • HLS, Dash, HTTPS, MKV and Ogg playback fixes,
  • Wallpaper is back on Windows 7 and 8,
  • Huge improvements in the OSX interface,
  • Lots of fixes in the Qt interface,
  • Windows 8 look is now correct,
  • Crashes in subtitles, hardware acceleration fixed,
  • Web interface improvements,
  • Audio devices selections fixes and synchronizations,
  • Security issues.

And of course, translations!

VLC for Android Beta 6

At the same time, you might have seen that we have done quite a few VLC for Android releases:

After 0.0.3 and 0.0.4, 2 weeks ago, 0.0.5 and 0.0.6 have been released in the last week.

So, what are the cool things in?

More devices

One of the big issues we have been facing was to support the maximum of devices with only one package.

The first thing was the port of VLC on Android to Intel x86 chips.

Then, we had to work on NEON autodetection, in order to support all Tegra2 tablets and phones directly. A bit hard to do, but, now, our ARMv7 packages work on both NEON and devices without NEON.

Finally, we've done quite a few fixes for devices like the Nexus 7, that allocate the memory in a different way than other devices...

More Android support

We have also been working quite hard to fix our behaviour on all android versions, from 2.1 to 4.1.

Android 2.1 is really slow and buggy, but we need to support it while adding the coolest features from 4.0 and 4.1.

A lot of fixes for compatibility went in, notably in 0.0.4 and 0.0.5.

New interface

As you can see in the following screenshot, we have also been working in having a better User Interface and User eXperience on both tablets and phones.

VLC 0.0.6 on Android

VLC 0.0.6 on Android - Audio

This is long and difficult, and we move step-by-step, but we are going in the right direction.

Performance

In terms of video performance, VLC is still in beta, in debug mode, and therefore slower than it should be.

We are also improving there, but it is not easy, especially with the very limited numbers of devices we have on our hands. We have still quite a few ideas to improve.

In terms of the UI, we are decreasing the CPU and the memory used for snapshots and audio cover arts, so that the UI is smoother. You can see that in 0.0.6 and will see it more in 0.0.7.

Our background audio service is now completely asleep when not used, and is awaken on phone calls, as needed.

Still in beta

Yet, as you might know about it, this is still not perfect, and needs some work, so this is still a beta!

Monday, February 6 2012

VLC 2.0 pour MacOS X

Intro

La nouvelle version de VLC, nommée TwoFlower ou 2.0, apporte de nombreuses améliorations et modifications spécifiques à MacOS X. Ce petit article permet de passer en revue ces améliorations, qui sont souvent peu décrites dans les articles plus généralistes.

Ces dernières années, le développement de VLC sous OSX a été un peu chaotique et incertain, avec un vrai questionnement sur le futur du projet. Néanmoins, sur l'année passée, Félix, aidé par plusieurs autres développeurs externes, par le reste de l'équipe de VLC et par un jeune designer, a pris le taureau par les cornes. Il est évident que de nombreux bugs resteront sur les premières moutures, mais les versions devraient se suivre rapidement pour réparer vos bugs les plus gênants.

Nouvelle Interface

La modification la plus visible de Twoflower est la nouvelle interface. Cette interface remplace l'ancienne interface, qui datait des premières versions de OSX.

Tout d'abord, cette interface se présente en une seule fenêtre, pour mieux coller au look actuel des applis OS X. Ensuite, elle existe en deux couleurs: une version noire, qui ressemble au look QuickTime X, et une version grise, comme pour Lion. De plus, sous Lion, elle permet de choisir entre le plein écran natif Lion ou le plein écran classique de VLC.

La plupart des fenêtres utiles lors de la visualisation des vidéos, notamment les filtres audio et vidéo, ont migré vers le style gris transparent HUD. De nombreuses autres fenêtres ont évolués, mais sans bouleversement.

Extensions

La nouvelle interface supporte les extensions lua de VLC pour créer des nouvelles fenêtres et fonctionnalités, comme l'intégration IMDB, Wikipedia, OpenSubtitles et autres. Ce support a été fait tardivement dans le développement, donc une période de stabilisation sera probablement nécessaire.

Périphériques

Jusqu'ici, sous Mac, VLC ne pouvait lire que la webcam intégrée. À partir de VLC 2.0, un support générique des périphériques QTKit a été ajouté pour l'audio (QTSound) et pour la vidéo (QTCapture). Cela devrait permettre de visionner et de rediffuser les webcams externes USB et FireWire, les microphones ainsi que les cartes DVB et SDI compatibles.

Au niveau du support Blu-Ray, VLC 2.0 permet de lire des disques et des dossiers non chiffrés de façon limitée, sous Linux et Windows. Une fois que certains bugs seront résolus, cela devrait être aussi le cas sous MacOS X, mais probablement seulement sous Snow Leopard et Lion. Pour les Blu-Rays chiffrés, la bibliothèque libaacs, n'est pas encore porté sous MacOS X. Avis aux amateurs!

Codecs

La version MacOS X de VLC 2.0 bénéficiera du même support amélioré des codecs, des formats et des filtres vidéos que les versions des autres plate-formes. La partie la plus intéressante concerne le décodage multi-threadé des codecs majeurs pour profiter des machines modernes multi-cores. De nouveaux codecs sont supportés, comme le ProRes, l'AVC/Intra, les codecs 10bits et certaines nouvelles variantes WMV. Le support des formats de fichiers existants a aussi nettement été amélioré, notamment pour le MKV et le MOV.

Le décodage GPU sous OSX, aka VDADecoder, n'est pas de la partie dans cette version, pour des raisons de priorité de développement. Sébastien, développeur VLC, a porté le code dans FFmpeg, mais la partie VLC n'est pas encore prête. On espère que cela arrivera dans une version mineure suivante.

Sortie vidéo

La sortie vidéo, en OpenGL a subit quelques modifications, simplifications et améliorations. Dorénavant, les sous-titres sont rendus à la taille de la fenêtre de sortie, quel que soit la source et directement fusionnés avec la vidéos en OpenGL. Cela améliore la qualité et la netteté des sous-titres. De plus, l'utilisation de fragment shaders pour faire les conversions d'espace de couleurs, même lorsque la source est en 10bits, devrait améliorer les performances.

Support OS X et PowerPC

Cette version 2.0 est compatible Leopard, Snow Leopard et Lion. La version intel 64 bits est la version prioritaire pour Snow Leopard et Lion, car elle seule a le support natif du plein écran sous Lion. La version intel 32 bits fonctionne quant à elle aussi sous Leopard. Il existe toujours une version powerpc pour Leopard, mais qui n'est testée que sous G5, faute de matériel. Cette version powerpc supporte aussi le multi-threading pour le décodage des formats HD, pour ne pas jeter tout de suite les derniers Mac Pro G5 ;) Il est cependant possible que la prochaine version majeure (2013?) ne supporte plus cette architecture.

Le futur

Plusieurs pistes de travail sont en cours: finir l'interface et la peaufiner pour palier aux manques qui seront forcément présents dans les premières versions, travailler sur le support Blu-Ray qui reste trop basique, intégrer le code pour le décodage GPU et changer la licence de VLCKit vers la LGPL afin de permettre de construire des applications non-GPL au-dessus du moteur de VLC.

Nota Bene: Cet article a été écrit par mes soins et donné gracieusement à MacBidouille et Mac4ever.

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.

- page 1 of 11


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