The Turing codec is an open-source software codec compliant with the HEVC standard and specifically designed for speed, flexibility, parallelisation and high coding efficiency.
The Turing codec was designed starting from a completely novel backbone to comply with the Main and Main10 profiles of HEVC, and has many desirable features for practical codecs such as very low memory consumption, advanced parallelisation schemes and fast encoding algorithms.
This paper presents a technical description of the Turing codec as well as a comparison of its performance with other similar encoders. The codec is capable of cutting the encoding complexity by an average 87% with respect to the HEVC reference implementation for an average coding penalty of 11% higher rates in compression efficiency at the same peak-signal-noise-ratio level.
The ITU-T Video Coding Experts Group (VCEG) and the ISO/IEC Moving Picture Experts Group (MPEG) combined their expertise to form the Joint Collaborative Team on Video Coding (JCT-VC), and finalised the first version of the H.265/High Efficiency Video Coding (HEVC) standard (1) in January 2013.
HEVC provides the same perceived video quality as its predecessor H.264/Advanced Video Coding (AVC) at considerably lower bitrates (the MPEG final verification tests report average bitrate reductions of up to 60% (2) when coding Ultra High Definition, UHD, content). HEVC specifies larger block sizes for prediction and transform, an additional in-loop filter, and new coding modes for intra- and inter-prediction.
This variety of options makes HEVC encoders potentially extremely complex. Therefore, in order to achieve low complexity requirements and improved coding efficiency, practical HEVC encoders should be carefully designed with tools to speed up the encoding as well as architectures that allow parallel processing, reduced memory consumption, and scale according to the available computational resources.
This paper introduces the Turing codec1, an open-source software HEVC encoder. The design of the codec has been mainly driven by the distribution of UHD content in 8 and 10 bits per component, 4:2:0 format and up to 60 frames per second (fps).
As such, particular attention was devoted to design the codec architecture so that the memory footprint is reduced, and many tools were developed specifically for the codec to reduce the complexity of highly demanding encoding stages. This paper continues with an overview of
the related background associated with open source HEVC encoders. The focus will then move to describe the main features, tools and architecture of the codec. After this description an evaluation of the compression performance and complexity will be performed and compared with other software HEVC open source codecs.
Many efforts are being spent towards the development of efficient HEVC software encoders. During the definition of HEVC, JCT-VC developed an open-source reference software encoder and decoder under the name of HEVC test Model (HM) (3). The HM encoder includes almost all the tools considered in HEVC, with the objective of providing a reference to be used during the development, implementation and testing of new coding algorithms and methods.
An HEVC encoder needs to select the optimal partitioning of a Coding Tree Unit (CTU) in Coding Units (CUs), the best prediction mode for each CU, and the optimal inter- or intra-prediction for each Prediction Unit (PU) (1). The HM reference software performs most of these decisions by means of brute-force searches where many options are tested, and the optimal configuration is selected in a Rate-Distortion (RD) sense.
As such, HM is optimised for efficiency, and requires too high computational complexity to be considered in practical scenarios. Nonetheless, HM is mentioned in this paper due to its completeness as an upper-bound benchmark in terms of efficiency.
In 2013, the x265 encoder project was launched with the goal of developing a fast and efficient HEVC software encoder, reproducing the successful development model of the x264 AVC encoder. The codec was developed using the HM software as a starting point, where the code functionalities and structure were heavily improved to increase performance and allow for various tools and enhancements. x265 includes many options desirable for a practical encoder implementation, such as parallel encoding, speed profiles, spatiotemporal prediction optimisations, etc.
A complete description of the encoder functionalities is out of the scope of this paper, but many details can be found on the project official website (5).