Keyword - 2.2

Entries feed - Comments feed

14 December 2015

Last weeks in VideoLAN - 29

29th VideoLAN report

This report is a bit special, since the previous week-end was the VideoLAN meeting in Barcelona, so I did not do a post last week.

So, I'll cover in this post, the work of the last 2 weeks on VideoLAN and VLC development.

VideoLAN meeting

The VideoLAN team met for our 4th quarter meeting, in Barcelona, Spain, in the offices of Skyscanner. VideoLAN @Skyscanner

We were around 20 for 2 days, and worked on quite a few things around VLC. VideoLAN working in Barcelona!

During the week-end, we worked on:

  • the next update of the videolan.org website, to update its contents and to make it responsive,
  • finishing the next release 2.2.2 of VLC,
  • fixing important 3.0 blockers, notably in the Qt and OS X interfaces and in the core decoder,
  • most of the 3.0 blockers, to discuss and find the correct way to fix them,
  • new features like HEVC packetizing or HTTP/2 support (see below),
  • finishing our Apple TV/tvOS port,
  • finished the port to Android 6.0, aka Marshmallow,
  • adding important features for our Android port,
  • reworking our Code of Conduct,
  • preparing our move to Gitlab,
  • fixing important VLC bugs in demuxers and decoders,
  • internal policy and decisions for the VideoLAN non-profit,
  • and other stuffs I forgot about. :)

So, all in all, a quite busy week-end :)

Features and changes

So let's discuss a bit more in details, what got merged, in the last weeks.

VLC

Core

The fight against the deadlocks in the input and video output core went on during the last 2 weeks. To solve this, the core got 2 new functions named picture_pool_Cancel() and vout_Cancel() for the video output and the function vlc_fifo_TimedWaitCond() which allowed to introduce an interruptible mwait in the decoder core.
We should now be close to the end of these issues.

Related to this, all the decoders and packetizers now have a pf_flush function that they can implement. This flush was notably re-implemented in the libavcodec module.

VLC now has support asynchronous decoding, in the core: the methods decoder_QueueVideo, decoder_QueueAudio, decoder_QueueSub were introduced for that, and the preroll was fixed and simplified accordingly.

Finally, we have now timespec_get() (to fix issues on Win64 snapshot numbering) and timegm() replacements in our compat/ library.

Access

On the bluray side, the menus are now activated by default, we've improved the speed of transitions, and the overlay, and we also fixed numerous issues on titles detection, chapters count, end-of-file behavior and static menus.

We fixed the listing of numerous UPnP shares, including the Plex ones and UPnP module was made interruptible.

We fixed the support for AVC Intra files without SPS/PPS, and we added support for HEVC NAL parsing, at the same time.
This led to a big refactoring of the H264 and HEVC packetizers and parsers. This will allow us to record in HEVC codec.

HTTP/2 stack

Finally, a large piece of code was added to VLC last week: a new HTTP/2 stack.

It's around 5000 LoC and it supports HTTP 2.0 protocol, and supports seeking by reusing the TCP connection and the TLS session.

The code is currently only used for HTTP/2, because it is still missing some features compared to the HTTP 1.1 module (proxies, cookies, auth...)

OS X

On OS X, we've had an important rework of the simple preferences interface.

We've also reworked and fixed the starting of the interface from command-line.

Qt

In the Qt interface, we've fixed the layouts for the Right-To-Left (RTL) languages.

We've also fixed an important 3.0 regression in the input seekbar and a singleton thread-safety blocker for 2.2.2!

Miscellaneous

  • We've fixed an SMB module performance issue,
  • We've improved tizen and iOS video output.
  • We've fixed a FLAC CRC issue, that rendered some FLAC inaudible
  • For the adaptive streaming module, we fixed the computation of the length, in some unusual Content-Length cases,
  • Finally, we've fixed a regression on MKV ordered chapters issue and improved our WebVTT support.

Android

Android development got quite busy in the last 2 weeks: we've released VLC 1.7.0, 1.7.1 and 1.7.2.

We've fixed the video playlists feature introduced the previous week, we've improved the Android TV audio player, and fixed numerous reported issues.

Then, we've pushed the last fix for Android 6.0 Marshmallow support to VLC's core. It was mostly related to PIC issues (Position Independent Code) in 3rd party libraries. We will now be able to target Sdk 23!

