soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for...

48
Embedded Middleware National Chiao Tung University Chun-Jen Tsai 3/21/2011

Transcript of soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for...

Page 1: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

Embedded Middleware

National Chiao Tung UniversityChun-Jen Tsai

3/21/2011

Page 2: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

2/48

Embedded Middleware

“Middleware”is a very popular terminology inembedded system software design Just like “cloud computing,”it is merely a new name for old

technologies

We can further divide embedded middleware into twolayers System middleware –an API library that provides system

abstraction to application software to increase applicationportability

Hardware abstraction middleware –an API specification thatacts as a hardware abstraction layer for chip-level integration

Page 3: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

3/48

Why System Middleware

The purpose of system middleware is to provide ahomogeneous environment for applications Operating system does the same thing, but due to the

variety of embedded hardware and competitions among OScompanies, we need something beyond OS

Hardware 1 Hardware 1 Hardware 2

OS 1 OS 2 OS 1

Middleware Middleware Middleware

application

Defined by an internationalstandard organization

Designed by asystem

manufacturer

Page 4: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

4/48

System Middleware Components

A system middleware must provide the followingabstractions for (multimedia) applications Application model GUI subsystem

Graphics, video, audio rendering User event handling

Timing control File system Menu

e.g. DVB-MHP application

Page 5: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

5/48

DVB-MHP Architecture Revisited

HW

SW

Xlets Xlets based on GEMDataNativeApplication

Aud

ioC

odec

(HE

-AA

C)

MHP Middleware

TransportDemux

(MPEG-2 TS,RTSP/RTP)

SoCI/O Devices Videoaccelerator

JavaProcessor

RISC Processor(< 300MHz)

Java Standard Classes (CDC/PBP)Operating Systems

Gra

phic

libra

ry(e

.g.M

icro

win

)Sun

Java-TV(Application

Model)

DVB(Event, Services

Abstraction)

DAVIC(FS

Abstraction)

HAVI(UI

Abstraction)

Platform-dependentmodulesJMF 1.1 Application Manager

(Navigator)

audioaccelerator

Graphicsaccelerator

Vid

eoC

odec

(H.2

64,M

PE

G-2

)Multimedia Home Platform functional blocks:

Page 6: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

6/48

Java-based Middleware

DVB-MHP 1.0 (aka DVB-J) system abstraction isbased on Java RE, just like many other middleware In particular, CDC/PBP is adopted for MHP

Google Android is also based on Java Model Google defined their own “profile”and VM (not JVM byte-

code compatible)

Rationale: Java is “virtually a computer plus an OS!”

CPU VM Exec. Engine

OS

Applications

Class loader, GC,API classes, etc.

Applets, Xlets,MIDlets, etc.

Java ModelReal Computer Model

Page 7: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

7/48

Native vs. Java-based Middleware

We can use native code to design system middleware.For example, BREW from Qualcomm is a nativemiddleware for mobile handsets: A C/C++ development environment for ARM-based platforms Application: BREW “Applet”model; cooperative multitasking

(IThread API) Graphics API: OpenGL/ES Multimedia API: IMedia

Supposedly, BREW is faster than Java, but with aproperly designed system, this may not be true

Page 8: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

8/48

MHP Application Model Abstraction

Application implements the javax.tv.xlet.Xlet interface Similar to java.applet.Applet, but simpler Methods are called in the following sequence:

initXlet() startXlet() : resource allocation begins here! destroyXlet()

Xlet life cycle (initiated by the MHP applicationmanager, which sets up an XletContext for the Xlet)

LoadedStart Paused Active

initXlet() startXlet()

Destoryed

destroyXlet()

pauseXlet()destroyXlet()

destroyXlet()

Page 9: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

9/48

Middleware Architecture for DVB-J

Application Manager and Xlet API

DSM-CC SI

Tuning

ServiceSelection JMF Conditional

Access

Section Filtering

MPEG

ReturnChannel

UIEvents

AWT

DVB UI

Java

Inter-XletComm.

HAVi

†S. Morris and A. Smith-Chaigneau, Interactive TV Standards, Elsevier, 2005

MHP middleware layers†:

TransportStream

Page 10: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

10/48

DVB-J APIs

Java Language API Application Model (Life Cycle) API

