Video Encoding on Intel Atom Processor E38XX Series using Intel EMGD and GStreamer



Similar documents
Using GStreamer for hardware accelerated video decoding on Intel Atom Processor E6xx series

White Paper Amy Chong Yew Ee Online Sales Account Manager APAC Online Sales Center Intel Corporation. BOM Cost Reduction by Removing S3 State

Internal LVDS Dynamic Backlight Brightness Control

Intel Media SDK Features in Microsoft Windows 7* Multi- Monitor Configurations on 2 nd Generation Intel Core Processor-Based Platforms

Intel Media SDK Library Distribution and Dispatching Process

Intel Media Server Studio - Metrics Monitor (v1.1.0) Reference Manual

Power Benefits Using Intel Quick Sync Video H.264 Codec With Sorenson Squeeze

ARM* to Intel Atom Microarchitecture - A Migration Study

Software Solutions for Multi-Display Setups

Upgrading Intel AMT 5.0 drivers to Linux kernel v2.6.31

Customizing Boot Media for Linux* Direct Boot

Creating Full Screen Applications Across Multiple Displays in Extended Mode

Intel Embedded Virtualization Manager

Specification Update. January 2014

Inside Linux* graphics

Intel Media Server Studio Professional Edition for Windows* Server

Haswell Cryptographic Performance

Intel SSD 520 Series Specification Update

Hexadecimal Object File Format Specification

Intel Desktop Board DG31GL

2013 Intel Corporation

Whitepaper. NVIDIA Miracast Wireless Display Architecture

Introduction to PCI Express Positioning Information

21152 PCI-to-PCI Bridge

GStreamer on Texas Instruments OMAP35x Processors

Creating Overlay Networks Using Intel Ethernet Converged Network Adapters

Enabling new usage models for Intel Embedded Platforms

Displaying Stereoscopic 3D (S3D) with Intel HD Graphics Processors for Software Developers August 2011

Intel and Qihoo 360 Internet Portal Datacenter - Big Data Storage Optimization Case Study

Intel Core i5 processor 520E CPU Embedded Application Power Guideline Addendum January 2011

Intel 810 and 815 Chipset Family Dynamic Video Memory Technology

COLO: COarse-grain LOck-stepping Virtual Machine for Non-stop Service

Recovery BIOS Update Instructions for Intel Desktop Boards

Intel Storage System SSR212CC Enclosure Management Software Installation Guide For Red Hat* Enterprise Linux

Intel Solid-State Drive Pro 2500 Series Opal* Compatibility Guide

Processing Multiple Buffers in Parallel to Increase Performance on Intel Architecture Processors

Intel Platform and Big Data: Making big data work for you.

Running Windows 8 on top of Android with KVM. 21 October Zhi Wang, Jun Nakajima, Jack Ren

DUAL MONITOR DRIVER AND VBIOS UPDATE

Intel 845G/GL Chipset Dynamic Video Memory Technology

Intel Modular Server System MFSYS25

Improving OpenSSL* Performance

The MeeGo Multimedia Stack. Dr. Stefan Kost Nokia - The MeeGo Multimedia Stack - CELF Embedded Linux Conference Europe

Intel Platform Controller Hub EG20T

Intel Desktop Board DG965RY

Bandwidth Calculations for SA-1100 Processor LCD Displays

System Image Recovery* Training Foils

NVIDIA GeForce GTX 580 GPU Datasheet

Intel Server Board S3420GPRX Intel Server System SR1630GPRX Intel Server System SR1630HGPRX

LTE Control Plane on Intel Architecture

Intel architecture. Platform Basics. White Paper Todd Langley Systems Engineer/ Architect Intel Corporation. September 2010

Resetting USB drive using Windows Diskpart command

Revision History. Revision Revision History Date

AVR32701: AVR32AP7 USB Performance. 32-bit Microcontrollers. Application Note. Features. 1 Introduction

RAPID EMBEDDED LINUX* DEVELOPMENT

Intel Desktop Board DP55WB

