Keyword - Qt

Entries feed - Comments feed

29 May 2016

This week in VideoLAN - 45

45th VideoLAN report

After a couple of very busy weeks, we're back on a normal schedule. Therefore, here is the weekly report about the VLC and VideoLAN communities!

Features

VLC

We started the week by adding the support for MPEG-2 and VC-1 hardware decoders on Android in the mediacodec module.
We also fixed some MPEG-4 regressions on this module.

Hugo fixed a few issues on the UPnP module, and mostly added the support for Windows Media Sharing servers, in this module.
We also added support for subtitles over UPnP, using the work done in the core the previous week.

The Matroska demuxer got a few fixes for some regressions, but mostly implemented the fast-seek option, that is imprecise, but faster than the normal seek. This is useful when computing thumbnails, for example.

Some changes on the libVLC parsing events were done, to simplify the handling in client applications. If you were using the not-stable-yet libVLC 3.0, beware!

Near the end of the week, the core got some important changes on threads manipulation, with the introduction of vlc_thread_self() and vlc_thread_id(). The usage of futeces was introduced in the core: see Rémi's post about it.

The MMDevice audio output on Windows now supports device change events.

The Windows 64bits build will now have high-entropy ASLR activated, which should reduce the possibility of exploitation of security issues.

On Windows, we also fixed the raising issue of the Qt tooltip that we had with Qt5, the 2.2.3 DirectDraw regression and a small D3D improvement when handling large pictures.

Finally, a few H264 annex-B parsing issues were fixed and the video headers were modified to support, in the future, VR videos (nothing working yet).

Android

On the Android side, we're going on fixing issues for the 2.0.0 release.

This week, we:

  • improved the subtitles downloader, to activate it from within the player, and for any video,
  • improved the interface for scanning, the browsing and the video player animations,
  • improved the audio player on Android TV,
  • improved the speed of MKV thumbnails,
  • fixed a few remaining small issues.

All this was pushed in the update 1.9.12 on the play store. Hopefully, the 2.0.0 release will come this week. :)

WinRT / UWP

As last week, the WinRT port has been very busy again, with almost 100 commits.

As for Android, we're focusing on preparing the release, and fixing the biggest bugs people have reported.

On the libVLC backend, we fixed a few performance issues, we added more codecs support, and we improved the UPnP and SMB browsing.

On the interface side, we improved the thumbnailing and parsing process, we fixed numerous bugs that happened when resizing (and Windows 10 Mobile look) and we fixed a few crashes.

We also improved the settings and activated the access to the equalizer.

Hopefully, we'll be able to open the beta to the public soon.

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

23 May 2016

These weeks in VideoLAN - 44

44th VideoLAN weekly report