Finally, we've merged the asynchronous decoding, which should improve, once again, the performance of VLC on Android. VLC should be now the fastest player in town.

iOS

Most of the work on iOS was done for the tvOS port, and to fight against Kafkaesque issues in the iOS Store.

We're still waiting.

WinRT

The WinRT port got quite busy too. Large refactoring to the applications were made to clean and simplify the old code and increase the speed of the application.

The look was refreshed too.

Finally, the port to UWP projects was merged. It should allow us to compile the application as a UWP application, without dropping support for 8.1.

That's quite a lot for those weeks, see you next time!

28 September 2015

Last weeks in VideoLAN - 19

19th week of VideoLAN reports

Because of the VideoLAN Dev Days that happened last week-end, here is a dual-week report of what has happened in the VideoLAN community and VLC development, during the past 2 weeks. :D

It explains also why there may not be as many commits as we usual have. This report is also shorter because I don't have enough time to detail as much as I'd like.

VDD 2015

The VideoLAN Dev Days 2015 were a huge success, with numerous attendees and quite a few nice conferences.

I'll do a longer post about it, but here is a nice picture during one of our meetings!

Features and changes

VLC

We've finally merge the work from outreachy on the TTML subtitles. Largely reworked by Hugo, this makes it supports most of the styles from the TTML specification.
We still need a bit of work to merge multiple styles.

François worked on the subtitles support for DASH and HLS, because we had quite a few issues with subtitles streaming input; be careful, it is not ready yet. :)
He also worked on lazy-loading of the playlists, mp4 seeking.

David found a work-around for AirPlay output that was stuttering, on OS X.

We've had large refactoring on the OS X interface, to continue the cleaning, that you've seen in the past weeks.

Rémi worked on the avcodec direct-rendering support, to always assume edge-emulation; and on simplifications of the hardware decoding setup in this module.

This work introduced 2 calls in the core: decoder_GetPicture() and picture_pool_Wait(). The first can be used instead of decoder_NewPicture() when the decoder manages correctly the format updates. The latter is a variant of picture_pool_Get() that sleeps until a picture is available.
This could be useful for the future asynchronous decoding feature...

Finally, we've had fixes on the Mac OS X advanced preferences, the iOS vout, the Direct3D11 video output, a 2.2.0 WMV regression, videotooolbox crashes.

iOS

The iOS port has been quite busy, starting by fixes for iOS 9.

We did a release numbered 2.6.5 of VLC for iOS.

The MediaLibraryKit project was updated for iOS 9 and for tvOS.

We've also had fixes for WatchOS, for iOS 9 searches, for the database indexing, and thumbnails.

We've also disabled the search if the folder is hidden behind a passcode, to avoid embarrassing results. :)

WinRT

We did a 1.7.0 release for Windows Phone, Windows RT and Windows 8.1/10.

This is major WinRT release, adding the hardware decoding, changing a lot of the internal, and improving the interface to match Windows 10 look.

We've updated the projects to support both a Universal Windows Project and a Windows 8.1 project.

We've fixed a few bugs from this 1.7.0 release, notably crashes.

Android

After the 1.5.90 release, things have been quiet on the Android front.

We've had translations updates, fixes for crashes, fixes for last playlist resuming, playlist&random states on resume and a few other small bugs.

Finally, yours truly fixed a very important bug, where we exported more than 14000 symbols in libvlcjni.so instead of 200. This will make the binary quite smaller and faster to load.

24 August 2015

This week in VideoLAN - 15

15th week of VideoLAN reports

Yet another week, and yet another weekly report of what's happening in the VideoLAN community and VLC development teams!

We're going back to one report per week, as holidays are over.
But, to be honest, this week has not been the busiest, I guess mostly because of holidays.

Features and changes

VLC

Yet another week started with MediaCodec fixes, which prevented all MediaCodec decoding on most Samsung devices! Ooops :)

François fixed numerous issues with Closed Captions, in the decoder and the text renderer.
This also fixed some background alignment issues that we've had for years...

Felix merged his 0-copy code for the hardware decoding for iOS. This should get very good performances on iOS.