Intel Cloud Builder Guide: Cloud Design and Deployment on Intel Platforms

with PKI Use Case Guide

Self Help Guides. Setup Exchange with Outlook

Quest vworkspace Virtual Desktop Extensions for Linux

Intel Identity Protection Technology (IPT)

Douglas Fisher Vice President General Manager, Software and Services Group Intel Corporation

Thin Mini-ITX Component Catalog Q3, 2012

Intel Desktop Board DG45ID. MLP Report. Motherboard Logo Program (MLP) 9/29/2009

Intel X38 Express Chipset Memory Technology and Configuration Guide

Measuring Cache and Memory Latency and CPU to Memory Bandwidth

Dell Statistica. Statistica Document Management System (SDMS) Requirements

Intel Server Board S3420GPV

LANDesk White Paper. LANDesk Management Suite for Lenovo Secure Managed Client

NVIDIA VIDEO ENCODER 5.0

Intel Service Assurance Administrator. Product Overview

Instructions for Recovery BIOS Update

Intel WiDi Remote 1.0 Release Notes

Intel Desktop Board D945GCPE

BIOS Update Release Notes

Intel Network Builders: Lanner and Intel Building the Best Network Security Platforms

Memory Sizing for Server Virtualization. White Paper Intel Information Technology Computer Manufacturing Server Virtualization

Riding silicon trends into our future

Windows Embedded Compact 7: RemoteFX and Remote Experience Thin Client Integration

System Event Log (SEL) Viewer User Guide

Intel Desktop Board DG41BI

The Case for Rack Scale Architecture

How to Configure Intel X520 Ethernet Server Adapter Based Virtual Functions on Citrix* XenServer 6.0*

EHCI Removal from 6 th Generation Intel Core Processor Family Platform Controller Hub (PCH)

Intel Desktop Board DG43RK

Intel Desktop Board DQ35JO

Intel Integrated Native Developer Experience (INDE): IDE Integration for Android*

SPC5-FLASHER. Flash management tool for SPC56xx family. Description. Features

Milestone Solution Partner IT Infrastructure Components Certification Summary

Intel System Event Log (SEL) Viewer Utility

Intel Desktop Board D945GCPE Specification Update

White Paper. ACPI Based Platform Communication Channel (PCC) Mechanism. InSarathy Jayakumar Intel Corporation

Intel Server S3200SHL

Version Rev. 1.0

Intel Desktop Board DG41TY

Intel Desktop Board DG31PR

Intel Desktop Board DQ965GF

COMPUTING. SharpStreamer Platform. 1U Video Transcode Acceleration Appliance

Intel Desktop Board DG41WV

Intel Q35/Q33, G35/G33/G31, P35/P31 Express Chipset Memory Technology and Configuration Guide

Transcription:

White Paper Lim Siew Hoon Graphics Software Engineer Intel Corporation Kumaran Kalaiyappan Graphics Software Engineer Intel Corporation Tay Boon Wooi Graphics Software Engineer Intel Corporation Video Encoding on Intel Atom Processor E38XX Series using Intel EMGD and GStreamer April, 2014 330523-001

Executive Summary Video encoding is a feature to compress raw data input into one of the compressed format for storage, transmission and transcoding purposes. This paper describes the support for hardware accelerated video encoding on Intel Embedded Media Graphics Driver (EMGD) utilizing GStreamer framework on Intel Atom Processor E38XX Series on Linux distributions. The Intel Embedded Design Center provides qualified developers with web-based access to technical resources. Access Intel Confidential design materials, step-by step guidance, application reference solutions, training, Intel s tool loaner program, and connect with an e-help desk and the embedded community. Design Fast. Design Smart. Get started today. http://www.intel.com/p/en_us/embedded. 2

Contents Introduction... 4 Hardware Accelerated Encode Support... 5 Software Stack... 6 Sample Commands... 8 Conclusion... 10 References... 10 3

