Subsections


The HD-VideoBench Applications and Input Sequences

Table II: Summary of HD-VideoBench applications
Application Description
libmpeg2 MPEG-2 video decoding
ffmpeg-mpeg2 MPEG-2 video coding
Xvid MPEG-4 video decoding
Xvid MPEG-4 video coding
ffmpeg-h264 H.264/AVC video decoding
x264 H.264/AVC video coding

In this section, a description of the applications included in HD-VideoBench is provided. Also a description of the reference implementations of the video standards is included for comparison purposes. Table II shows a summary of the HD-VideoBench applications.

MPEG-2 Applications

MSSG: MPEG Software Simulation Group

The MPEG-2 Reference Video Codec [15] (mpeg2encode and mpeg2decode) is a widely MPEG-2 Codec used for benchmarking. Nevertheless, it was designed for the verification of the standard, but not for high performance. Because of that, we have not included it in HD-VideoBench.

FFmpeg MPEG-2 Encoder

FFmpeg [16] is a free solution to record, convert and stream audio and video. It includes libavcodec, a very complete audio/video Codec library that is capable of encoding and decoding streams in many audio and video Codecs. FFmpeg is portable across a wide range of architectures and operating systems. It is optimized for high performance with fast algorithms and SIMD extensions for X86 and PowerPC architectures. It is a widely used library for video and audio coding/decoding/transcoding in many free software projects like MPlayer, Xine, VideoLAN, transcode, GStreamer and others.

As a part of the FFmpeg libavcodec library, there is a very fast MPEG-2 encoder which includes SIMD optimizations for MMX/SSE and Altivec SIMD extensions, and provides very fast algorithms for motion estimation.

Libmpeg2

Although FFmpeg includes a MPEG-2 decoder, there is another library called Libmpeg2 [17] that is faster than the FFmpeg implementation. Libmpeg2 is a free library for decoding MPEG-2 and MPEG-1 video streams. It is highly optimized for high performance and include SIMD optimization of the motion compensation and inverse cosine transform routines for the MMX, Altivec and VIS extensions. It has been ported to x86, PowerPC, SPARC, ARM and SH4, and it should be easy to port to other architectures. Due to its high performance, Libmpeg2 is a very popular Codec used in many free multimedia players, such as MPlayer, Xine and VideoLAN.

MPEG-4 benchmarks

Reference code

An ISO reference code of the MPEG-4 video coding standard exists, but it is not convenient for benchmarking due to the same performance reasons mentioned before for other reference implementations.

Xvid

Xvid [18] is a free implementation of the MPEG-4 video coding standard. Xvid supports the MPEG-4 Advanced Simple Profile (ASP). It has algorithmic optimizations for motion estimation and SIMD optimizations of the most complex kernels. FFmpeg also includes a MPEG-4 encoder that has a similar performance than Xvid, but Xvid provides a higher coding efficiency. Because of the standard compliance, the high performance and high coding efficiency, Xvid is part of multimedia benchmarks like EEMBC and Berkeley Multimedia Workload, and it is widely used in free multimedia players and transcoder applications.

H264 benchmarks

JM Reference Codec

Joint Model (JM) [19] is the official reference encoder and decoder of the H.264/AVC standardization bodies. It implements all the features of the standard (all profiles and levels), but it is designed for describing and verifying the standard, and it exhibits very low performance; in fact, it is at least one order of magnitude slower than other implementations of the standard [20]. Although being included in Mediabench II, it is not recommended for computer architecture or compiler evaluations.

X264 encoder

x264 [21] is a free H.264/AVC encoder. It implements most of the standard features of the Main and High profiles including CABAC entropy coding, variable block size for I, P and B frames, B frames as references, multiple reference frames, 8x8 and 4x4 adaptive spatial transforms, etc. It has a lot of algorithmic optimizations for motion estimation, SIMD optimizations using MMX/SSE and Altivec extensions, and allows parallel encoding at slice and frame levels. It is widely used in free encoding applications like MEncoder, GordianKnot and VideoLAN.

FFmpeg H.264 decoder

FFmpeg includes a H.264/AVC decoder that implements most of the features of the main and high profiles of the standard. The code is very optimized and include MMX/SSE and Altivec SIMD instructions for the most time consuming kernels. It is widely used in free multimedia players like MPlayer, VideoLAN, Xine and others.

Mauricio Alvarez 2007-04-17