Based on Java TV xlets

Graphical API Based on AWT and HAVi UI level 2

Data Access APIMultimedia API

Based on JMF

Service and User Settings API

Page 11: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

11/48

MHP Application UI Construction

An MHP application can allocate screen resource,called HScene, using HAVi API An HScene represents a region on the TV display

UI components are mainly drawn using java.awt.Graphics primitives HAVi widget classes

HScreen

HScene

Page 12: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

12/48

The MHP display model is defined in Sun Java-TVmiddleware:

MHP Display Model Abstraction

BackgroundData

GraphicsData

BackgroundDecoder

GraphicsComposition

JMFManipulation

HBackgroundDevice

HVideoDevice

HGraphicsDevice

+ HScreen

VideoDecoder

DecoderFormat

Conversion

TVBehaviorControl

ApplicationBehaviorControl

broadcastmetadata user preference

display info. Format signalingto display

scalingVideoData

Implementation?

Graphics primitives created usingjava.awt and HAVi level 2 UI

Page 13: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

13/48

MHP Display Model Implementation

If MHP adopts Sun’s PBP reference implementation:

OS (Linux)

Native Graphics Library (X11)

Portable Graphics Library (MicroWindows)

Java PBP Class Libraries

fbdev driver

HW video frame buffer VGA/DVIController

HScreenDevice

HVideoDevice HGraphicsDevice HBackgroundDevice

HScreen

Should bemerged forefficiency!

hashas has

java.awt.Container

org.havi.ui.HScene

java.awt.Component

widgetsadd()

HScene

HScreen

Page 14: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

14/48

Building a GUI Application

During initXlet() Configure the required HScene and retrieve the handle to

the HScene object

During startXlet() Create widget components under the HScene Display the HScene using setVisible(true) Request the focus

During destroyXlet Hide the HScene Release the allocated resources (components, images, etc.)

Page 15: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

15/48

Controlling Media from Xlets

Xlets can control audio/video media using JavaMedia Framework Based on JMF 1.0 Use org.davic.net.dvb.DVBLocator to select what to show

MHP provides extra JMF controls for Video scaling Subtitle control and service components monitoring Audio playback fine control (for local playback) Notification of changes in incoming TV signals

Page 16: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

16/48

JMF Class Architecture

JMF is used asmedia playbackinterface in MHP

Only JMF 1.1 APIare used: Player DataSource Control

AWT Networking JNI Lang

JVM

JMF

ClassLibrary

Clock TimeBasehas a

Controller

Durationextends

extends

MediaHandler

Player

extendsextends

DataSourcehas a

Manager

Page 17: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

17/48

Video-Graphics Integration†for MHP

Java TV

locator ServiceContext

Java Media Framework

MediaLocator

ServiceContext

MediaPlayer Player

HAVi L2 UI

HScreen

HVideoDevice

HVideoComponent

HScreenConfiguration

HVideoConfiguration

1getSource()

1

n

11

1

1 1

1

1 1

1

1

1

1 1

Implements

Implements

getSource()

getVideoComponent()

select()

getVideoDevice()

getBestConfiguration()

1 n

1 nextendsgetDefaultVideoDevice()

†iTV Handbook, Prentice Hall 2003

Constructedwith new

MediaSelector(locator)

Constructedwith new

DataSource(MediaLocator)

Page 18: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

18/48

DVB File System Model†

†L. Atzori et al., “Multimedia Information Broadcasting Using Digital TV Channels,”IEEE T-Broadcasting, Sep. 1997

Localfile

system

Up-link

Channelcoding &

modulation

MPEGtransport

MUX

TV 2

TV 3

TV 4

video

audio

data

encoder

encoder

encoder

MPEGprogram

MUXTV 1

conditional access

38 Mbps

Remotefile

system Head station

to cablenetwork

Tuner,demodulation, &channel decode

MPEG TransportDEMUX

MPEG ProgramDEMUX

User input,program selection

encoder

encoder

encoder

video

audio

data

Page 19: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

19/48

DVB File System Abstraction

DVB applications (Xlets, etc.) and data can betransmitted to STBs using DSM-CC Object Carousel†

†D.-H. Park et al., “Real-Time Carousel Caching and Monitoring in Data Broadcasting,”IEEE T-ConsumerElectronics, Feb. 2006