Introduction Hardware accelerated video encoding is a significant feature for embedded market segments. This feature allows compression of raw video data from cameras and network to be compressed for storage and transmission. In addition, this feature together with the hardware accelerated video decode feature provides hardware accelerated transcoding capabilities. With hardware acceleration, it is possible to achieve full definition video compression capability with much less CPU usage. Intel Atom Processor E38XX Series supports hardware accelerated video encoding based on AVC (H.264) and MPEG2. This feature is supported by Intel EMGD on Linux utilizing the open source libva-intel-driver and gstreamer-vaapi software components. From an application point of view, the gstreamer-vaapi software components are provided as GStreamer plugins that plug into the GStreamer 1.0 framework. The usage of GStreamer 1.0 provides the advantage to use the various available open source GStreamer plugins. 4

Hardware Accelerated Encode Support Intel Atom Processor E38XX Series supports hardware accelerated video encoding based on AVC (H.264) and MPEG2. For H.264, the profiles supported are Constrained Baseline, Main and High profiles, 8 bit only up to Level 4.1 up to 40 Mbps bitstream. There is no support for Baseline, Extended, and High-10 Profiles. B frames are supported. For MPEG2, Main and Simple profiles are supported. 5

Software Stack The software stack at the application level is based on GStreamer 1.0. The usage of GStreamer provides the advantage and flexibility to use the dictionary of readily available GStreamer plugins. The plugins are provided by gstreamer-vaapi. This component provides encode, decode, display, and post processing plugins. These are open source components which the end user can modify according to their needs. The installation instructions and versions of the software components to use can be obtained from the user guide, Linux_UsersGuide.pdf located in: https://linuxlink.timesys.com/login/?timesys_redirect=/intel/linux/baytrail The gstreamer-vaapi plugins are available from: http://www.freedesktop.org/software/vaapi/releases/gstreamer-vaapi/ The gstreamer-vaapi utilizes the VA-APIs (Video Acceleration API) from: http://www.freedesktop.org/wiki/software/vaapi/ The user space video driver used is libva-intel-driver from: http://cgit.freedesktop.org/vaapi/intel-driver The kernel driver (drm) used is Intel EMGD from: https://linuxlink.timesys.com/login/?timesys_redirect=/intel/linux/baytrail The software stack for encoding from camera is as shown in figure 1 below. 6

Figure 1. Software stack for hardware accelerated video encode from camera The description of the key plug-ins used is as below: v4l2src is a GStreamer plugin to read data from the connected USB cameras. For files, this can be replaced by filesrc. vaapipostproc is a post processing plugin provided by gstreamer-vaapi that is used to convert the incoming raw data to NV12 tiled format (as the encode engine accepts only NV12 tiled formats) and load the data into a VA Surface. vaapiencode_h264 is the H.264 encode plugin provided by gstreamervaapi that is used to hardware accelerate the H.264 encode. For MPEG2, the plugin used is vaapiencode_mpeg2. 7

Sample Commands 1. Encode video from camera. MPEG2 encode: gst-launch-1.0 v4l2src device=/dev/video0 num-buffers=1800! video/x-raw,format= I420,width=640,height=480! vaapipostproc! queue! vaapiencode_mpeg2! mpegtsmux! filesink location=test2.mpg H264 encode: gst-launch-1.0 v4l2src device=/dev/video0 num-buffers=1800! video/x-raw,format= I420,width=640,height=480! vaapipostproc! queue! vaapiencode_h264! qtmux! filesink location=test2.mp4 2. Encode video from camera and display the incoming video. MPEG2 encode: gst-launch-1.0 v4l2src device=/dev/video0 num-buffers=1800! video/x-raw,format=i420, width=640, height=480, framerate=30/1! tee name=enc! queue! vaapipostproc! queue! vaapiencode_mpeg2! mpegtsmux! filesink location=test2.mpg enc.! queue! vaapisink H264 encode: gst-launch-1.0 v4l2src device=/dev/video0 num-buffers=1800! video/x-raw,format=i420, width=640, height=480, framerate=30/1! tee name=enc! queue! vaapipostproc! queue! vaapiencode_h264! qtmux! filesink location=test2.mp4 enc.! queue! vaapisink 3. Encode video from raw file. MPEG2 encode: gst-launch-1.0 filesrc blocksize=10000000 location=infile.yuv! videoparse format=i420 height=1080 width=1920 framerate=30/1! vaapipostproc! queue! vaapiencode_mpeg2! mpegtsmux! filesink location=test2.mpg H264 encode: gst-launch-1.0 filesrc blocksize=10000000 location=infile.yuv! videoparse format=i420 height=1080 width=1920 framerate=30/1! vaapipostproc! queue! vaapiencode_h264! qtmux! filesink location=test2.mp4 8

