ARM Multimedia Users Guide

From Texas Instruments Wiki
Jump to: navigation, search

Content is no longer maintained and is being kept for reference only!


Return to the Sitara Linux Software Developer's Guide

TIBanner.png


Overview

Content is no longer maintained and is being kept for reference only!


Multimedia codecs on ARM based platforms could be optimised for better performance using the tightly coupled Neon co-processor. Neon architecture works with its own independent pipeline and register file. Neon technology is a 128 bit SIMD architecture extension for ARM Cortex-A series processors. It is designed to provide acceleration for multimedia applications.

Supported Platforms

  • AM37x
  • Beagleboard-xM
  • AM35x
  • AM335x EVM
  • AM437x GP EVM
  • AM57xx GP EVM

Multimedia on AM57xx Processor

On AM57xx processor, ARM offloads H.264, VC1, MPEG-4, MPEG-2 and MJPEG codecs processing to IVA-HD hardware accelerator. Please refer to AM57xx Multimedia Training guide to learn more on AM57xx multimedia capabilities, demos, software stack, gstreamer plugins and pipelines. Also refer to AM57xx Graphics Display Getting Started Guide to learn on AM57xx graphics software architecture, demos, tools and display applications.

Multimedia on Cortex-A8

Cortex-A8 Features and Benefits

  • Support ARM v7 with Advanced SIMD (NEON)
  • Support hierarchical cache memory
  • Up to 1 MB L2 cache
  • Up to 128-bit memory bandwidth
  • 13-stage pipeline and enhanced branch prediction engine
  • Dual-issue of instructions

Neon Features and Benefits

  • Independent HW block to support advanced SIMD instructions
  • Comprehensive instruction set with support of 8, 16 & 32-bit signed & unsigned data types
  • 256 byte register file (dual 32x64/16x128 view) with hybrid 32/64/128 bit modes
  • Large register files enables efficient data handling and minimizes access to memory, thus enhancing data throughput
  • Processor can sleep sooner which leads to an overall dynamic power saving
  • Independent 10-stage pipeline
  • Dual-issue of limited instruction pairs
  • Significant code size reduction

Neon support on opensource community

NEON is currently supported in the following Open Source projects.


  • ffmpeg/libav
    • LGPL media player used in many Linux distros
    • NEON Video: MPEG-4 ASP, H.264 (AVC), VC-1, VP3, Theora
    • NEON Audio: AAC, Vorbis, WMA
  • x264 –Google Summer Of Code 2009
    • GPL H.264 encoder –e.g. for video conferencing
  • Bluez –official Linux Bluetooth protocol stack
    • NEON sbc audio encoder
  • Pixman (part of cairo 2D graphics library)
    • Compositing/alpha blending
    • X.Org, Mozilla Firefox, fennec, & Webkit browsers
    • e.g. fbCompositeSolidMask_nx8x0565neon 8xfaster using NEON
  • Ubuntu 09.04 & 09.10 –fully supports NEON
    • NEON versions of critical shared-libraries
  • Android –NEON optimizations
    • Skia library, S32A_D565_Opaque 5xfaster using NEON
    • Available in Google Skia tree from 03-Aug-2009

For additional details, please refer the NEON - ARM website.

SDK Example Applications

This application can be executed by selecting the "Multimedia" icon at the top-level matrix.

NOTE

The very first GStreamer launch takes some time to initialize outputs or set up decoders.



main_screen.png



Codec portfolio

Processor SDK includes ARM based multimedia using opensource GPLv2+ FFmpeg/Libav codecs, the codec portfolio includes MPEG-4, H.264 for video in VGA/WQVGA/480p resolution and AAC codec for audio. Codec portforlio for Processor SDK on AM57xx device is listed here

The script file to launch multimedia demo detects the display enabled and accordingly decodes VGA or 480p video. In AM37x platform VGA clip is decoded when LCD is enabled and 480p is decoded when DVI out is enabled. Scripts in "Settings" menu can be used to switch between these two displays.

MPEG4 + AAC Decode

MPEG-4 + AAC Dec example application demonstrates use of MPEG-4 video and AAC audio codec as mentioned in the description page below.



mpeg4aac.png



The multimedia pipeline is constructed using gst-launch, GStreamer elements such as qtdemux is used for demuxing AV content. Parsers are elements with single source pad and can be used to cut streams into buffers, they do not modify the data otherwise.

gst-launch-0.10 filesrc location=$filename ! qtdemux name=demux demux.audio_00 ! queue ! ffdec_aac ! alsasink sync=false demux.video_00 ! queue ! ffdec_mpeg4 ! ffmpegcolorspace ! fbdevsink device=/dev/fb0

"filename" is defined based on the selected display device which could be LCD of DVI.

MPEG4 Decode

MPEG-4 decode example application demonstrates use of MPEG-4 video codec as mentioned in the description page below.

mpeg4.png



gst-launch-0.10 filesrc location=$filename ! mpeg4videoparse ! ffdec_mpeg4 ! ffmpegcolorspace ! fbdevsink device=/dev/fb0


H.264 Decode

H.264 decode example application demonstrates use of H.264 video codec as mentioned in the description page below.

h264.png



gst-launch-0.10 filesrc location=$filename ! h264parse ! ffdec_h264 ! ffmpegcolorspace ! fbdevsink device=/dev/fb0

AAC Decode

AAC decode example application demonstrates use of AAC video codec as mentioned in the description page below.

aac.png



gst-launch-0.10 filesrc location=$filename ! aacparse ! faad ! alsasink

