Intel® Media Server Studio Support

Code Samples

Intel® Media Server Studio offers many code examples through two packages to get you started:

  • The sample package is a collection of code examples that showcase new and important media features of the latest APIs, and are optimized to measure performance on the underlying hardware. For more details, see the sample guide for Linux*.
  • The tutorial package provides step-by-step guides to learn basic media features and understand the pipeline. It is geared toward beginning users

For customer examples and use cases, see Case Studies.

Download Code Sample Packages

Download Tutorial Packages

Tool Code Samples

Intel® SDK for OpenCL™ Applications


Application Samples

Sample applications demonstrate how to incorporate the Intel Media Server Studio API into various applications. These examples showcase many new and important features available in new releases.

Transcoding Sample
sample_multi_transcode performs transcoding of single to multiple elementary video stream from one compressed format to another.

Encoding Sample
sample_encode performs encoding of raw video frames into elementary compressed stream (including HEVC encode plug-in from the HEVC pack in Intel Media Server).

Decoding Sample
sample_decode performs decoding of elementary compressed video stream to raw frames (including the HEVC decode and VP8 decode plug-in from the plug-in pack in Intel Media Server) and sample_decvpp performs decoding with video processing (color conversion) of raw video sequences.

Video Processing Sample
sample_vpp performs various video processing algorithms on raw frames such as denoising, deinterlace, inverse telecine, and color conversion.

OpenCL Standard Video Motion Estimation Sample
ocl_motion_estimation provides step-by-step guidelines on using Intel’s motion estimation extension for the OpenCL standard. The motion estimation extension includes a set of host-callable functions for frame-based VME.

OpenCL Standard Interoperability Sample
ocl_media_sdk_interop demonstrates how to use Intel Media Server Studio SDK and Intel® SDK for OpenCL™ standard together for efficient video decoding and fast post-processing.

Deprecated Samples

Full Transcoding
Sample_full_transcode performs full-scale transcoding of media files. It allows changing container formats, and video and audio compression formats. It also shows usage of new splitters and a muxers sample using FFmpeg, and the audio library.

Video Conferencing
sample_videoconf performs encoding of raw frames into an elementary compressed stream. It shows various encoding features specific to a video conferencing use case.

Transcoding Sample Using Microsoft DirectShow*
sample_dshow_plugins demonstrates how to use the Intel Media SDK with Microsoft DirectShow filters to compress and decompress video files. sample_dshow_player demonstrates how to use the SDK and sample Microsoft DirectShow filters to play and transcode media files (streams).

Transcoding Sample Using Microsoft Media Foundation
sample_mfoundation_transcode demonstrates how to use the Microsoft Media Foundation framework to transcode media files (streams) in a Windows Presentation Foundation (WPF) application.

Transcoding Sample Using the Windows 8 User Interface
sample_win8ui_transcode demonstrates how to use the API of H.264 video encoder (a Microsoft Media Foundation transform) to transcode a video file to a configurable format in Windows 8.


Tutorials

These materials are geared towards beginners by providing simple code examples for basic media features and code examples to start working with the Intel Media Server Studio SDK. All code examples come with Microsoft Visual Studio* solution files ( Windows) and Makefile (Linux) to get you started.

Set Up
simple_1_session
Sets up an Intel Media Server Studio SDK session and perform queries to determine selected implementation and which API version is used.

simple_7_codec
Checks the runtime codec support on the current platform and iterates all supported codes (on each codec) for configuring, querying, and reporting

Decode
simple_2_decode
Decodes an AVC stream into a .yuv file using system memory surfaces, showcasing a simple synchronous decode pipeline flow.

simple_2_decode_vmem
Adds the use of video memory surfaces for improved decode performance.

simple_2_decode_ffmpeg
By integrating the demux function of FFmpeg, this example decodes an AVC stream from an mp4 container into a .yuv file using system memory surfaces, showcasing a simple synchronous decode pipeline flow.

simple_2_decode_hevc10
Decodes an HEVC stream with 10-bit depth into a .yuv file using system memory surfaces, showcasing a simple synchronous decode pipeline flow.

Encode
simple_3_encode
Encodes .yuv frames from a file into an AVC stream using surfaces in system memory, showcasing a simple synchronous encode pipeline flow.

simple_3_encode_vmem
Adds use of video memory surfaces for improved encode performance.

simple_3_encode_vmem_async
Adds asynchronous operation to the previous example, resulting in further improved performance.

simple_3_encode_ffmpeg
By integrating the mux function of FFmpeg, this example encodes .yuv frames from a file into an mp4 container with the AVC stream using surfaces in system memory, showcasing a simple synchronous encode pipeline flow.

simple_3_encode_hevc10
Encodes .yuv frames with 10-bit color depth from a file into an HEVC stream using surfaces in system memory, showcasing a simple synchronous encode pipeline flow.

Transcode
simple_5_transcode
Transcodes (decode and encode) an AVC stream to another AVC stream using system memory surfaces.

simple_5_transcode_opaque
Same as the previous sample, but uses the Intel Media Server Studio SDK opaque memory feature. The opaque memory type hides surface allocation specifics and allows the SDK to select the best type for execution in hardware or software.

simple_5_transcode_opaque_async
Adds an asynchronous operation to the transcode pipeline implementation, resulting in further improved performance.

simple_5_transcode_vmem
Same as the simple_5_transcode sample but instead uses video memory surfaces. While opaque surfaces use video memory internally, application-level video memory allocation is required to integrate components not in Intel Media SDK.

simple_5_transcode_opaque_async_vppresize
Same as the simple_5_transcode_opaque - async sample but the pipeline includes a video frame processing (VPP) resize.

Video Processing and More
simple_4_vpp_resize_denoise
Showcases VPP using system memory surfaces. Highlights frame resize and denoise filter processing.

simple_4_vpp_resize_denoise_vmem
Adds use of video memory surfaces for improved VPP performance.

simple_6_decode_vpp_postproc
Similar to the simple_2_decode sample while adding VPP post-processing capabilities to showcase resize and ProcAmp

simple_6_encode_vmem_lowlatency
Similar to the simple_3_encode_vmem sample, this has additional code to illustrate how to configure an encode pipeline for low latency and how to measure latency.

simple_6_transcode_opaque_lowlatency
Similar to the simple_5_transcode_opaque sample, this has additional code to illustrate how to configure a transcode pipeline for low latency and how to measure latency.

simple_6_encode_vmem_vpp_preproc
This is similar the simple_3_encode_vmem sample but adds a VPP pre-processing capabilities to show frame color conversion from RGB32(4) to NV12.