Once again, unfortunately, the report skipped a week :(

But this report, the 44th report, is quite important for 2 reasons:

  • it's been over one year I've started those reports, since the first one was published on May 10th, last year;
  • and this post is the 300th blogpost on this very blog!

This also mean I skipped 8 weekly reports, and did dual-reports for those weeks, which is not too bad, compared to what I hoped to achieve...

So, without waiting any further, here is the report about what happened in the last 2 weeks in the VideoLAN and VLC development community! It was a couple of busy weeks!

Features and changes

VLC

The week started by some work on the supported MIME-types for the .desktop file for VLC on Linux, by a Debian developer, which cleaned and merged all our different mimetypes support correctly.

Then, a very large patchset for seeking in the MKV (matroska) files was merged. It rewrites most of the seeking support and builds an index when playing the file. This new code fixes quite a few bugs we had on the matroska support.

We added support for subtitles over the network, with a set of functions named libvlc_media_slaves_add, libvlc_media_slaves_get (and related).
At the same time, we now auto-detect subtitles in networking shares; this is currently tested on SMB and UPnP.

We've had improvements on the Qt main window resizing, and on the playlist model.

The work on DVB scan was continued, notably to support device limits.

Another batch for ChromeCast was merged, mostly focusing on seeking and stopping the stream. We're still missing a few bits, though :)

And finally, we improved again our adaptive streaming support, our Blurays menus support, added support for vorbis and flac inside MP4, improved WMV metadata and prepared support for streaming output on Android.

VLC core for WinRT

The VLC engine has seen many changes for WinRT, in the last few weeks, mostly to merge the existing patches we had pending.

The 3rd party libraries (contribs) were updated and patched to correctly compile for the WinRT/UWP version.
At the same time, we merged numerous patches for the core, the modules and the buildsystem.

We improved quite a bit the Direct3D11 output, both for desktop and the WinRT version. We notably fixed the green line issue and added support for more hardware decoders on Windows Phone/RT.
We also accelerated the chroma conversions when using hardware decoding.

Finally, the WinRT audio module now supports volume changes. This was forbidden in Windows 8 apps, but is allowed in Windows 10.

Android

As we're approaching the 2.0.0 release, the Android port was quite calm.

We pushed 2 beta releases on the store: 1.9.10 and 1.9.11 to fix minor issues, mostly to fix subtitles regression and improve the thumbnails look.

We then added support for the network subtitles and subtitles downloading for network media.

This will be in the next release, that should come soon.

iOS

We released VLC 2.7.7 for iOS and 1.0.6 for AppleTV, to fix minor issues, update the software decoders, and activate AC3 and E-AC3 decoding on 64bit device and the Apple TV.

Since then, there were fixes for onedrive support, for subtitles over FTP and for SPDIF pass-through support.

WinRT / UWP

The WinRT port was extremely busy, these past two weeks.

Indeed, we are preparing a beta version named 1.9.0, that would prepare for the first true UWP version, that will be named 2.0.0.

We've added most of the features that you usually see on the Android and iOS versions of VLC, notably UPnP and network shares browsing, support for HTTPS and adaptive streaming, better hardware decoding, dialogs support, as many codecs as the desktop version, and so on.
Moreover, the engine use the runtime 12.0_app instead of the 11.0 one we used on the WinRT version.

On the UI side, we now support correctly Windows 10 integration, with Cortana, drag and drop, tablet mode and a lot of fixes so that the application looks responsive enough on all the devices, from mobile to the Xbox 1. We polished this UI and fixed a few important regressions, notably on the playback and the thumbnailer.

The application is currently in private beta mode, so that the biggest issues are fixed before opening it up. :)

libbluray

We released a new version of libbluray, numbered 0.9.3

This release:

  • adds a bd_open_files() function, deprecating old global file system hooks;
  • adds flags for on-disc menu support to DISC_INFO,
  • improves Java building and Linux integration
  • enable UDF/ISO support by default,
  • improves BDJ_EVENT_CHAPTER, main title detection,
  • improve BD-J compability, and fixes numerous bugs on BD-J,
  • improves libaacs and libmmbd detection.
  • fixes a large number of bugs too long to describe here :)

That's all for those weeks! See you soon!

24 April 2016

This week in VideoLAN - 42

42nd week of VideoLAN reports

After a very busy week last week, here is another weekly report about VideoLAN and VLC development.

42

I'm surprised we're already at 42 and I haven't stopped doing it!

Sometimes, I'm not sure it's really useful, since I don't see many comments...

But lately, some people who don't comment on this blog told me, in real life, that I should continue, so here is a new report.

Features

VLC

Once again, we started the week with fixes for the WinRT/UWP build.

We got numerous small fixes for the Qt interface, notably for resizing issues of the main interface and in the preferences.

Marvin improved the Mac OS interface status-bar icon look and behavior.

François continued his work on the DVB scanning, notably splitting in a better way the DVB access from the TS demuxer module, which is a cleaner design.

VLC has also now gained the ability to auto-rotate the JPEG photos using the EXIF data.

Finally, a vlc_close function was introduced to be able to use posix_close instead of close when available.

Android