Local virtualfile system

Page 20: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

20/48

Extraction of Xlets from DSM-CC

One possible implementation of Xlets extractor:

ObjectCache

DSM-CC Parser

DII Cache DII Cache

Real-Time Thread Pool

MonitorThreads

DownloadThreads

VersionManager

XletCache

Xlet RunningSpace

DSM-CCCache Space

ApplicationManager

Section Filter User InputIncoming datastream

Page 21: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

21/48

Synchronization

Synchronization of application with media arefacilitated by the following API functions: DSM-CC stream events

org.dvb.dsmcc.DSMCCStreamEvent.subscribe() org.davic.media.StreamEventControl.subscribeStreamEvent()

Media Time (NPT) org.davic.media.MediaTimeEventControl

Private section events org.davic.mpeg.sections

Page 22: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

22/48

Java for 2.5/3G Mobile Services

3GPP adopts the concept of middleware for CPE For application middleware, Java RE has been selected

(CLDC/MIDP 2.0) For multimedia device integration middleware, OpenMAX

has been proposed (by ARM, Motorola, Nokia, TI, etc)

Google also selects Java R.E. for G-phone, but usetheir own virtual machine and profile libraries This avoids Sun’s J2ME licensing fee

Page 23: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

23/48

Google Android Architecture

Applications

Home Contacts Phone Browser

Application Framework

System Libraries Android Runtime

Core Libraries

Dalvik Virtual Machine

Linux Kernel

C LibrarySGL

FreeType

SSL

WebKitOpenGL/ES

. . .

ActivityManager

WindowManager

LocationManager

TelephonyManager

ContentProviders

PackageManager

ResourceManager

ViewSystem

XMPPService

NotificationManager

Media Framework SQLiteSurface Manager

Page 24: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

24/48

Linux’s Role in Android

Java model does not have an I/O subsystem, Linuxkernel is only (hopefully) used to provide Hardware abstraction layer (for different drivers) Multi-threading management Shared library interface

The following “infamous”Linux components are notincluded Native windowing system (e.g. X11) glibc

Page 25: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

25/48

Android Applications

An Android application package (APK) is a collectionof components which usually run in one thread Services or ContentProviders sometimes need another

thread (process)

APK Package 1

Process

Activity Activity

ContentProvider

Service

APK Package 2

Process

Activity Activity

ContentProvider

Process

Service

Page 26: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

26/48

Android Application Model

An android application has four building blocks Activity an operation that optionally associated with a UI

component (window), similar to execution context in MHP Service background task Content Provider file system abstraction Intent Receiver event handler

IntentReceiver

Activity

Activity

Thread

Looper

MessageQueue

SystemEvents

UIEvents

LocalService Call

Thread

ExternalService Call

Page 27: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

27/48

Activities Life Cycle

Application activities(e.g. UI objects) havefollowing entry points Life cycle begins with

onCreate(), ends withonDestroy()

Visible life cycle beginswith onStart(), endswith onStop()

Foreground (in-focus)life cycle begins withonResume(), ends withonPause()

Activity starts

onCreate()

onStart()

onResume()

Activity running

onPause()

onStop()

onRestart()

onDestory()

Activity shutdown

Process is killed

User navigatesback to the

activity

Otherapplications

need memory

Another activitycomes in front of the

activity

activity no longervisible activity comes to the

foreground

The activitycomes to theforeground

Page 28: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

28/48

Booting an Android Platform

Init process starts the zygote process: Zygote spawns and initializes Dalvik VM instances based on

requests; it also loads classes

daemonsdaemonsdaemons

Init

Zygoteruntime

Service Manager

Dalvik VM

System Server

Audio Flinger

Android Managed Services

WindowManager Activity Manager Package

Manager

Surface Flinger

Page 29: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

29/48

Invoking Media Accelerators

Invocation of audio device from a Java application

Application

MediaPlayer

MediaPlayer

C library

Application Framework (Java)

MediaFramework

Linux Kernel

Device driver

Audio Flinger

libaudio.so

ALSA

JNI

Binder IPC

Dynamic loading

Page 30: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

30/48

System Middleware Issues

Although system middleware can ideally solve theapplication portability problem, it does not (yet) Mobile phone Java games may not work on all Java

