Blu-ray On Linux

Blu-ray movies are playable on Linux right now, but there is no
broad support, some movies will lack audio support, and a lot of manual intervention
is required. If there is Digital Rights Management on the Blu-ray disc, the end-user
must install a utility to dump and decrypt the high-definition files, manually
input the DRM AACS key, and take other steps to watch a legally purchased movie.
When it comes to FFmpeg support, Blu-ray discs using DTS-HD MA for their audio
format do not work. A few months back there was some code proposed to the FFmpeg
project that would partially address this problem, but FFmpeg developers rejected
the code. Neither Diego, Baptiste, nor Robert have a Blu-ray drive, so at this
point they have no personal interest in Blu-ray support. Diego reiterated
they are interested in supporting "every format under the Sun and thus certainly
Blu-ray," but their bar to accept patches is quite high and they will only
reject patches if there are technical issues. All three of the developers though
agree that Blu-ray support will appear in FFmpeg, but are unsure of when there
will be proper support.

OpenCL & GPGPU Computing

After talking about Blu-ray, the discussion turned to another
new standard: OpenCL.
The Open Computing Language is an emerging C99-based industry standard for parallel
programming and particularly targeting GPGPU computing. NVIDIA, ATI/AMD, and Intel
are all working on making their graphics cards and drivers compatible with OpenCL
that will transform their graphics processors into powerful processors exposed
to OpenCL code. With GPGPU support via OpenCL, audio/video encoding could be done
much faster by leveraging a modern graphics processor. At this time, however,
they are unaware of any developers working on such support. Robert noted though
that OpenCL and CUDA (NVIDIA's Compute
Unified Device Architecture) are interesting and hold potential.

The developers have not been contacted
by AMD regarding their forthcoming XvBA
(X-Video Bitstream Acceleration)
video API, but they hope to see support for it within FFmpeg not too long after
the drivers land in the wild. FFmpeg developers have also been developing a new hardware acceleration API
that eventually will make it easier to integrate support for new acceleration interfaces like XvBA.

Multi-Threading

Discussing GPUs and improving FFmpeg's performance then lead to
a brief conversation about ffmpeg-mt, which is a frame-level multi-process decoding
branch of FFmpeg that provides significantly better performance on multi-core
systems. This frame-level multi-threaded decoding is similar to what is done by the CoreAVC decoder. The maintainer of ffmpeg-mt does not have this branch up-to-date constantly, but
Robert Swain may eventually be working on this branch through his work at the Finnish-based
Open Source Partners Oy.

The results from ffmpeg-mt are very promising, but it
touches a lot of the core FFmpeg code and the developers are concerned it could
decrease the performance on single-threaded systems. The multi-threaded enhancements will eventually help
with MJPEG, MPEG-1, MPEG-2, MPEG-4, MPEG-4 Part 2, MPEG-4 Part 10 (H.264), and most other macroblock-based codecs.

The ffmpeg-mt branch could
be polished and updated within months, but the simple review process could also
take months. Diego Biurrun felt that this multi-threaded version of FFmpeg may
still be years away.

The mission at Phoronix since 2004 has centered around enriching the Linux hardware experience. In addition to supporting our site through advertisements, you can help by subscribing to Phoronix Premium. You can also use our Amazon.com shopping link when making online purchases or contribute to Phoronix through a PayPal tip or Bitcoin.