This tutorial will guide you through the installation of Intel® Media SDK 2014 for Clients on Windows and get you started with developing media applications using the SDK. For the latter, we will use Intel provided, pre-built sample applications as our example, and work our way through building and running them using the SDK.
Here is a 5 minute demo that will walk you through the process. Alternately, following the demo is a step-by-step tutorial that will guide you through the installation and how-to-get-started process. Let's get started!
Intel® Media SDK is an easy-to-use, cross-platform application programming interface for developing media applications. This SDK can be used to develop and optimize media applications for Intel' fixed function hardware acceleration. You can find more details about Intel® MediaSDK and its use-cases here.
Before you begin the installation process, please note the platforms supported by Intel® Media SDK:
HW - Platforms with 2nd, 3rd and 4th generation Intel Core processors that have Intel HD Graphics or higher.
HW - Tablets with Intel Atom processors, codenamed “Clovertrail”.
SW - Windows 7 and 8/8.1 operating systems (32-bit and 64-bit and Windows 8 ModernUI)
Now let’s begin the installation process. Start by clicking on the Download button on the Intel® Media SDK webpage. The download manager downloads a compressed zip file for the SDK. Decompress the file to view the Media SDK install folder (as shown). Please double-click on IntelMediaSDK_2014R2Clients.exe file to start the installation process (highlighted in blue).
The download process is straightforward and has three major stages (as shown below). The installer should set the environment variables automatically, but a reboot may be required (optional fourth stage).
After the “Installation Successful” message pops, ensure the INTELMEDIASDKROOT variable is set. If the variable is not set, REBOOT the system and re-check the variable. You can check the variable by typing the following command on the Command window:
C:\> echo %INTELMEDIASDKROOT% C:\Program Files\Intel\Media SDK 2014 R2 for Clients\
With this, you have successfully completed the installation process! You can view the Intel® Media SDK folder structure from the path you installed it in. The default path used by the installer is C:\Program Files\Intel\Media SDK 2014 R2 for Clients
The doc folder will come in handy as you are getting started with the SDK. This folder contains multiple user manuals such as API manual, dispatch and distribution manual, JPEG and MVC reference manual. The “bin” folder contains the SDK .dll libaries, while “lib” contains the .lib versions of the same, and the “include” folder contains the header files for the SDK library. The “samples” folder contains the link to Intel provided samples. We will discuss them in the next session.
The installation of the Intel® Media SDK for Servers is very similar to the Client version. There are a few differences in the SDK package:
- The server installer package bundles the Windows Graphics driver along with the SDK.
- The server package is not intended to supply all components for software development. Developers are encouraged to develop and test on the Client SDK and deploy on the Server SDK.
- Server installs include a driver. While the client version assumes the graphics driver will be updated frequently by regular update mechanisms, server scenarios often prefer to extensively validate one configuration without automatic changes.
Now that we are done with the installation part, let us go ahead and see how to use the SDK to build and run media applications. To ease your introduction, Intel® provides some pre-built sample applications that use the Intel® Media SDK framework to perform media operations. These samples are a great introduction to how-to-use the SDK.
The samples are simple examples that are meant to serve as pointers for how to develop applications using the SDK. They are neither complete media applications nor do they explore the various capabilities provided by the SDK. To that end, we choose basic operations such as encode, decode and transcode as our sample applications. Note that these samples, in their current implementation, are using the software implementation as default to process the video. When developing your own applications, we highly encourage you to choose hardware-accelerated implementation, with software as the fall back option. You can enforce that for the samples by adding "-hw" option to the input arguments.
The SDK exposes various media-related parameters (such as GOP, Rate control, Accuracy, MB size) to the developer, as well as allowing developers to collect performance and quality based information during the execution. You can find more information in the Intel® Media SDK docs/mediasdk-man.pdf file. Now, let’s get started with the samples!
In this session, we are going to show how to use Intel® Media SDK 2014 with the pre-built samples. You can find the pre-built samples that work with the SDK here. We will start with the Video Transcoding sample application for this session, which transcodes elementary video stream from one compressed format to another. Download link for the sample. (NOTE: Use Microsoft Visual Studio 2008 or higher as your IDE to build/execute the samples).
When the download completes, double click on the install file IntelMediaSDK_VideoTranscodingSample_5.0.461.91752.msi. You will be guided through a standard installation process. Once the installation is completed, you can view the sample installed at C:\Users\<username>\Documents\Intel Media SDK Samples\Video Transcoding Sample 5.0.461.91752
Set the INTELMEDIASDK_WINSDK_PATH by running the .bat file with the same name using the Command window or directly from the explorer window. Now, you are ready to work with the sample!
C:\Documents\Intel Media SDK Samples\Video Transcoding Sample 5.0.461.91752\> set_INTELMEDIASDK_WINSDK_PATH.bat C:\Documents\Intel Media SDK Samples\Video Transcoding Sample 5.0.461.91752\> echo %set_INTELMEDIASDK_WINSDK_PATH% C:\Program Files (x86)\Windows Kits\8.0
The Video Transcoding folder has multiple folders, such as sample_common, sample_utilities and sample_multi_trancode. Each folder contains its own visual studio project file along with the src/ folder. The former two folders contain project files for commonly-used files and VPP plugin, while the sample_multi_transcode contains the project and solution file for the sample. (The sample_multi_transcode is dependent on sample_common and sample_utilities).
In the sample_multi_transcode folder, open the solution file with the same name using Visual Studio. Note: If you have a newer version of Visual Studio, the solution will go through the “Conversion Wizard”. This is normal and should complete successfully. When the solution opens, you can browse through the Solution Explorer window to view the projects and their dependencies. Sample_multi_trancode project contains the main() function in sample_multi_transcode.cpp. We will now look at how to build and run the sample.
The Video Transcoding sample accepts video elementary file formats as input, which is the minimum requirement. Apart from that, one could specify many options such as dimensions, input and output format, frame rate and bit rate. You can find more information on all the available options and how to set them in the following document: <Video Transcoding Folder>/ sample_multi_transcode/readme_multi_transcode.rtf.
To make cases requiring many command line parameters simpler, a "par" (parameter) file can be used. This parameter file will contain all the required settings needed for the execution. Again, details on this feature can be found in <Video Transcoding Folder>/ sample_multi_transcode/readme_multi_transcode.rtf.
You can run the sample executable using Visual Studio or from Command window. For the former, you will set the command-line arguments in the "Command Arguments" window in the Debugging pane of the Properties option.
For command-line execution, here is an example (running on a 64-bit Windows).
VideoTranscoding_folder\_bin\x64>\sample_multi_transcode.exe -i::mpeg2 in.mpeg2 -o::h264 out.h264
Note: In the command above, we are running the sample using the software library implementation. You could enforce the samples to use the hardware implementation for execution, and use software as the fall back option by specifying the "-hw" option in the argument list. As a general practice, when developing your own applications, we highly encourage you to choose hardware-accelerated implementation as the default, with software as the fall back option for best results. You can find more details on how to do so in mediasdk-man document in the docs/ folder of the SDK.
Note: Build Error: If your build fails due to missing mfx header files, that likely means your INTELMEDIASDKROOT variable was not set after the Intel® Media SDK installation. Reboot the system to set the variable, check if it is set, and rebuild the solution. Done!
To test your samples, you will need video stream files as input. Here is one suggested website from where you can download Creative Commons licensed movie files. This website provides movie files in container formats. Since most of the Intel® Media SDK samples operate on video elementary streams, you will need to extract the video and audio elementary streams from the container (.mov, etc.) format. YAMB is an easy to use software tool that provides the feature (see the flow below).
To extract meta data about the video stream, you could use software tools such as MediaInfo.
In this session, we guided you through installing and developing with Intel® Media SDK. We encourage you to try the other samples available, and also go through the documentation and tutorials provided for further assistance. You can find more information here and use the forums to post and participate in discussions related to the SDK.
Suggested future steps:
Intel® SDK for OpenCL™ Applications for further optimizing your applications.
Intel® INDE is a beta release of a cross-platform productivity suite to quickly & easily create applications targeting Android* and Windows* devices.
Product and Performance Information
Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.