In an era where battery-driven hand-held devices integrate a wide collection of sophisticated functionalities such as high-quality image/video shooting/recording as well as real-time voice/video chatting, improved multimedia features are considered to be a crown jewel that most technology vendors would like to possess. Efficient hardware and software architectures of digital video compression systems play a primary role in the enablement of many wide-spread applications such as transcoding, video editing, video conferencing, video streaming, as well as emerging technologies such as wireless display and cloud gaming.
VCE is AMD’s dedicated fixed-function H.264/AVC video coding engine. One of its primary advantages is that it allows offloading the huge video compression workload to such a co-processor, leaving most of the CPU cycles available for other types of processing. Besides, it exhibits the advantages that come with fixed-function hardware implementations such as the increased throughput and reduced power consumption. VCE consists of a microcontroller that controls the fixed function hardware blocks that execute various stages of the video encoding pipeline.
As shown in the following diagram, VCE resides in many AMD products. It exists in a wide set of discrete GPUs as well as APUs, ranging from high-end servers all the way down to low-end chips.
The following table provides a detailed description of the AMD products and the VCE version they are powered with:
|Radeon HD 7900 series/Radeon R9 280X dGPU||
First release: AVC – I,P and DEM
|Radeon HD 7800 series dGPU|
|Radeon R9 270X/270 dGPU|
|Radeon HD 7700 series/Radeon R7 250X dGPU|
|A10 – 58XX (and other variations) APU|
|A10 – 68XX APU|
|Radeon R9 290x/290 dGPU||SVC (temporal) + B-pictures + DEM improvements|
|Radeon R7 260X/260 dGPU|
|A10 – 7850K APU|
|A4-5350, A4-3850, or E1-2650 APU|
Main Use Cases
VCE may be used in a wide variety of use cases where high-throughput, low-power, and/or low delay video compression is desirable. A few examples of such use-cases would be fast-transcoding, real-time low-power video conferencing, real-time low-power wireless display, as well as server-side cloud-gaming solutions.
VCE is designed to meet the requirements of a wide spectrum of use cases. The capabilities of VCE are summarized below:
Up to 3x 1080p@~30fps per instance Low-power budget Multi-stream support – up to 16 streams Configurable speed/quality tradeoff Flexible/programmable to meet various use-cases
Display Encode Mode (DEM) – On AMD APUs and discrete GPUs there is a direct physical connection between the display controller and VCE known as DEM. This allows developers to do screen capture and video compression in one shot and is ideal for use in low latency applications such as wireless display.
Design Aspects of VCE
A number of factors have been considered in the design of VCE. VCE aims to provide the best compromise between bitrate and quality. The chip cost has been minimized by optimizing the area of the VCE block and by reducing the memory requirements. Throughput is an important factor to meet the requirements of some use-cases such as fast transcoding. It is needless to say that optimizing for power is a must-have for longer battery life webcam, wireless display, and other applications. VCE is also able to efficiently encode multiple streams and switch context between them efficiently. There is always the trade-off between error resiliency and latency represented in the added delay that accompanies IDR pictures. VCE handles this challenge efficiently by leveraging several video coding tools such as Intra Refresh and others. Besides, VCE has features that maximize the network bandwidth efficiency. It also has a programmable portion that provides a flexible means to meet the requirements of various use-cases.
Exposing VCE to the Outside World
Access to the Video Coding Engine is provided by the Media SDK, which is designed to handle a variety of use-cases and multimedia frameworks. Media SDK provides the following functionalities:
- AMF- DEM library for low latency video capture and encode
- H.264 HMFT Encoder for HW-accelerated video encoding by leveraging VCE through the Microsoft Media Foundation Platform.
Future releases of Media SDK will introduce various enhancements aiming at more usability, higher performance, and/or newer codecs. Developers creating applications for Windows 8/8.1 Store can access VCE via standard Microsoft APIs like MediaTranscoder.
Happy coding! – Ihab Amer and Khaled Mammou
Ihab Amer is a Principal Member of Technical Staff (PMTS) and Khaled Mammou is a Senior Member of Technical Staff (SMTS) at AMD. Their postings are their own opinions and may not represent AMD’s positions, strategies or opinions. Links to third party sites, and references to third party trademarks, are provided for convenience and illustrative purposes only. Unless explicitly stated, AMD is not responsible for the contents of such links, and no third party endorsement of AMD or any of its products is implied.