Streaming

Audio/Video data can be streamed from a server using souphttpsrc. For example to stream audio content, if you set-up an apache server on your host machine you can stream the audio file HistoryOfTI.aac located in the files directory using the pipeline

gst-launch souphttpsrc location=http://<ip address>/files/HistoryOfTI.aac ! aacparse ! faad ! alsasink


Multimedia Peripheral Examples

Examples of how to use several different multimedia peripherals can be found on the ARM Multimedia Peripheral Examples page.


Performance and Benchmark

CPU and Memory load

The following results are obtained on AM37x EVM using pre-build SDK MLO, u-boot, kernel and file-system on a NFS set-up.

Audio/Video Codec CPU Frequency
(Hz)
 %MEM VGA 480p  
 
 %CPU  %CPU  
MPEG4 + AAC
VGA Clip: HistoryOfTIAV-VGA-r.mp4
Video: mpeg4, yuv420p, 360x640, 1326 kb/s, 24 fps
Audio: aac, 48000 Hz, stereo, s16, 69 kb/s
480p Clip: HistoryOfTIAV-480p.mp4
Video: mpeg4, yuv420p, 720x405, 1778 kb/s, 24 fps
Audio: aac, 48000 Hz, stereo, s16, 79 kb/s
1G 22 42 58  
800M 55 70  
600M 70 86  
300M 99 NA  
MPEG4
VGA Clip: HistoryOfTI-VGA-r.m4v
Video: mpeg4, yuv420p, 360x640, 24 fps
Audio: NA
480p Clip: HistoryOfTI-480p.m4v
Video: mpeg4, yuv420p, 720x405, 28 fps
Audio: NA
1G 15 35 56  
800M 44 68  
600M 54 88  
300M 99 NA  


H.264
VGA Clip: HistoryOfTI-VGA-r.264
Video: h264 (Main), yuv420p, 360x640, 29.97 fps
Audio: NA
480p Clip: HistoryOfTI-480p.264
Video: h264 (Main), yuv420p, 720x406, 29.97 fps
Audio: NA
1G 16 77 95  
800M 87 99  
600M 97 99  
300M 99 NA  
AAC
Clip: HistoryOfTI.aac
Video: NA
Audio: aac, 48000 Hz, stereo, s16, 76 kb/s
1G 10 8 Same as VGA  
800M 9  
600M 13  
300M 25  


The following results are obtained on an AM335X EVM (DDR2) and an AM335X Starter Kit (DDR3) using pre-built SDK MLO, u-boot, kernel and file-system on an SD Card setup.

Audio/Video Codec CPU Frequency DDR2   DDR3  
 %MEM WQVGA 480p WVGA    %MEM WQVGA 480p WVGA  
 %CPU  %CPU  %CPU    %CPU  %CPU  %CPU  
MPEG4 + AAC
WQVGA Clip: HistoryOfTIAV-WQVGA.mp4
Video: mpeg4, yuv420p, 480x272, 1326 kb/s, 24 fps
Audio: aac, 48000 Hz, stereo, s16, 69 kb/s
480p Clip: HistoryOfTIAV-480p.mp4
Video: mpeg4, yuv420p, 720x405, 1778 kb/s, 24 fps
Audio: aac, 48000 Hz, stereo, s16, 79 kb/s
WVGA Clip: HistoryOfTIAV-WVGA.mp4
Video: mpeg4, yuv420p, 800x450, 1326 kb/s, 24 fps
Audio: aac, 48000 Hz, stereo, s16, 69 kb/s
720M 23 44 86 91   22 41 73 80  
600M 52 98 97   49 88 87  
500M 58 97 97   61 97 96  
275M 95 NA NA   96 NA NA  
MPEG4
WQVGA Clip: HistoryOfTI-WQVGA.m4v
Video: mpeg4, yuv420p, 480x272, 24 fps
Audio: NA
480p Clip: HistoryOfTI-480p.m4v
Video: mpeg4, yuv420p, 720x405, 28 fps
Audio: NA
WVGA Clip: HistoryOfTI-WVGA.m4v
Video: mpeg4, yuv420p, 800x450, 24 fps
Audio: NA
720M 16 42 88 71   15 42 76 60  
600M 45 98 78   46 88 69  
500M 55 97 88   53 97 79  
275M 88 96 95   87 96 96  
H.264
WQVGA Clip: HistoryOfTI-WQVGA.264
Video: h264, yuv420p, 480x272, 29.97 fps
Audio: NA
480p Clip: HistoryOfTI-480p.264
Video: h264, yuv420p, 720x406, 29.97 fps
Audio: NA
WVGA Clip: HistoryOfTI-WVGA.264
Video: h264, yuv420p, 800x450, 29.97 fps
Audio: NA
720M 16 62 98 98   16 63 98 98  
600M 73 98 97   70 98 98  
500M 81 97 97   79 98 97  
275M 95 96 92   96 96 93  
AAC
Clip: HistoryOfTI.aac
Video: NA
Audio: aac, 48000 Hz, stereo, s16, 76 kb/s
720M 10 9 Same as VGA Same as VGA   10 2 Same as VGA Same as VGA  
600M 2   4  
500M 3   2  
275M 26   25  

oProfile

OProfile is a common profiling tool used on Linux platforms, a kernel driver and a user daemon is used to collect samples of data. This tool can be used to profile a huge variety of system-level statistics. Please refer OProfile for additional details.

