1. Computers
  2. Display Drivers
  3. Graphics Cards
  4. Memory
  5. Motherboards
  6. Processors
  7. Software
  8. Storage
  9. Operating Systems


Facebook RSS Twitter Twitter Google Plus


Phoronix Test Suite

OpenBenchmarking Benchmarking Platform
Phoromatic Test Orchestration

An Interview With The Developers Of FFmpeg

Michael Larabel

Published on 11 March 2009
Written by Michael Larabel
Page 2 of 3 - 15 Comments

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.

VDPAU, VA-API, & XvBA

While on the subject of GPU support in FFmpeg, Baptiste reiterated that VDPAU support was recently added and VA-API support is currently being integrated. The Video Decode and Presentation API for Unix was created by NVIDIA for their graphics driver (though Intel may implement VDPAU support) and it allows much of the GPU encoding and video playback work to be offloaded to the GPU. In our tests we have found that we can even play HD videos on a $20 CPU and $30 GPU using this technology.

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.

Latest Articles & Reviews
  1. Trying Out The Modern Linux Desktops With 4 Monitors + AMD/NVIDIA Graphics
  2. Turning A Basement Into A Big Linux Server Room
  3. NVIDIA's $1000+ GeForce GTX TITAN X Delivers Maximum Linux Performance
  4. OS X 10.10 vs. Ubuntu 15.04 vs. Fedora 21 Tests: Linux Sweeps The Board
  5. The New Place Where Linux Code Is Constantly Being Benchmarked
  6. 18-GPU NVIDIA/AMD Linux Comparison Of BioShock: Infinite
Latest Linux News
  1. GNOME 3.16 SDK Runtime Now Available
  2. Initial Intel Braxton Support Might Come To Linux 4.1
  3. Why KDE's KWin Doesn't Integrate Weston/QtCompositor For Wayland Support
  4. Clang Now Supports Targeting The NaCl OS
  5. PC-BSD Updates Its Lumina Desktop (v0.8.3)
  6. Fedora 22 Alpha Now Available For AArch64 & PowerPC64
  7. Systemd Developers Did NOT Fork The Linux Kernel
  8. PulseAudio 7.0 To Enable LFE Remixing By Default
  9. Features & Changes Coming For Mir 0.13
  10. How Far Valve Has Come: Three Years Ago They Needed OpenGL Linux Help
Most Viewed News This Week
  1. Introducing The Library Operating System For Linux
  2. Improved OpenCL Support For Blender's Cycles Renderer
  3. Allwinner Continues Jerking Around The Open-Source Community
  4. Open-Source Driver Fans Will Love NVIDIA's New OpenGL Demo
  5. GNOME 3.16 Released: It's Their Best Release Yet
  6. Systemd Change Allows For Stateless Systems With Tmpfs
  7. Ubuntu 15.04 Final Beta Released
  8. Nuclide: Facebook's New Unified IDE