4. Encode video from raw file and display the video. H264 encode: gst-launch-1.0 filesrc block size=10000000 location=infile.yuv! videoparse format=i420 height=1080 width=1920 framerate=30/1! tee name=enc! vaapipostproc! queue! vaapiencode_h264! qtmux! filesink location=test2.mp4 enc.! queue! vaapisink 9

Conclusion This paper described how the hardware accelerated video encoding feature in the Intel Atom Processor E38XX Series can be exercised on Linux utilizing Intel EMGD, the open source libva-intel-driver, and gstreamer-vaapi software components. Additional features will be implemented in the future including the buffer sharing implementation between the camera and graphic component to encode without buffer copy. References 1. GStreamer: Open source multimedia framework, <http://gstreamer.freedesktop.org/> 2. Video Acceleration API, <http://freedesktop.org/wiki/software/vaapi> 3. Intel Embedded Media and Graphics Driver <https://linuxlink.timesys.com/login/?timesys_redirect=/intel/linux/ baytrail> 4. Intel OpenSource HD Graphics Programmer s Reference Manual (PRM) Volume 2 Part 3: Multi-Format Transcoder MFX (Ivy Bridge) <https://01.org/linuxgraphics/sites/default/files/documentation/ivb_ihd_ os_vol2_part3.pdf> 10

The Intel Embedded Design Center provides qualified developers with webbased access to technical resources. Access Intel Confidential design materials, step-by step guidance, application reference solutions, training, Intel s tool loaner program, and connect with an e-help desk and the embedded community. Design Fast. Design Smart. Get started today. http://www.intel.com/p/en_us/embedded. Authors Lim Siew Hoon is a Graphics Software Engineer at Intel Corporation. Kumaran Kalaiyappan is a Graphics Software Engineer at Intel Corporation. Tay Boon Wooi is a Graphics Software Engineer at Intel Corporation. Acronyms EMGD Intel Embedded Media Graphics Driver 11

INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL PRODUCTS. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT AS PROVIDED IN INTEL S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS, INTEL ASSUMES NO LIABILITY WHATSOEVER, AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR USE OF INTEL PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT. UNLESS OTHERWISE AGREED IN WRITING BY INTEL, THE INTEL PRODUCTS ARE NOT DESIGNED NOR INTENDED FOR ANY APPLICATION IN WHICH THE FAILURE OF THE INTEL PRODUCT COULD CREATE A SITUATION WHERE PERSONAL INJURY OR DEATH MAY OCCUR. Intel may make changes to specifications and product descriptions at any time, without notice. This paper is for informational purposes only. THIS DOCUMENT IS PROVIDED "AS IS" WITH NO WARRANTIES WHATSOEVER, INCLUDING ANY WARRANTY OF MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR ANY PARTICULAR PURPOSE, OR ANY WARRANTY OTHERWISE ARISING OUT OF ANY PROPOSAL, SPECIFICATION OR SAMPLE. Intel disclaims all liability, including liability for infringement of any proprietary rights, relating to use of information in this specification. No license, express or implied, by estoppel or otherwise, to any intellectual property rights is granted herein. Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and other countries. *Other names and brands may be claimed as the property of others. Copyright 2014 Intel Corporation. All rights reserved. 12