Listed below are the profiling results of Mpeg4 + AAC in VGA resolution at 300MHz and 1GHz via NFS server. Profiling results are obtained from the serial terminal.

In order to profile the multimedia application kernel has to be compiled with oprofile enabled. Followed by this, opcontrol has to be enabled for the first time

root@am37x-evm:~# opcontrol --vmlinux=/boot/vmlinux-`uname -r`

Setopp power/clocks application can be used to scale the clock settings, the example below shows the settings for opp2, similarly clock can be set to 1GHz using the setopp1.sh application.

root@am37x-evm:~# setopp2.sh
Set to operating point 2: CPU = 300 MHz
-------------------------------------------------------------
Processor       : ARMv7 Processor rev 2 (v7l)
BogoMIPS        : 299.95
Features        : swp half thumb fastmult vfp edsp thumbee neon vfpv3
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x3
CPU part        : 0xc08
CPU revision    : 2

Hardware        : OMAP3 EVM
Revision        : 0020
Serial          : 0000000000000000

profiling can be calibrated by executing the following set of applications in the given sequence

root@am37x-evm:~# opcontrol --reset
root@am37x-evm:~# opcontrol --start
root@am37x-evm:~# runMpeg4AacDec.sh
root@am37x-evm:~# opcontrol –-stop
root@am37x-evm:~# opreport -l
root@am37x-evm:~# opreport

opcontrol is used to initiate the profiling and opreport to generate the profiling results

300MHz 1GHz
3732 53.7675 vmlinux-2.6.37
1291 18.5996 libgstffmpegcolorspace.so
831 11.9723 libavcodec.so.52.113.2
479 6.9010 libfaad.so.2.0.0
273 3.9332 libc-2.9.so
72 1.0373 libm-2.9.so
69 0.9941 libgstreamer-0.10.so.0.26.0
38 0.5475 libglib-2.0.so.0.2400.1
37 0.5331 ld-2.9.so
33 0.4754 libgobject-2.0.so.0.2400.1
16 0.2305 libgstbase-0.10.so.0.26.0
12 0.1729 libpthread-2.9.so
12 0.1729 libgstaudio-0.10.so.0.21.0
8 0.1153 libgstqtdemux.so
8 0.1153 libasound.so.2.0.0
6 0.0864 busybox
5 0.0720 libgstfbdevsink.so
5 0.0720 libgthread-2.0.so.0.2400.1
4 0.0576 libgstalsa.so
4 0.0576 libavutil.so.50.39.0
2 0.0288 oprofiled
2 0.0288 libgstcoreelements.so
1 0.0144 gst-launch-0.10
1 0.0144 libgstfaad.so
10157 89.4653 vmlinux-2.6.37
415 3.6554 libgstffmpegcolorspace.so
253 2.2285 libavcodec.so.52.113.2
241 2.1228 libc-2.9.so
142 1.2508 libfaad.so.2.0.0
22 0.1938 libgstreamer-0.10.so.0.26.0
18 0.1585 libm-2.9.so
17 0.1497 ld-2.9.so
15 0.1321 libgobject-2.0.so.0.2400.1
14 0.1233 libgstbase-0.10.so.0.26.0
13 0.1145 libglib-2.0.so.0.2400.1
10 0.0881 libpthread-2.9.so
6 0.0528 libgstffmpeg.so
4 0.0352 busybox
4 0.0352 libgstqtdemux.so
4 0.0352 libgstaudio-0.10.so.0.21.0
3 0.0264 libgstcoreelements.so
3 0.0264 libasound.so.2.0.0
3 0.0264 libavutil.so.50.39.0
3 0.0264 libgthread-2.0.so.0.2400.1
2 0.0176 oprofiled
2 0.0176 libgstfaad.so
2 0.0176 libgstfbdevsink.so

Power Benchmark

The power measurements below are analyzed on the AM3730 ES1.2 processor on a Rev.G. EVM. Here we indicate the power measurement after first boot, in suspend mode and with additional power features enabled.

The jumper settings for power measurements are:

J6 VDD_MPU_IVA
J5 VDD_CORE
J28 VDDS, VDDS_MEM, VDDS_WKUP_BG, VDDS_SRAM,POP (DDR and Flash)
J20 VDDS_DPLL_DLL, VDDS_DPLL_PER
Suspend Mode

The Suspend/Resume application in Power/Clocks SDK example application drives the system in suspend mode. The measurements below indicate total power consumption in suspend mode.

Jumper Pin No Register Value Voltage Drop [mV] Voltage [V] Current [mA] Power [mW]
J6 2 0.05 1.00 1.425 20.00 28.50
J5 2 0.1 1.00 1.241 10.00 12.41
J28 2 0.1 0.00 1.808 0.00 0.00
J20 1 0.1 1.00 1.803 10.00 18.03
Total           58.94
After Resume

After the system is resumed from sleep mode, when sleep_while_idle and enable_off_mode features are enabledr.

Jumper Pin No Register Value Voltage Drop [mV] Voltage [V] Current [mA] Power [mW]
J6 2 0.05 14.00 1.376 280.00 385.28
J5 2 0.1 11.00 1.317 110.00 144.87
J28 2 0.1 3.00 1.803 30.00 54.09
J20 1 0.1 2.00 1.795 20.00 35.90
Total           620.14
MPEG4 Decode

After the system resume with enhanced power save features enabled, the total power consumption for MPEG4 decode is as shown below.