This week, we published version 1.9.8 of VLC for Android, adding notably subtitles download for local files, and media information on the Android TV version.
In this version, we pushed numerous fixes too, notably for repeat, metadata, resuming files and popup video support.

Then, the bindings for the keyboard and remote was changed too: left/right arrows seek, down arrow shows the controller, up arrow show the advanced options and center play/pause.

We also fixed numerous issues with RTL languages and layouts; and improved the code with more databinding.

iOS

On Tuesday, we pushed VLC 2.7.5 for iOS and VLC 1.0.4 for tvOS. Those release are mostly targeting improvements in SMB shares browsing.

Since then, we've readied VLC 2.7.6/1.0.5, focusing on improving the shares browsing, Dropbox, TouchID and the video filters.

WinRT

On WinRT, the week was quite busy.

We improved the speed and reliability of the libVLC core, notably so that we can use more features of the UWP platform and so we can have a stable 64bit build.

We also improved the interface, based on people's feedback on our screenshots, notably for the settings and the global navigation.

The video player was also re-themed and you can have PiP when browsing the application, if a video is still playing.

That's quite a bit for this week! Thanks a lot and see you next!

28 February 2016

This week in VideoLAN - 37

37th week of VideoLAN reports

Another week, another weekly report about VideoLAN and VLC development.

Yes, I'm still here, and code is still happening :)

Features

VLC

The week started by numerous patches cleaning the codebase. This is a trend we've seen a lot in VLC lately, and is a great sign.

Thomas removed a few weird JNI interdependencies between modules, libVLC and libVLCjni for Android. The modules do not depend anymore on code in the libVLCjni library.
Related to that, the way to get access to the JavaVM pointer inside VLC is now simpler, and the applications using libVLC does not need to pass it anymore explicitly.

We then got quite a few patches for the adaptive streaming module, to cleanup the connection process and possibly allow the connections to use VLC's core.

To continue the work of the previous weeks, we got a few changes on the keystore APIs:

  1. a new module was introduced for in-memory storage, so that the keys are valid during the same session,
  2. a new module named plaintext_file was introduced, disabled by default for obvious security reasons, since the storage is in plaintext,
  3. a new module named crypt_file was introduced, and should be usable when the system can store securely files,
  4. the crypto module was implement for Android 6.0 and later, where the data will be stored in the secure-zone, using Android Keystore System,
  5. and, of course, small fixes in the core and related modules for those APIs.

So, in practice, we're almost good, for storing passwords. We're just missing Windows and iOS.

We also got numerous fixes in the Qt module, notably to fix resizing issues and crashes in the customize dialog.
And the Qt module was renamed from qt4 to qt, since it's compatible with both Qt4 and Qt5.

We got a large patchset to fix crashes and security issues in the RealRTSP module (disabled by default). They were backported for 2.2.3.

The Windows green line issue on Direct3D was fixed and backported for 2.2.3, and hopefully, for good. :)

The TS demuxer had improvements for the EIT and the EPG, notably for now_playing information.

Finally, we got various improvements, notably for the duration of some MP4 files, and numerous fixes for leaks and buildsystem improvements.

Android

As we're preparing for Android 2.0.0, we've focused on adding the last missing features and bug fixing:

  • the libraries were split between libvlc and libvlcjni,
  • prepare the storage of users and passwords in the crypto store,
  • improvements for external displays handling,
  • improve the switch to video for some streams,
  • add a new video playlist icon,
  • fix playlist item duplication,
  • fix crashes FilePicker and parsing subdirectories
  • fix video lock control,
  • prepare for Appcompat 23.2,
  • we now pause onaudiofocus loss, instead of stopping the stream,
  • and finally JNI vout refactoring.

WinRT

The WinRT translations system was moved to a new version of the Multilingual Toolkit, which was one of the major remaining issue for the port to UWP.

We improved the UI, notably for album and artists views, the video player, activate mouse gestures and improve libVLCX in UWP mode.

libbluray

