Keyword - VLC

Entries feed - Comments feed

Tuesday, August 4 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.

Wednesday, July 29 2015

This week in VideoLAN - 12

12th week of VideoLAN reports

The summer goes on, and here I publish another weekly report of what's happening in the VideoLAN community and VLC development teams!

This week was quite cool, and quite busy, with some of the team going to Spain for aKademy!akademy2015.jpg

Features and changes

VLC

The week started by the continuation of the OS X cleaning by Felix, preparing for the next releases of OS X and Xcode, removing the old QTCapture module, switching more code to ARC, splitting the code of the interface in smaller files and improve the code style of the OS X modules.
This important cleaning work went on until Wednesday night.

The Windows code is now calling SetThreadErrorMode() on Windows 7 and is calling a fallback for older versions. This is necessary for proper thread-safety of libVLC.

The helpers vlc_access_NewMRL(), vlc_access_Delete() were introduced in the core, along with inline function helpers like vlc_access_Tell(), vlc_access_Seek(), vlc_access_Eof(), vlc_access_Read() and vlc_access_Block().
All this should make the writing of an access modules easier.

And we got a new concat access module, to concatenate multiple access objects, using those new APIs.

Rémi went on by simplifying the peek() features of the stream filters: we have now a generic stream_Peek() front-end and now pf_peek are now gone from stream filter modules. At the same time, access_GetParentInput() and demux_GetParentInput() got removed from the core.

François added the support for alternative audio/groups in HLS, fixed relative paths in DASH, and finally merged both HLS and DASH modules into one adaptive module; this will make improvements in one format available in the other. He also added support in DASH/HLS for parsing the language, the role and the description of each track.

We deprecated libvlc_media_player_set_agl(), because this is an old Apple technology that noone uses anymore. And we fixed the plugins cache signature issue on OS X.

Finally, Rémi worked on ACCESS_GET_CONTENT_TYPE to remove the access_t.psz_demux variable that was used to force the demuxer from the access module. This was a dangerous design that did not work well with stream filters.

Android

The Android port got a few fixes on the audio output, notably a circular buffer to improve the whole VLC performance, a hack for 4.4.2, and stabilization for Android Lollipop.
In the core, we also added interlacing detection for MediaCodec acceleration.

On the interface side, the important changes were mostly on the Android TV version, notably adding Now Player Tile and fixing reported issues.

iOS

Last week was quite busy on iOS, culminating with a 2.6.3 release.

On the VLCKit SDK, we removed headers that are useless on iOS (MobileVLCKit). We also fixed crashes in the MediaLibraryKit SDK.

Then, more than 20 commits were pushed and 6 tickets closed to fix random crashes of the 2.6.x versions of VLC, including backports from the 2.7 branch.
The 2.6.3 tag was pushed on Friday, ending the week. :) It should be on the store in the next days.

WinRT

After a few calm weeks, the WinRT port got a lot of work this week.

First, we added a SlideShow subproject, to display nice animations in the background.
Then, we fixed the MediaFoundation backend, we fixed some issues with the new SDK and new VisualStudio version and the newer libVLC.

We then updated slightly the desktop design and the icons, in order to simplify the interface and the mini-player, and match the Windows 10 look.

The interface for Windows Phone was also improved for Windows Mobile 10.

Finally, quite a bit of work went into the hardware acceleration for Direct3D11. It's almost fully working for us :)

Tizen

The first code was pushed to the Mike git repository to build libVLC on Tizen.

Community and VDD

As you saw in the introduction, Rémi, Felix and me went to aKademy to speak with our KDE friends. It was in A Coruña.

We also finally announced VDD for this September, in Paris. Register now!

Monday, July 20 2015

This week in VideoLAN - 11

11th week of VideoLAN reports

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

This week was quite hot, in the real world, and we're in the core of the summer; therefore this week was quite calm on all fronts :)

Features and changes

VLC

A large part of the OS X interface was rewritten by Felix, to use more modern code, notably Objective 2.0 features.
We've seen notably the usage of automatic properties synthesis, the removal of object instances in the xib files, the removal of the support of Mac OS X 10.6 and the class APIs reduction. All this should modernize the VLC OS X codebase quite a bit. :)

The port of VLC and libVLC to Tizen was started this week too. Currently, we have the core, the contrib, most modules and libVLC compiled with the Tizen SDK. More info here.

As often lately, we've seen also fixes for HLS, notably to fix a regression on Windows, where no HLS stream were working and one to correctly support AAC audio.

We've also added support for WebVTT subtitles inside MKV, fixed a few memory leaks, and a regression in the DirectShow input module.

This week was quite calm, as I said before. :)

Android

Last week, as promised, we've released VLC for Android 1.5.0, as a beta, on the store, for the testers from our communities.

We've therefore spent a lot of time fixing regressions and bugs for this release.

We've also fixed a few issues for the Android TV version: the previous weeks changes introduced some regressions, especially for the background video playback feature.

iOS

The iOS port got integration of CoreSpotlight to support global search for iOS 9.0.

We've also pushed a few fixes, as usual.