We had a couple of important fixes for the pulseaudio module, that were backported to 2.2.2; and we're now generating Diffie-Hellman parameters dynamically, instead of hardcoding them.

Finally, we had a MKV subtitles regression, an H.264 extradata parsing issue and a large number of memory leaks, that are now past history.

Android

The Android project was moved to the latest version of the Android SDK, and to the last version of AppCompat and we had a few compatibility issues to fix.

We also updated our buildsystem to gradle 2.6, and updated the build-tools and gradle plugins accordingly.

We eventually fixed the loading for playlists and added an option to not rescan the database, if necessary.

In the end, we released VLC for Android 1.5.2 to the store, as a beta version.

iOS

As mentioned above, the most important part for iOS this week is the addition of 0-copy hardware decoding.

We also saw a small bug fixed that could make some files invisible from the media library.

That's not much, but the complete hardware decoding is big enough to explain this :)

WinRT

WinRT was way more interesting, with a couple of releases.

After the 1.5.0 version for Windows, we published a version named 1.6.0, and then one 1.6.1, fixing numerous issues, notably:

  • fixing subtitles display for SRT and SSA, and external subtitles loading,
  • more stable hardware decoding,
  • reworking the main interface, the mini player, and the file explorer,
  • fixing hundreds of bugs found by testers,
  • and fixing a weird crash on Windows RT, coming from the Windows Runtime.

We also published a beta for Windows Phone, named 1.6.0, introducing hardware decoding (disabled by default), and all the updates from the Windows world.

The code between Windows Phone and Windows is now more than 90% the same code.

Expect 1.6.2 and 1.7.0 quite soon.

x264

The x264 project also received almost 20 commits, this week; mostly to fix build issues with Visual Studio, inclusion in C++ projects, and a few other minor bugs.

4 August 2015

This week in VideoLAN - 13

13th week of VideoLAN reports

Yet another week, and yet another weekly report of what's happening in the VideoLAN community and VLC development teams!

Features and changes

VLC

Another week started with MediaCodec fixes, which went on for a few days and terminated with the addition of hardware accelerated Audio decoding on Android.

libVLC received new events for audio corking, muting, volume changing and audio devices: libvlc_MediaPlayerCorked, libvlc_MediaPlayerUncorked, libvlc_MediaPlayerMuted, libvlc_MediaPlayerUnmuted, libvlc_MediaPlayerAudioVolume, libvlc_MediaPlayerAudioDevice.
I backported the first few to libVLC 2.2.2.

The internal of VLC subtitles were completely rewritten, changing the way we're passing the text information from demuxers to decoders to text renderers.
We are now passing some structured text around, with styles information attached to it, instead of pseudo-HTML. This allowed to remove a large piece of duplicated code from text renderers, and put the complexity on the parsing side, not on the rendering side.

The H.264 NAL parsing was largely improved to fix the remaining problems of VideoToolbox for OS X and iOS, notably for frame re-ordering.
The VideoToolbox decoder should now be totally usable.

We added a new speech-to-text subtitle renderer for OS X, that speaks the subtitles instead of showing them on the screen. Of course, this is not for everyone, but it should help in accessibility cases for vision-impaired people.

The OS X interface cleanup work was continued during the whole week, by David, and will probably go on the next weeks.

Finally, we got fixes for AudioTrack (once again), notably for SPDIF support; for numerous memory leaks and some uninitialized variables.

Android

This week was rather calm (but not too calm) on the Android side of things, mainly because of the work on the other projects.

First, we integrated the VLC core changes to improve performance. VLC 1.5.1 should be quite competitive on this matter.

Then, we rewrote completely most of the video player advanced options, using icons in a new single panel.

We also improved the integration of vlc:// protocol and the Intents for 3rd party apps and websites when they try to launch VLC.

Finally, we improved the libVLC JNI API to support SurfaceTexture directly.

iOS

The work for VLC for iOS 2.7.0 was continued greatly this week. And VLC 2.6.3 was pushed on the store.

A large amount of work was done to support RTL languages, as it was announced for iOS 9.
This requires more usage of AutoLayout in our code.

Also, the thumbnail cache was improved, the side menu is getting a lift and a few crashes were fixed.

Some important work was done on MobileVLCKit to make it usable as a shared library framework.