Jumper Pin No Register Value Voltage Drop [mV] Voltage [V] Current [mA] Power [mW]
J6 2 0.05 17.00 1.349 340.00 458.66
J5 2 0.1 12.00 1.316 120.00 157.92
J28 2 0.1 4.00 1.800 40.00 72.00
J20 1 0.1 2.00 1.795 20.00 35.90
Total           724.48


MPEG4 Decode with Scaling Governor Enabled

These power measurements can be further optimized by setting the scaling governor feature to 'ondemand'. Here the power values are dynamically scaled at run time depending on the system level requirements. It can be enabled using sysfs, the resultant improvement in power values are as shown below.

echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
Jumper Pin No Register Value Voltage Drop [mV] Voltage [V] Current [mA] Power [mW]
J6 2 0.05 10.75 1.376 215.00 295.84
J5 2 0.1 12.00 1.317 120.00 158.04
J28 2 0.1 5.00 1.803 50.00 90.15
J20 1 0.1 1.00 1.795 10.00 17.95
Total           561.98
Further power optimization

The system level power consumption can be further optimized by disabling clocks of unused modules and enabling Smart Reflex. Additional details of power optimization can be obtained from OMAP power management guide and PSP user guide for 2.6.37 kernel

SDK Multimedia Framework

Multimedia framework for cortex-a8 SDK will leverage GStreamer multimedia stack with gst-ffmpeg plug-in's to support GPLv2+ FFmpeg/libav library code.

SDKMMFwk.png

gst-launch is used to build and run basic multimedia pieplines to demonstrate audio/avideo decoding examples.

MMFwk.png

GStreamer

  • Multimedia processing library
  • Provides uniform framework across platforms
  • Includes parsing & A/V sync support
  • Modular with flexibility to add new functionality via plugins
  • Easy bindings to other frameworks

Some of the build dependencies for GStreamer are shown here:

GstBuildDependancies.png

Open Source FFmpeg Codecs

FFmpeg is an open source project which provides a cross platform multimedia solution.

  • Free audio and video decoder/encoder code licensed under GPLv2+ (GPLv3 licensed codecs can be build separately)
  • A comprehensive suite of standard compliant multimedia codecs

- Audio
- Video
- Image
- Speech

  • Codec software package
  • Codec libraries with standard C based API
  • Audio/Video parsers that support popular multimedia content
  • Use of SIMD/NEON instructions cortex-A8 neon architecture
  • Neon provides 1.6x-2.5x performance on complex video codecs

Multimedia Neon Benchmark

Test Parameters:

  • Sep 21 2009 snapshot of gst-ffmpeg.org
  • Real silicon measurements on Omap3 Beagleboard
Resolution 480x270
Frame Rate 30fps
Audio 44.1KHz
Video Codec H.264
Audio Codec AAC
  • Benchmarks released by ARM demonstrating an overall performance improvement of ~2x.

NeonPerf.png

FFmpeg Codecs List

FFmpeg Codec Licensing

FFmpeg libraries include LGPL, GPLv2, GPLv3 and other license based codecs, enabling GPLv3 codecs subjects the entire framework to GPLv3 license. In the Sitara SDK GPLv2+ licensed codecs are enabled. Enabling Additional details of legal and license of these codecs can be found on the FFmpeg/libav webpage.

GPLv2+ codecs list