handsets MHP xlets may not run on all MHP set-top boxes

However, as a system designer, the holy goal ofmiddleware should still be honored

Page 31: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

31/48

HW/SW Integration Issues

In the past, IC/IP designers tend to define their ownHW interface, including IC pinout specs, IC controlregisters, and subsystem behaviors

For complex systems, the partition of a system intosub-behaviors is not standardized

+VLD Q-1 IDCT Use MC? Y

N

DC/AC-1

videobitstream

decodedimage

referenceimage

To output(display)

Bilinear

MC

Combined into one circuit?

Or break down as three circuits?

Page 32: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

32/48

Example Code to Control ICs/IPs

When a software function needs to interact with thehardware circuit, how do we invoke†the circuit from aprogram?

/* HW accelerator interface */short *input = (short *) 0x0F0000;short *output = (short *) 0x0F0200;short *call_idct = (short *) 0x0F0400;

void idct(short *block){

int unit = sizeof(short);memcpy(input, block, 64*unit);*call_idct = 1;memcpy(block, output, 64*unit);

}

†Here, memory-mapped I/O is used

/* HW accelerator interface */short *input = (short *) 0x0F0000;short *output = (short *) 0x0F0200;volatile short

*call_idct = (short *) 0x0F0400;

void idct(short *block){

int unit = sizeof(short);memcpy(input, block, 64*unit);*call_idct = 1;while (call_idct != 0) /* idle */;memcpy(block, output, 64*unit);

}

Page 33: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

33/48

Chip vs. System Designers

For large IC design houses, they want to sell chips toas many system manufacturers as possible

For small IC design houses, they want to competewith large IC design houses without stepping onpatents/copyrights

For system manufacturers, they want to use thelowest-priced chip (given same specification)available without changing their application software

HW (chips)

middleware

applications

an open standard here canenables third party chip market!

Page 34: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

34/48

OpenMax Middleware

The OpenMAX†standard was originally conceived asa method of enabling portability of components andmedia applications throughout the mobile devicelandscape

The proposal of OpenMax was brought to theKhronos Group in mid-2004 by a handful of keymobile hardware companies

Khronos Group is a member-funded industryconsortium focused on the creation of open standardAPIs for multimedia applications

†Check http://www.khronos.org/openmax for the spec.

Page 35: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

35/48

Khronos Multimedia Middlewares†

†Jim van Welzan, “OpenMax Overview”, 2007

3DSmall footprint 3D forembedded systems

Vector 2DLow-level vectoracceleration API

Media Engines –CPUs, DSP, Hardware Accelerators etc.

Platform MediaFrameworks

IL

SOUNDEnhanced

Audio

Image Libraries, VideoCodecs, Sound Libraries

Component interfacesfor codec integration

AL

Playback andrecordinginterfaces

Applications or middleware libraries (JSR 184 engines, Flash players, media players etc.)

EGL Graphics surface management for efficientmixed mode 2D/3D/video rendering

Accelerated mediaprimitives for codec

developmentDL

Page 36: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

36/48

Why OpenMax?

Goal: Solve the problem of supporting expanding multimedia

standards and the increasing complexity of solutions forsystem and chip manufacturers

Solution: Standardize acceleration API for multimedia kernels

Focused on key ‘hotspot’functions and algorithms Standardize acceleration API for multimedia codecs

Abstract system architecture for increased OS portability Provide reference designs across a wide variety of

architectures and OS’sQuestion:

Who shall write (port) the middleware?

Page 37: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

37/48

OpenMax Layers†

OpenMAX DL –Development Layer For codec authors that need to leverage low-level hardware

accelerated primitives

OpenMAX IL –Integration Layer For system integrators that need to build solutions from mid-

level component pieces (e.g. codecs) potentially frommultiple sources

OpenMAX AL –Application Layer For application writers that need high-level access to

multimedia functionality (e.g. player, recorder, input, andoutput object)

†Jim van Welzan, “OpenMax Overview”, 2007

Page 38: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

38/48

Integration and Development Layers†

†Neil Trevett, “Introduction to OpenMax”, SIGGRAPH presentation, 2004

Page 39: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

39/48

OpenMax DL Domains

Audio Coding MP3, AAC

Image Coding JPEG (encode and decode)

