VLC 1.2 on Linux

VLC media player version 1.2.0 is getting ready. The code freeze has been ongoing for a few weeks, and the first test version should be out in a matter of days. I would like to use this as an opportunity to review the Linux port news.

Audio

After many years, the long overdue revamp of the audio output subsystem has been started. On the (cross-platform) core, this means a number of bugs, race conditions and crashes have been fixed. Also, two new resampler options have been added:

They should provide much better quality than appropriately called "ugly" built-in resampler (nearest-neighbor algorithm) and the buggy band-limited one.

ALSA

The ALSA audio output now sports a proper device list. Also, buffer management was greatly improved, which reduce the risk of buffer underruns. It also enables the better support for devices with large buffers such as some HDA chips. And inspite of this, the ALSA output requires less memory than it did in VLC 1.1.x and earlier versions.

On the input side, Jean-Paul Saman has added support for alternate sample formats (besides S16N), thus enabling support for new cards. And the Qt4 UI capture dialog finally shows the list of devices to select the input slightly more easily.

PulseAudio

The PulseAudio output plug-in was more-or-less rewritten from scratch, as it suffered from a fatal by-design bug. It now has proper time synchronization (backported in VLC 1.1.12).

On the features side, volume management is integrated with PulseAudio, audio device selection was added. With PulseAudio version 1.0, VLC will now negotiate as was S/PDIF digital passthrough automatically (backported in VLC 1.1.12 too).

Native support for PulseAudio input (i.e. source output) is now integrated. The list of available sources is also included in the audio capture panel of the playlist where available.
Besides recording from audio input devices, the native PulseAudio input can also record "monitors". In other words, you can now record the sound that is generated by running applications (without analog whole).

Open Sound System (OSS)

There is actually not much new with regards to OSS. At least, latency and lip synchronization was corrected a little bit. But the OSS plug-in has not (yet) been adapted to the new VLC audio output interface, contrary to ALSA and PulseAudio, due to lack of time (neither was the JACK output plug-in).

The fact that OSS is now disabled by default is perhaps the biggest change. Indeed, OSS was removed from most Linux distributions already.

Video

Screen capture

Following up on the upgrade from Xlib to XCB in VLC 1.1.0, the screen grabber mode can now follow a particular window/application, and uses compositing so that recording can continue even if the window is partly obscured.

OpenGL

Our great video guru Laurent Aimar has added support for YCbCr (YUV) color space with OpenGL, and 9-bits and 10-bits high-resolution video decoding for capable graphical adapters (this applies to VLC for Windows too by the way).

EGL (experimental)

There is now an experimental output plug-in using OpenGL through EGL. It is not quite ready for production use though. I hope this will be readied by VLC 1.3.0 and followed by Wayland integration. However, VLC development is currently a free time activity for me, so I cannot make promises there.

Video4Linux

New standard controls have been added, and a number of bugs fixed in the V4L2 capture input plug-in. Support for V4L vesion 1 was finally dropped for good, consistently with its removal from the Linux kernel.

Performance improvements that I had planned have been postponed, hopefully to VLC 1.3, due to lack of time (or rather the short notice to the code freeze :o).

Shared memory

An input for shared memory segment has been added. Among other specialized use, it can capture video frames from the X virtual framebuffer (Xvfb).

Television

Digital TV

The Linux-DVB source plug-in too was rewritten, in order to leverage the so-called S2API. That brings support for DVB-S2, DVB-T2 and ISDB-T transponders, in addition to the already support DVB-S, DVB-C, DVB-T and ATSC standards.
The digital TV capture dialog was also improved, though it still leaves much to be desired. I keep my fingers-crossed that we can clean up the frequency scanner code in the next VLC version.

Serial Digital Interface (SDI)

For professional video, VLC can now record or stream from SDI. Steinar Gunderson contributed a capture plug-in for Decklink SDI cards, while Christophe Massiot brought support for Linsys SDI and HD-SDI inputs.

Last words

I hope this dispels the misconception that Linux would be under-prioritized by the VLC development team. In fact, I believe Linux is the platform best supported by VLC at the moment, especially in terms of the features set.

Obviously though, VLC remains a project mostly run by volunteers, so bugs cannot always be dealt with in the most timely fashion (if at all). Also, some distributions do a better job than other at packaging VLC, or its many underlying libraries. Thus help would be as welcome as always.