On libbluray, we've had improvements on the loading of libmmbd and libbdplus, which are incompatible between each other.

We've also had improvements on Xlet and BDLocator and minor fixes.

On libaacs, we've mostly seen fixes for Windows directories that contain non-ASCII paths.

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!

3 November 2015

This week in VideoLAN - 24

24th week of VideoLAN reports

The last few weeks were extremely busy, so here is the latest weekly report about VLC development, hoping it won't be too disappointing. :)

Features and changes

VLC

Qt

The week started with a workaround of a very problematic Qt5.5 regression. Qt5.5 is breaking 2 important behaviors of VLC: video and hotkeys.
One is a Qt regression that was introduced in Qt5.5 and one was probably an issue in VLC, but could also be an issue in the X server. We worked-around the latter. The former is still blocked by the Qt developers.

Adaptive streaming

The adaptive streaming module got a lot of changes, notably to better support byte-range requests, and to add timeline seeking. This was a preparation for some smooth streaming support.
And indeed, at the end of the week, the Smooth Streaming support was added to the adaptive module, deprecating the old smooth streaming module. We now have only one logic for HLS, Dash and Smooth.

Related to smooth streaming, our mp4 mux got support for VC-1 and WMAPro muxing; while the mp4 demux got support for WMAPro.
The mp4 demux also got support for some Youtube-specific metadata.

Core and modules

In the input core, the preparsing was moved inside a thread, to avoid getting VLC stucked at exit.

The audio output core was modified in regards to its thread-handling, notably when VLC is paused. This allowed to fix an important Alsa module issue, by reducing the locking scope.

We've added support for SoundCloud private tracks, fixed a Youtube issue when using HTTPS, fixed the vimeo quality (low-res was selected before).

Finally, we've added a new resampler module based on soxr. This module should provide better quality for less CPU than the current resamplers we have.

Miscellaneous

We also fixed:

  • the fact that VLC was not 100% fullscreen at the start (#2685),
  • a busy-loop in the input core,
  • some issues for Blu-Ray Java integration,
  • some Blu-Ray audio selection regression,
  • some Android video output issues with the subpictures,
  • some regressions in the video output when seeking,
  • some Qt dialog issues,
  • some lua 5.2 compatibility issues,
  • add we added support of the ttml file extension.

Android

A massive work this week was to about the Android permissions.

In the end, we:

  • removed the READ_PHONE_STATE permission from all builds for ALL Android versions, starting from Android 2.1,
  • removed the READ_LOGS permission from all releases. The logs feature will only work in debug builds and starting from Android 4.1.
  • removed the VIBRATE permissions from the TV builds.
  • removed the WRITE_SETTINGS permissions from the TV builds too.

This will be in the next release we do, probably 1.7.0.

We also prepared the app for Android 6.0:

  • ask WRITE_SETTINGS permission at runtime, when setting the audio ringtone.
  • ask READ and WRITE storage permissions at runtime, to read your media files. Without VLC is a bit useless, to be honest.

This will be activated when we do a release targeting the new SDK (too buggy at the moment).

We also rewrote the sidebar menu, fixed numerous crashes, and fixed some sorting issues in the audio view.

iOS

We first worked to finish the iOS 2.7.0 release, to fix a few remaining issues, and update translations.

The tvOS application development is accelerating fast.

We now have correct SMB, UPnP and Plex browsing, and support for the Cloud providers. The playback over HTTP, FTP and HTTPS works fine too.

We've improved the video player and added more animations, and we worked on the speed of the app.

DVD/Bluray

We've had numerous changes on libbluray, notably to fix some Java menu issues on the following Blu-Rays: Cabin in the Woods, The Grand Budapest Hotel, Birdman...

We've improved the Java security model in BDJThreadGroup.

Finally, we've added the class file manipulation functionality from the asm library. This will allow to fix the playback of Penguins of Madagascar.

We've also had fixes on libdvdcss for Android.

That's pretty good for this week! See you soon!