Image Processing Color space conversion Pixel packing/unpacking De-blocking / de-ringing Rotation, scaling, compositing, etc.

Signal Processing FIR, IIR, FFT, Dot Product

Video Coding MPEG-4 SP/H.263 BL (encode and decode) H.264 (encode and decode)

Page 40: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

40/48

Example: Video DL

Provide common building block API to handle MPEG-4 SP/H.263 BL (encode & decode) H.264 (encode/decode) Java Video DL (under discussion) Hardware accelerators (under discussion)

The building blocks includes: 8x8 SAD and 16X16 SAD 8x8 DCT+Q and 8x8 IDCT+Q MPEG-4 Variable Length Decode Multiple 8x8 SADs in one function Multiple 8x8 DCTs in one function . . .

Page 41: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

41/48

Example: Image DL

Provide common building block API to handle JPEG / JPEG 2000 (encode and decode) Color space conversion and packing/unpacking De-blocking / de-ringing Simple rotation and scaling

The building blocks includes: JPEG 8x8 DCT and 8x8 IDCT JPEG quantization JPEG Huffman encoding and decoding Color conversion Multiple 8x8 DCT and quantization in one function Multiple 8x8 DCTs in one function . . .

Page 42: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

42/48

OpenMax Integration Layer (IL)

Abstracts Hardware/Software Architecture Provides a uniform interface for framework integration

across many architectures

Integrates with Major Frameworks (OS’s, Systems): Microsoft DirectShow, Symbian MDF, GStreamer, Java

MMAPI

Application

Framework

Codec RunningOn Accelerator

Application

Framework

Codec RunningOn Host Processor

Application

Framework

Part of CodecOn Accelerator

Part of CodecOn Host Processor

IL

IPC

IL

IPC

IL

Page 43: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

43/48

OpenMax IL Architecture

IL client IL client

IL core

IL core API

OMX Component OMX Component

port portdata tunnel

commands

callbacks

commands

callbacks

Multimedia Framework

Platform

Page 44: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

44/48

OpenMax IL Concept

OpenMax IL is based on the visual programmingmodel (similar to DirectShow)

Example: A DVD player can use the OpenMax ILcore API to set up a component network:

The system behavior must specify† Data flow Timing (scheduling of processing)

AudioDecoder

ClockComponent

AudioRenderer

FileReader/Demux Video

DecoderVideo

Scheduler

time

time

data

data

VideoRenderer

†More on this topic will be discussed in “system formalism”in future classes

Page 45: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

45/48

OpenMax Core API

Core API is used to build a “component graph” OMX_init(), OMX_Deinit() OMX_ComponentNameEnum(),

OMX_GetComponentsOfRole(),OMX_GetRolesOfComponent()

OMX_GetHandle(), OMX_FreeHandle() OMX_SetupTunnel()

There are many types of components: Source, filter, sink, mixer, scheduler, …, etc.

Component enumeration

Component invocation

Component connection

Page 46: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

46/48

Relationship Between IL and DL

System Media Driver

Hardware

OpenMax Integration Layer

ComponentInterface

ComponentInterface

ComponentInterface

codecOpenMax Development Layer

codec

DL Primitives DL Primitives

Multimedia Framework/Middleware

Application Application

Application

Page 47: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

47/48

OpenMAX AL Concept

OpenMax IL is too complex for many developers AL is designed for simplified streaming media applications AL adopts an object-oriented media approach (similar to the

concept in MPEG-21)

Media Objects enable PLAY and RECORD of media

OpenMAX ALMedia ObjectURI

Memory

Content pipe

Camera

Audio Input

URI

Memory

Content pipe

Audio Mix

Display Window

? ?

Page 48: soc11 03 Middleware - people.cs.nctu.edu.twcjtsai/courses/soc/classnotes/soc11_03... · Java for 2.5/3G Mobile Services 3GPP adopts the concept of middleware for CPE For application

48/48

Discussions

OpenMax is not the only portable framework formultimedia applications MPEG has MPEG-21, MPEG-B/C Reconfigurable Video

Coding, and MPEG Multimedia Middleware (M3W) Microsoft has Direct X/DirectShow framework Many, many other stuff …

If there are too many “standard”frameworks for thedevelopers to support, these “standards”are as badas no standard at all