Codec Description
ffenc_a64multi FFmpeg Multicolor charset for Commodore 64 encoder
ffenc_a64multi5 FFmpeg Multicolor charset for Commodore 64, extended with 5th color (colram) encoder
ffenc_asv1 FFmpeg ASUS V1 encoder
ffenc_asv2 FFmpeg ASUS V2 encoder
ffenc_bmp FFmpeg BMP image encoder
ffenc_dnxhd FFmpeg VC3/DNxHD encoder
ffenc_dvvideo FFmpeg DV (Digital Video) encoder
ffenc_ffv1 FFmpeg FFmpeg video codec #1 encoder
ffenc_ffvhuff FFmpeg Huffyuv FFmpeg variant encoder
ffenc_flashsv FFmpeg Flash Screen Video encoder
ffenc_flv FFmpeg Flash Video (FLV) / Sorenson Spark / Sorenson H.263 encoder
ffenc_h261 FFmpeg H.261 encoder
ffenc_h263 FFmpeg H.263 / H.263-1996 encoder
ffenc_h263p FFmpeg H.263+ / H.263-1998 / H.263 version 2 encoder
ffenc_huffyuv FFmpeg Huffyuv / HuffYUV encoder
ffenc_jpegls FFmpeg JPEG-LS encoder
ffenc_ljpeg FFmpeg Lossless JPEG encoder
ffenc_mjpeg FFmpeg MJPEG (Motion JPEG) encoder
ffenc_mpeg1video FFmpeg MPEG-1 video encoder
ffenc_mpeg4 FFmpeg MPEG-4 part 2 encoder
ffenc_msmpeg4v1 FFmpeg MPEG-4 part 2 Microsoft variant version 1 encoder
ffenc_msmpeg4v2 FFmpeg MPEG-4 part 2 Microsoft variant version 2 encoder
ffenc_msmpeg4 FFmpeg MPEG-4 part 2 Microsoft variant version 3 encoder
ffenc_pam FFmpeg PAM (Portable AnyMap) image encoder
ffenc_pbm FFmpeg PBM (Portable BitMap) image encoder
ffenc_pcx FFmpeg PC Paintbrush PCX image encoder
ffenc_pgm FFmpeg PGM (Portable GrayMap) image encoder
ffenc_pgmyuv FFmpeg PGMYUV (Portable GrayMap YUV) image encoder
ffenc_png FFmpeg PNG image encoder
ffenc_ppm FFmpeg PPM (Portable PixelMap) image encoder
ffenc_qtrle FFmpeg QuickTime Animation (RLE) video encoder
ffenc_roqvideo FFmpeg id RoQ video encoder
ffenc_rv10 FFmpeg RealVideo 1.0 encoder
ffenc_rv20 FFmpeg RealVideo 2.0 encoder
ffenc_sgi FFmpeg SGI image encoder
ffenc_snow FFmpeg Snow encoder
ffenc_svq1 FFmpeg Sorenson Vector Quantizer 1 / Sorenson Video 1 / SVQ1 encoder
ffenc_targa FFmpeg Truevision Targa image encoder
ffenc_tiff FFmpeg TIFF image encoder
ffenc_wmv1 FFmpeg Windows Media Video 7 encoder
ffenc_wmv2 FFmpeg Windows Media Video 8 encoder
ffenc_zmbv FFmpeg Zip Motion Blocks Video encoder
ffenc_aac FFmpeg Advanced Audio Coding encoder
ffenc_ac3 FFmpeg ATSC A/52A (AC-3) encoder
ffenc_alac FFmpeg ALAC (Apple Lossless Audio Codec) encoder
ffenc_mp2 FFmpeg MP2 (MPEG audio layer 2) encoder
ffenc_nellymoser FFmpeg Nellymoser Asao encoder
ffenc_real_144 FFmpeg RealAudio 1.0 (14.4K) encoder encoder
ffenc_sonic FFmpeg Sonic encoder
ffenc_sonicls FFmpeg Sonic lossless encoder
ffenc_wmav1 FFmpeg Windows Media Audio 1 encoder
ffenc_wmav2 FFmpeg Windows Media Audio 2 encoder
ffenc_roq_dpcm FFmpeg id RoQ DPCM encoder
ffenc_adpcm_adx FFmpeg SEGA CRI ADX ADPCM encoder
ffenc_g722 FFmpeg G.722 ADPCM encoder
ffenc_g726 FFmpeg G.726 ADPCM encoder
ffenc_adpcm_ima_qt FFmpeg ADPCM IMA QuickTime encoder
ffenc_adpcm_ima_wav FFmpeg ADPCM IMA WAV encoder
ffenc_adpcm_ms FFmpeg ADPCM Microsoft encoder
ffenc_adpcm_swf FFmpeg ADPCM Shockwave Flash encoder
ffenc_adpcm_yamaha FFmpeg ADPCM Yamaha encoder
ffenc_ass FFmpeg Advanced SubStation Alpha subtitle encoder
ffenc_dvbsub FFmpeg DVB subtitles encoder
ffenc_dvdsub FFmpeg DVD subtitles encoder
ffenc_xsub FFmpeg DivX subtitles (XSUB) encoder
ffdec_aasc FFmpeg Autodesk RLE decoder
ffdec_amv FFmpeg AMV Video decoder
ffdec_anm FFmpeg Deluxe Paint Animation decoder
ffdec_ansi FFmpeg ASCII/ANSI art decoder
ffdec_asv1 FFmpeg ASUS V1 decoder
ffdec_asv2 FFmpeg ASUS V2 decoder
ffdec_aura FFmpeg Auravision AURA decoder
ffdec_aura2 FFmpeg Auravision Aura 2 decoder
ffdec_avs FFmpeg AVS (Audio Video Standard) video decoder
ffdec_bethsoftvid FFmpeg Bethesda VID video decoder
ffdec_bfi FFmpeg Brute Force & Ignorance decoder
ffdec_binkvideo FFmpeg Bink video decoder
ffdec_bmp FFmpeg BMP image decoder
ffdec_c93 FFmpeg Interplay C93 decoder
ffdec_cavs FFmpeg Chinese AVS video (AVS1-P2, JiZhun profile) decoder
ffdec_cdgraphics FFmpeg CD Graphics video decoder
ffdec_cinepak FFmpeg Cinepak decoder
ffdec_cljr FFmpeg Cirrus Logic AccuPak decoder
ffdec_camstudio FFmpeg CamStudio decoder
ffdec_cyuv FFmpeg Creative YUV (CYUV) decoder
ffdec_dnxhd FFmpeg VC3/DNxHD decoder
ffdec_dpx FFmpeg DPX image decoder
ffdec_dsicinvideo FFmpeg Delphine Software International CIN video decoder
ffdec_dvvideo FFmpeg DV (Digital Video) decoder
ffdec_dxa FFmpeg Feeble Files/ScummVM DXA decoder
ffdec_eacmv FFmpeg Electronic Arts CMV video decoder
ffdec_eamad FFmpeg Electronic Arts Madcow Video decoder
ffdec_eatgq FFmpeg Electronic Arts TGQ video decoder
ffdec_eatgv FFmpeg Electronic Arts TGV video decoder
ffdec_eatqi FFmpeg Electronic Arts TQI Video decoder
ffdec_8bps FFmpeg QuickTime 8BPS video decoder
ffdec_8svx_exp FFmpeg 8SVX exponential decoder
ffdec_8svx_fib FFmpeg 8SVX fibonacci decoder
ffdec_escape124 FFmpeg Escape 124 decoder
ffdec_ffv1 FFmpeg FFmpeg video codec #1 decoder
ffdec_ffvhuff FFmpeg Huffyuv FFmpeg variant decoder
ffdec_flashsv FFmpeg Flash Screen Video v1 decoder
ffdec_flic FFmpeg Autodesk Animator Flic video decoder
ffdec_flv FFmpeg Flash Video (FLV) / Sorenson Spark / Sorenson H.263 decoder
ffdec_4xm FFmpeg 4X Movie decoder
ffdec_fraps FFmpeg Fraps decoder
ffdec_FRWU FFmpeg Forward Uncompressed decoder
ffdec_h261 FFmpeg H.261 decoder
ffdec_h263 FFmpeg H.263 / H.263-1996, H.263+ / H.263-1998 / H.263 version 2 decoder
ffdec_h263i FFmpeg Intel H.263 decoder
ffdec_h264 FFmpeg H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 decoder
ffdec_huffyuv FFmpeg Huffyuv / HuffYUV decoder
ffdec_idcinvideo FFmpeg id Quake II CIN video decoder
ffdec_iff_byterun1 FFmpeg IFF ByteRun1 decoder
ffdec_iff_ilbm FFmpeg IFF ILBM decoder
ffdec_indeo2 FFmpeg Intel Indeo 2 decoder
ffdec_indeo3 FFmpeg Intel Indeo 3 decoder
ffdec_indeo5 FFmpeg Intel Indeo Video Interactive 5 decoder
ffdec_interplayvideo FFmpeg Interplay MVE video decoder
ffdec_jpegls FFmpeg JPEG-LS decoder
ffdec_kgv1 FFmpeg Kega Game Video decoder
ffdec_kmvc FFmpeg Karl Morton's video codec decoder
ffdec_loco FFmpeg LOCO decoder
ffdec_mdec FFmpeg Sony PlayStation MDEC (Motion DECoder) decoder
ffdec_mimic FFmpeg Mimic decoder
ffdec_mjpeg FFmpeg MJPEG (Motion JPEG) decoder
ffdec_mjpegb FFmpeg Apple MJPEG-B decoder
ffdec_mmvideo FFmpeg American Laser Games MM Video decoder
ffdec_motionpixels FFmpeg Motion Pixels video decoder
ffdec_mpeg4 FFmpeg MPEG-4 part 2 decoder
ffdec_mpegvideo FFmpeg MPEG-1 video decoder
ffdec_msmpeg4v1 FFmpeg MPEG-4 part 2 Microsoft variant version 1 decoder
ffdec_msmpeg4v2 FFmpeg MPEG-4 part 2 Microsoft variant version 2 decoder
ffdec_msmpeg4 FFmpeg MPEG-4 part 2 Microsoft variant version 3 decoder
ffdec_msrle FFmpeg Microsoft RLE decoder
ffdec_msvideo1 FFmpeg Microsoft Video 1 decoder
ffdec_mszh FFmpeg LCL (LossLess Codec Library) MSZH decoder
ffdec_nuv FFmpeg NuppelVideo/RTJPEG decoder
ffdec_pam FFmpeg PAM (Portable AnyMap) image decoder
ffdec_pbm FFmpeg PBM (Portable BitMap) image decoder
ffdec_pcx FFmpeg PC Paintbrush PCX image decoder
ffdec_pgm FFmpeg PGM (Portable GrayMap) image decoder
ffdec_pgmyuv FFmpeg PGMYUV (Portable GrayMap YUV) image decoder
ffdec_pictor FFmpeg Pictor/PC Paint decoder
ffdec_png FFmpeg PNG image decoder
ffdec_ppm FFmpeg PPM (Portable PixelMap) image decoder
ffdec_ptx FFmpeg V.Flash PTX image decoder
ffdec_qdraw FFmpeg Apple QuickDraw decoder
ffdec_qpeg FFmpeg Q-team QPEG decoder
ffdec_qtrle FFmpeg QuickTime Animation (RLE) video decoder
ffdec_r10k FFmpeg AJA Kona 10-bit RGB Codec decoder
ffdec_rl2 FFmpeg RL2 video decoder
ffdec_roqvideo FFmpeg id RoQ video decoder
ffdec_rpza FFmpeg QuickTime video (RPZA) decoder
ffdec_rv10 FFmpeg RealVideo 1.0 decoder
ffdec_rv20 FFmpeg RealVideo 2.0 decoder
ffdec_rv30 FFmpeg RealVideo 3.0 decoder
ffdec_rv40 FFmpeg RealVideo 4.0 decoder
ffdec_sgi FFmpeg SGI image decoder
ffdec_smackvid FFmpeg Smacker video decoder
ffdec_smc FFmpeg QuickTime Graphics (SMC) decoder
ffdec_snow FFmpeg Snow decoder
ffdec_sp5x FFmpeg Sunplus JPEG (SP5X) decoder
ffdec_sunrast FFmpeg Sun Rasterfile image decoder
ffdec_svq1 FFmpeg Sorenson Vector Quantizer 1 / Sorenson Video 1 / SVQ1 decoder
ffdec_svq3 FFmpeg Sorenson Vector Quantizer 3 / Sorenson Video 3 / SVQ3 decoder
ffdec_targa FFmpeg Truevision Targa image decoder
ffdec_thp FFmpeg Nintendo Gamecube THP video decoder
ffdec_tiertexseqvideo FFmpeg Tiertex Limited SEQ video decoder
ffdec_tiff FFmpeg TIFF image decoder
ffdec_tmv FFmpeg 8088flex TMV decoder
ffdec_truemotion1 FFmpeg Duck TrueMotion 1.0 decoder
ffdec_truemotion2 FFmpeg Duck TrueMotion 2.0 decoder
ffdec_camtasia FFmpeg TechSmith Screen Capture Codec decoder
ffdec_txd FFmpeg Renderware TXD (TeXture Dictionary) image decoder
ffdec_ultimotion FFmpeg IBM UltiMotion decoder
ffdec_vb FFmpeg Beam Software VB decoder
ffdec_vc1 FFmpeg SMPTE VC-1 decoder
ffdec_vcr1 FFmpeg ATI VCR1 decoder
ffdec_vmdvideo FFmpeg Sierra VMD video decoder
ffdec_vmnc FFmpeg VMware Screen Codec / VMware Video decoder
ffdec_vp3 FFmpeg On2 VP3 decoder
ffdec_vp5 FFmpeg On2 VP5 decoder
ffdec_vp6 FFmpeg On2 VP6 decoder
ffdec_vp6a FFmpeg On2 VP6 (Flash version, with alpha channel) decoder
ffdec_vp6f FFmpeg On2 VP6 (Flash version) decoder
ffdec_vp8 FFmpeg On2 VP8 decoder
ffdec_vqavideo FFmpeg Westwood Studios VQA (Vector Quantized Animation) video decoder
ffdec_wmv1 FFmpeg Windows Media Video 7 decoder
ffdec_wmv2 FFmpeg Windows Media Video 8 decoder
ffdec_wmv3 FFmpeg Windows Media Video 9 decoder
ffdec_wnv1 FFmpeg Winnov WNV1 decoder
ffdec_xan_wc3 FFmpeg Wing Commander III / Xan decoder
ffdec_xl FFmpeg Miro VideoXL decoder
ffdec_yop FFmpeg Psygnosis YOP Video decoder
ffdec_zlib FFmpeg LCL (LossLess Codec Library) ZLIB decoder
ffdec_zmbv FFmpeg Zip Motion Blocks Video decoder
ffdec_aac FFmpeg Advanced Audio Coding decoder
ffdec_aac_latm FFmpeg AAC LATM (Advanced Audio Codec LATM syntax) decoder
ffdec_ac3 FFmpeg ATSC A/52A (AC-3) decoder
ffdec_alac FFmpeg ALAC (Apple Lossless Audio Codec) decoder
ffdec_als FFmpeg MPEG-4 Audio Lossless Coding (ALS) decoder
ffdec_amrnb FFmpeg Adaptive Multi-Rate NarrowBand decoder
ffdec_ape FFmpeg Monkey's Audio decoder
ffdec_atrac1 FFmpeg Atrac 1 (Adaptive TRansform Acoustic Coding) decoder
ffdec_atrac3 FFmpeg Atrac 3 (Adaptive TRansform Acoustic Coding 3) decoder
ffdec_binkaudio_dct FFmpeg Bink Audio (DCT) decoder
ffdec_binkaudio_rdft FFmpeg Bink Audio (RDFT) decoder
ffdec_cook FFmpeg COOK decoder
ffdec_dca FFmpeg DCA (DTS Coherent Acoustics) decoder
ffdec_dsicinaudio FFmpeg Delphine Software International CIN audio decoder
ffdec_eac3 FFmpeg ATSC A/52B (AC-3, E-AC-3) decoder
ffdec_flac FFmpeg FLAC (Free Lossless Audio Codec) decoder
ffdec_gsm FFmpeg GSM decoder
ffdec_gsm_ms FFmpeg GSM Microsoft variant decoder
ffdec_imc FFmpeg IMC (Intel Music Coder) decoder
ffdec_mace3 FFmpeg MACE (Macintosh Audio Compression/Expansion) 3
ffdec_mace6 FFmpeg MACE (Macintosh Audio Compression/Expansion) 6
ffdec_mlp FFmpeg MLP (Meridian Lossless Packing) decoder
ffdec_mp1float FFmpeg MP1 (MPEG audio layer 1) decoder
ffdec_mp2float FFmpeg MP2 (MPEG audio layer 2) decoder