I know all this is a bit less than the usual work, but it's the summer. I hope we'll get more done next weeks... :D

That's all for this week! Have fun!

Monday, July 13 2015

This week in VideoLAN - 10

10th week of VideoLAN reports

This is my 10th weekly report of what's happening in the VideoLAN community and VLC development teams!

It's quite cool, that I've been able to not drop it :)

Compared to the previous week, this week was quite active, even if most changes were not very visible :)

Features and changes

On Monday, we removed the rest of the port of VLC on Symbian, and pushed more fixes for the OS/2 and Solaris ports.

Rémi went on with the work from the previous week about interruptible I/O in VLC' core. We have now vlc_mwait_i11e() and vlc_msleep_i11e().
Later during the week, vlc_cleanup_run() was completely removed from the core.

On Wednesday, Thomas fixed some important Android AudioTrack issue for the HDMI output of the Nexus Player.

We removed the ATMO video filter, because of the lack of maintenance, and the limited use-case.

At the end of the week, David did a large refactor of the resume dialog on the OS X interface and François added support of Atrac3+ inside Wav files.

Finally, we fixed numerous memory leaks in D3D9 and Qt interface, we pushed HLS and XML parsing fixes, and some large cleaning of the acoustid, remoteosd, audioscrobbler, fingerprinter and addons modules.

iOS

This week, we released 2 versions of VLC for iOS on the store: 2.6.1 on Wednesday, and 2.6.2 on Saturday!

Most of the changes of those 2 versions are fixes for regressions we've had in the 2.6.0 release, that were reported by users.

Quite a bit of work was continued on 2.7.0, notably on hardware acceleration, and network browsing support. We'll see when all this ends in users' pockets :)

Android

The cleaning of the core of the Android application was continued, once again. We should now be at the end of this work:

  • First, the libVLC equalizer API binding was rewritten completely.
  • Then, the surface callbacks were fixed and largely reworked.
  • Finally, the playback service received numerous fixes, notably for next/previous, for the video/audio switches and the notifications.
  • We also fixed a large number of ANR and crashes, that were detected during the week-end.

The audio device management was changed to better support HDMI on the Nexus Player.

Finally, numerous fixes were pushed for the Android TV port, including background video playback and better search integration.

This should give us a 1.5.0 release this week of VLC for Android!

That's all for this week! Have fun!

Monday, July 6 2015

This week in VideoLAN - 9

Yet another week in VideoLAN world

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

As the previous week was very busy and that most Europe got a heat wave this week, this week looks almost calm. :)

Features and changes

VLC and libVLC

The week was started by Felix updating the VDA acceleration, after the work of the previous week on VideoToolbox. The code was cleaned, made more robust and defaulted to I420.

The Win32 core and Wasapi module were modified to use native TLS index support. The OS X threads were also fixed for a timeouting issue.

The iOS video output was made more resilient to failures that could happen on initialization.

GotoMeeting G2M3 and G2M4 decoding were added and mapped to the libavcodec module.

Wednesday, Rémi added a large piece of code in the core to introduce a per-thread sleep interruption framework. To make it short, solves the issue of our inputs that have blocking I/O and could lead to timeouts or deadlock, in case of network errors, for example.
This added interruptible poll(), read(), write() to the core API and helpers for send(), recv() and related functions.
This also lead to the removal of vlc_object_waitpipe() and the infamous vlc_object_alive() functions.

At the end of the week, support for iOS 6.x and OS X 10.6 was removed from the tree.

We've pushed fixes for the latency control of the Android AudioTrack audio output module, before Android 4.4.

iOS

The release 2.6.0 of VLC for iOS was finally deployed on the store.
This release brings notably:

  • Apple Watch support,
  • Mini-player for browsing while playing,
  • Support for video looping,
  • Better support for Plex servers,
  • Better thumbnailing,
  • Lots of fixes.

The version 2.6.1, fixing more bugs, was done, tagged and pushed for approval 2 days later :)

The rest of the work, focused on 2.7.0, was not pushed yet on the main tree.

Android

The cleaning of the core of the Android application was continued.

After the big cleanup of libVLC's JNI binding, the majority of the work was on the Playback Service.
Instead of having a video player and an Audio Service, we merged everything to go inside a unique playback service. This should give us video playlists, loops, repeats and mixed video/audio playlists. This also mean cleaner code.

This also means that we can drop the permission PHONE_STATE for recent versions of Android. This was asked over and over from all the users.

We removed, again, some extern and static symbols to help use of the libVLC library.

We've rewritten chapters and title support for the application.

Also, a custom file picker was added for subtitle selection, in case your Android does not provide it.

Finally, we pushed all our changes to a version 1.4.99, on the beta channel.

WinRT

On the WinRT side of things, we've had build fixes mostly and more testing on the Direct3D11 support.

The rest of the changes are being tested for now and are not merged yet. We're working on it!

HKOscon Conference

François went to Hong-Kong, to represent us at the HKOscon and speak about VLC!

You can see a picture here!

That's all for this week! See you next one!

Tuesday, June 30 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!

- page 1 of 12