Download Source Code Package
The complete tutorial sample code package can be downloaded here. Observe the licensing terms that are displayed before the package download link is provided. The licensing terms match the samples that are part of Intel® Media SDK 2013. Each tutorial sample is described in the Tutorial samples index . For further details, please refer to the in-line comments in the source code.
News flash:
Tutorial samples updated on 18 April, 2013. New samples package includes several bug fixes and also adds a new set of samples showcasing how to efficiently use OpenCL* for frame processng with Intel Media SDK.
Introduction
The Intel® Media Software Development Kit (Intel® Media SDK) is a software development library that exposes the media acceleration capabilities of Intel® architecture-based platforms for video decoding, video encoding, and video pre/post processing (VPP). Intel Media SDK helps developers rapidly write software that accesses hardware acceleration for video codecs with automatic fallback on software if hardware acceleration is not available. Intel Media SDK is available free of charge and can be downloaded here: www.intel.com/software/mediasdk/
This article is a quick-start tutorial that helps developers get the most traction in the shortest amount of time. It shows you how to use Intel Media SDK by walking you step-by-step through use case examples from simple to increasingly more complex usages. By understanding key Intel Media SDK use cases, including integration with popular external components, you’ll be up and coding in no time.
The tutorial is divided into six parts:
- Section 1 introduces the Intel Media SDK session concept via a very simple sample
- Sections 2-4 illustrates how to utilize the three core SDK components: Encode, Decode and VPP (video pre/post processing)
- Section 5 showcases transcode workloads, utilizing the components described in earlier sections
- Section 6 showcases more advanced and compound usages of the SDK
- Section 7 showcases how to integrate OpenCL processing into Intel Media SDK pipelines
For simplicity and uniformity the tutorial focuses on the H.264 (AVC) video codec. Other codecs are supported by Intel Media SDK and can be utilized in a similar way.
You can learn the basic usage and behavior of the SDK feature set by reading the detailed explanations embedded in the provided source code. Keep in mind that the tutorial samples are intended as a starting point for developers and cover the common usages and key aspects of the SDK, but for a deeper understanding of the SDK and specific parameters usages, please refer to the SDK reference manual and developer users guide, plus the much more comprehensive and dynamic set of samples that are packaged with the SDK.
All tutorial samples are self-contained in a single Microsoft Visual Studio* 2010 solution and project (unless otherwise noted). However, a few common code segments (located in the “common” folder) are tied to functions not directly related to Intel Media SDK functionality, such as read/write of bit streams and raw frames. The "common" folder also contains common code that implements Microsoft DirectX* device handling and D3D surface allocation. Some samples also requires installation of Microsoft Windows SDK*.
In addition to demonstrating how to implement common workloads using the SDK, the tutorial explains how to achieve optimal performance (applies to most of the use cases in tutorial sections 2 - 5). A step-by-step approach towards greater performance is illustrated in the samples via usage of D3D memory and asynchronous task management. We'll use Intel® Graphics Performance Analyzers (Intel® GPA) to show the difference in utilization/performance and highlight where the pipeline bottlenecks are.
Start navigating the tutorial content via the links below:
- Tutorial samples index - Provides an index and brief descriptions for all tutorial use cases
- Workload analysis and benchmarking - Explains the method used for benchmarking the samples to illustrate performance optimizations. This section also provides a benchmark summary for all the workloads analyzed.
- Analysis using Intel GPA tool - Shows you how to setup and configure Intel GPA to enable performance analysis of the tutorial workloads
The complete tutorial sample code package can be downloaded here. Observe the licensing terms that are displayed before the package download link is provided. The licensing terms match the samples that are part of Intel Media SDK 2013. Each tutorial sample is described in the Tutorial samples index . For further details, please refer to the in-line comments in the source code.
The tutorial samples were developed and tested using Intel Media SDK 2012 R3 and Intel Media SDK 2013. For questions, or to report issues with the tutorial samples presented in this article please use the Intel Media SDK Forum.
Note that input content such as AVC video streams and raw YUV video frames are not provided as part of the tutorial. Such content can be acquired from many sources on the web. One example is Big Buck Bunny. Oftentimes you need to extract the video elementary stream from a container such as "mp4" before using it as input to Intel Media SDK. Some suggestions on how to do this are explained in the Intel Media SDK Developer Guide document (part of the Intel Media SDK package). Raw YUV data (for input to Intel Media SDK encoder) can be generated using the tutorial decode samples or the Intel Media SDK decode sample.