ffdec_mpc7 FFmpeg Musepack SV7 decoder
ffdec_mpc8 FFmpeg Musepack SV8 decoder
ffdec_nellymoser FFmpeg Nellymoser Asao decoder
ffdec_qcelp FFmpeg QCELP / PureVoice decoder
ffdec_qdm2 FFmpeg QDesign Music Codec 2 decoder
ffdec_real_144 FFmpeg RealAudio 1.0 (14.4K) decoder
ffdec_real_288 FFmpeg RealAudio 2.0 (28.8K) decoder
ffdec_shorten FFmpeg Shorten decoder
ffdec_sipr FFmpeg RealAudio SIPR / ACELP.NET decoder
ffdec_smackaud FFmpeg Smacker audio decoder
ffdec_sonic FFmpeg Sonic decoder
ffdec_truehd FFmpeg TrueHD decoder
ffdec_truespeech FFmpeg DSP Group TrueSpeech decoder
ffdec_tta FFmpeg True Audio (TTA) decoder
ffdec_twinvq FFmpeg VQF TwinVQ decoder
ffdec_vmdaudio FFmpeg Sierra VMD audio decoder
ffdec_wmapro FFmpeg Windows Media Audio 9 Professional decoder
ffdec_wmav1 FFmpeg Windows Media Audio 1 decoder
ffdec_wmav2 FFmpeg Windows Media Audio 2 decoder
ffdec_wmavoice FFmpeg Windows Media Audio Voice decoder
ffdec_ws_snd1 FFmpeg Westwood Audio (SND1) decoder
ffdec_pcm_lxf FFmpeg PCM signed 20-bit little-endian planar decoder
ffdec_interplay_dpcm FFmpeg DPCM Interplay decoder
ffdec_roq_dpcm FFmpeg DPCM id RoQ decoder
ffdec_sol_dpcm FFmpeg DPCM Sol decoder
ffdec_xan_dpcm FFmpeg DPCM Xan decoder
ffdec_adpcm_4xm FFmpeg ADPCM 4X Movie decoder
ffdec_adpcm_adx FFmpeg SEGA CRI ADX ADPCM decoder
ffdec_adpcm_ct FFmpeg ADPCM Creative Technology decoder
ffdec_adpcm_ea FFmpeg ADPCM Electronic Arts decoder
ffdec_adpcm_ea_maxis_xa FFmpeg ADPCM Electronic Arts Maxis CDROM XA decoder
ffdec_adpcm_ea_r1 FFmpeg ADPCM Electronic Arts R1 decoder
ffdec_adpcm_ea_r2 FFmpeg ADPCM Electronic Arts R2 decoder
ffdec_adpcm_ea_r3 FFmpeg ADPCM Electronic Arts R3 decoder
ffdec_adpcm_ea_xas FFmpeg ADPCM Electronic Arts XAS decoder
ffdec_g722 FFmpeg G.722 ADPCM decoder
ffdec_g726 FFmpeg G.726 ADPCM decoder
ffdec_adpcm_ima_amv FFmpeg ADPCM IMA AMV decoder
ffdec_adpcm_ima_dk3 FFmpeg ADPCM IMA Duck DK3 decoder
ffdec_adpcm_ima_dk4 FFmpeg ADPCM IMA Duck DK4 decoder
ffdec_adpcm_ima_ea_eacs FFmpeg ADPCM IMA Electronic Arts EACS decoder
ffdec_adpcm_ima_ea_sead FFmpeg ADPCM IMA Electronic Arts SEAD decoder
ffdec_adpcm_ima_iss FFmpeg ADPCM IMA Funcom ISS decoder
ffdec_adpcm_ima_qt FFmpeg ADPCM IMA QuickTime decoder
ffdec_adpcm_ima_smjpeg FFmpeg ADPCM IMA Loki SDL MJPEG decoder
ffdec_adpcm_ima_wav FFmpeg ADPCM IMA WAV decoder
ffdec_adpcm_ima_ws FFmpeg ADPCM IMA Westwood decoder
ffdec_adpcm_ms FFmpeg ADPCM Microsoft decoder
ffdec_adpcm_sbpro_2 FFmpeg ADPCM Sound Blaster Pro 2-bit decoder
ffdec_adpcm_sbpro_3 FFmpeg ADPCM Sound Blaster Pro 2.6-bit decoder
ffdec_adpcm_sbpro_4 FFmpeg ADPCM Sound Blaster Pro 4-bit decoder
ffdec_adpcm_swf FFmpeg ADPCM Shockwave Flash decoder
ffdec_adpcm_thp FFmpeg ADPCM Nintendo Gamecube THP decoder
ffdec_adpcm_xa FFmpeg ADPCM CDROM XA decoder
ffdec_adpcm_yamaha FFmpeg ADPCM Yamaha decoder
ffdec_ass FFmpeg Advanced SubStation Alpha subtitle decoder
ffdec_dvbsub FFmpeg DVB subtitles decoder
ffdec_dvdsub FFmpeg DVD subtitles decoder
ffdec_pgssub FFmpeg HDMV Presentation Graphic Stream subtitles decoder
ffdec_xsub FFmpeg XSUB decoder