Finally, the integration of VideoToolbox was merged for the iOS project.

WinRT

Like last week, the WinRT port received quite a few changes.

Most of the changes are about the interface, to prepare the integration for Windows 10, to get a more consistent interface, and to listen to user's feedback.

The rest of the changes are on the Direct3D11 hardware decoding.

We'll see how all this gets merged and released soon.

x264

x264 got a new release, and a bit of code merged in the master branch.

It notably adds:

  • NV21 input support,
  • Experimental NASM support,
  • Fixes for some CAVLC overflow, some memory leaks, and file handle leaks,
  • SSSE3 and AVX2 implementations of plane_copy_swap, for NV21 support,
  • Support for MSA MIPS architecture, for SIMD on MIPS,
  • Early Power8 support.

That's all for this week! Have fun!

Don't forget to register now for VDD, this September, in Paris.

30 June 2015

This week in VideoLAN - 8

Yet another week in VideoLAN world

Another week, another weekly report about what has happened in the VideoLAN community and VLC development teams, during the last week.

This week was pretty busy on most VLC related projects, as you'll see soon.

Features and changes

VLC and libVLC

The week started with more C11/C++11 integration, which is proving harder than expected, notably on the atomic integration side. Changes on this part went on the whole week.

SAT>IP servers integration was started by implementing the support of the RTSP dialect used on those SAT>IP servers. The UPnP part is still not present, yet.

We added support 9-bit and 10-bit GBR planar formats, that can be seen in professional files.

We've had numerous fixes on the Direct3D11 output, notably on cropping and displayed dimensions.

The VLC 2.2.0 regression for anamorphic snapshots was finally fixed, and, related to it, some transcoding sizing issues were fixed.

The OS X minimum version has upgraded to 10.7. This is required to use modern C++ features (C++11), which forces us to change the standard C++ library.

The OS X interface item management was completely reworked and splitted in a different class, which should simplify the maintenance of this part of the code.

A new hardware acceleration module for OS X and iOS was merged in the main line: the VideoToolbox decoder can decode H.263, H.264/MPEG-4 AVC, MPEG-4 Part 2.

Finally, some important work on the video picture pool in the core was started, to remove picture copies, use less locks and more atomics.

Android

All the Android video outputs have been merged together. There used to be 2 of them, one for Android 2.1+ and one for Android 2.3+.
It's interesting to know that at one point, we had 3 Android video outputs.

We've added a new libVLC function called libvlc_media_player_set_android_context that allows to set the JavaVM and Surface for a libVLC MediaPlayer instance.

This new function added to a cleanup in all the Android specific modules removes most static instances and variables, and will allow multiple surface and multiple players on Android, like on all the other OS. Finally, libVLCjni should be totally usable for 3rd party users, without restrictions. The buildsystem will now provide a libvlc-x.x.x.aar package to integrate libVLC directly in Android Studio.

We've also fixed minor UI issues on Android.

iOS

The biggest changes, this week, has been the integration of the VideoToolbox module, I spoke about earlier, for iOS. It will be used in VLC for iOS 2.7.0.

The 2.6.0 is still pending release, but should arrive soon.

WinRT

The Direct2D video output was removed from the WinRT project and replaced by the new Direct3D11 module, we've been speaking of, in the previous weeks.

This new module should be faster, and should allow hardware decoding and hardware rendering in the next releases. Stay tuned!

That's quite a bit for this week! See you next one!

26 July 2014

VLC 2.1.5

Release of 2.1.5

Today, we did a small release of the stable version of VLC media player: 2.1.5.

It is just a maintenance release, before VLC 2.2.0 is ready.

The highlights are:

  • Blu-Ray subtitles (PGS) in MKV are correctly sized,
  • Some MP3 streams could crash VLC,
  • GPU decoding that could artefact on Windows is repaired,
  • QTsound input does not crash anymore on OS X,
  • Audio channels order are fixed on OS X,
  • Improvements on the OS X UI for retina displays,
  • We updated freetype, libass, libogg, libmodplug, live555 and libjpeg,
  • We updated GnuTLS and libpng, to solve security issues,
  • Various issues in interfaces and transcode chains are fixed too.

Hopefully, this is the last one before 2.2.0 is out!

You can grab your version on our website!