Third Party Solutions

Third parties like Ittiam and VisualON provide highly optimized ARM only codecs on Linux, WinCE and Android OS.

Software Components & Dependencies

The following lists some of the software components and dependencies associated with the Sitara SDK.

Dependancies: Required packages to build Gstreamer on Ubuntu:

sudo apt-get install automake autoconf libtool docbook-xml docbook-xsl fop libxml2 gnome-doc-utils

  • build-essential
  • libtool
  • automake
  • autoconf
  • git-core
  • svn
  • liboil0.3-dev
  • libxml2-dev
  • libglib2.0-dev
  • gettext
  • corkscrew
  • socket
  • libfaad-dev
  • libfaac-dev

Software components for Sitara SDK Release:

  • glib
  • gstreamer
  • liboil
  • gst-plugins-good
  • gst-ffmpeg
  • gst-plugins-bad
  • gst-plugins-base

Re-enabling Mp3 and Mpeg2 decode in the Processor SDK

Starting with version 05.05.01.00, mp3 and mpeg2 codecs are no longer distributed as part of the SDK. These plugins can be re-enabled by the end user through rebuilding the gst-plugins-ugly package. The following instructions have been tested with gst-plugins-ugly-0.10.19 which can be found at gstreamer.freedesktop.org. Note that these instructions will work for any of the gstreamer plugin packages found in the sdk.

  • Source environment-setup at the terminal
  • Navigate into the example-applications path under the SDK install directory
  • Extract the GStreamer plug-in source archive
  • Navigate into the folder that was created
  • On the command line type ./configure --host=arm-arago-linux-gnueabi --prefix=/usr
  • Notice that some components are not built because they have dependencies that are not part of our SDK
  • Run make to build the plugins.
  • Run make install DESTDIR=<PATH TO TARGET ROOT>

Other

  • For technical support please post your questions at http://e2e.ti.com or search forum post Database.

Archived

Sitara SDK 05.07