Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

56
Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)
  • date post

    19-Dec-2015
  • Category

    Documents

  • view

    217
  • download

    0

Transcript of Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Page 1: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Dali Virtual Machine

Wei Tsang Ooi(With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Page 2: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Motivations

We know how to encode, transmit and store multimedia data today

People start looking into ways to process multimedia data

Page 3: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Video Editing

Concat, cross-fade, overlay, cut and paste

Page 4: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Gateway

Convert from one format to anotherChange compression rate

transcoder(format A) format Binput video output video

Page 5: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

DBMS

“ Find all movies in the database that contain this image “

Page 6: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Set-top Boxes

Subtitling and close captioningMixing of incoming movies

Page 7: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Lecture Browser

Match video to slideSwitch between video streams

Page 8: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Current Solutions

Black box C code (mpeg_play) Hard to reuse/adapt/break apart Unpredictable performance

Standard library (PPM, IJG) Least common denominator (RGB for

all)Video frames --> RGB --> gray

Page 9: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

History

Rivl - high level scripting language for multimedia processing

Still suffers from “black box” problem

Page 10: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Experience

Real cost of processing Inherently complex operations

Projective transform

Layered operationsVideo decoding

Simple operations but lots of dataCopy

Page 11: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Dali Architecture

Dali Code

Dali Compiler

DVM Code

Dali Virtual Machine

User Expert User

MMX TriMediaC

Page 12: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Today’s Talk

DVM Code

Dali Virtual Machine

Page 13: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

DVM Code : Design Goal

Small number of composable abstractions

Simple, predictable opcodesHigh performanceTarget for compilerEasy to extend

Page 14: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Abstractions

Byte imageBitstreamMPEGJPEGBit masksPCM

Page 15: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Abstractions

Byte imageBitstreamMPEGJPEGBit masksPCM

Page 16: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Byte Image

Two dimensional array of byteCan be either physical or virtual

physicalimage virtual

image

Page 17: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Byte Image Can Represent

Gray scale imageRGB imageYUV imageAlpha channel

Page 18: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Example Code : Fractal

Page 19: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

smaller = byte_new (neww, newh);byte_shrink_2x2(image,smaller);

image

smaller

neww

newh

Page 20: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

image

target = byte_clip(image,0,0,dx,2*dy);byte_set(target,0);target = byte_clip(image,3*dx,0,dx,2*dy);byte_set(target,0);

targetdx

2dy

Page 21: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

target = byte_clip(image, dx, 0, neww, newh);byte_copy(smaller, target);

target

image

smaller

newh

neww

dx

Page 22: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

target = byte_clip(image, 2*dx, 2*dy, neww, newh);byte_copy(smaller, target);target = byte_clip(image, 0, 2*dy, neww, newh);byte_copy(smaller, target);

image

smaller

newwnewh

dx

2dy

Page 23: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

DVM CodeDx = 0.25 * byte_width(image);dy = 0.25 * byte_height(image);neww = 0.5 * byte_width(image);newh = 0.5 * byte_height(image);smaller = byte_new (neww,newh);for (i = 0; i < n; i++) { byte_shrink_2x2(image,smaller);

Target = byte_clip(image,0,0,dx,2*dy);byte_set(target,0);target = byte_clip(image,3*dx,0,dx,2*dy);byte_set(target,0);target = byte_clip(image, dx, 0, neww, newh);

byte_copy(smaller, target); target = byte_clip(image, 2*dx, 2*dy, neww, newh); byte_copy(smaller, target); target = byte_clip(image, 0, 2*dy, neww, newh); byte_copy(smaller, target);}

Page 24: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

General Dali Strategies

Specific instruction byte_shrink_2x2, byte_shrink_4x4, etc

Explicit memory allocation byte_new

Reduce data byte_clip

Composable abstraction byte image

Page 25: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Performance

Dali VM Rivl

Sparc 20 0.5 s 8.8 s

P2 266 0.3 s 4.0 s

run fractal with n = 4 on 800x600 gray scale image

about 21 frames/sec for 320x240 video

Page 26: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Abstractions

Byte imageBitstreamMPEGJPEGBit masksPCM

Page 27: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

MPEG

Getting important and pervasiveComplex formatComplex code (mpeg_play)Most decoders provides

GetNextFrame() interfaceRandom access, direct transfer

difficult

Page 28: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Abstraction for MPEG Video

. . .seqhdr

gophdr gop

gophdr gop

seqend

Page 29: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Abstraction for MPEG Video

. . .seqhdr

gophdr gop

gophdr gop

seqend

. . .pichdr

pichdrpic pic

Page 30: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

DVM Code Examples

Skip to the n-th frame

for (i = 0; i < n; i++) { mpeg_pic_hdr_find(bs); mpeg_pic_hdr_skip(bs);

}

Page 31: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

DVM Code Examples

Skip to the n-th frame

for (i = 0; i < n; i++) { mpeg_pic_hdr_find(bs); mpeg_pic_hdr_skip(bs);

}

Page 32: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

DVM Code Examples

Skip to the n-th frame

for (i = 0; i < n; i++) { mpeg_pic_hdr_find(bs); mpeg_pic_hdr_skip(bs);

}

Page 33: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

DVM Code Examples

Skip to the n-th frame

for (i = 0; i < n; i++) { mpeg_pic_hdr_find(bs); mpeg_pic_hdr_skip(bs);

}

Page 34: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

inbs1 inbs2

outbs

hdr hdr

hdr hdr

gop

gop

gop

gop

Concat 2 Video Sequences

Page 35: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

DVM Code

Concat two sequences

While not end_of(inbs1) { gop_hdr_dump(inbs1, outbs); gop_dump(inbs1, outbs);}While not end_of(inbs2) {

gop_hdr_dump(inbs2, outbs); gop_dump(inbs2, outbs);}

Page 36: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Performance Analysis

Decode MPEG sequences to PPMNo outputRun on 3 different sequences

Page 37: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Performance

Rate (frame/sec)

Mpeg PlaySparc 20

Dali VMSparc 20

psycho(160x120)

27.3 27.9

bus(320x240)

8.8 9.9

tennis(320x240)

7.8 9.1

Page 38: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Performance

Rate (frame/sec)

Mpeg PlaySparc 20

Dali VMSparc 20

Dali VMP2 266

psycho(160x120)

27.3 27.9 112.1

bus(320x240)

8.8 9.9 36.0

tennis(320x240)

7.8 9.1 32.6

Page 39: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

MPEG Strategies

Expose structure Gop header, gop instead of just frames

Break up layer Parse, decode, color space conversions

Page 40: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Show Time !

Decode a MPEG sequenceFor each frame scale it to “stamp”

sizeCreate a contact sheet

Page 41: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Abstractions

Byte imageBitstreamMPEGJPEGBit masksPCM

Page 42: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

What Is Bitstream ?

Skip to the n-th frame

for (i = 0; i < n; i++) { mpeg_pic_hdr_find(bs); mpeg_pic_hdr_skip(bs);

}

Page 43: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Bitstream

parser1011001

chunk of memory

Page 44: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Mode of Operations

File i/ostatic memory

fread/fwrite

parser

Page 45: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Mode of Operations

Networkstatic memory

socket

parser

Page 46: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Mode of Operations

Memory map

parser

entire file

Page 47: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

inbs videovideo videoaudio audio audio

mpeg system stream

Page 48: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

filter

videobs

inbs videovideo videoaudio audio audio

mpeg system stream

Page 49: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

filter

videobs

inbs videovideo videoaudio audio audio

parser

mpeg system stream

Page 50: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Bitstream Strategies

Predictable performance Explicit I/O

Page 51: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Recap: Current Solutions

Black box C code (mpeg_play) Hard to reuse/adapt/break apart Unpredictable performance

Page 52: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Recap: Cost of Processing

Inherently complex operations Layered operationsSimple operations but lots of data

Page 53: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

How We Solve the Problems

Difficult to reuse/adapt/break apart Minimum set of abstractions Abstractions are simple Simple reusable opcodes

Unpredictable performance Explicit I/O Explicit memory allocations

Page 54: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

How We Solve the Problems

Inherently complex operations Special case Clipping and masking

Layered operations Expose structure

Simple operations but lots of data Special case Clipping and masking

Page 55: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Extending with new formats : JPEG, WAV, AVI etc

TriMedia chip implementation

Application : lecture browser

Work in Progress

Page 56: Dali Virtual Machine Wei Tsang Ooi (With Brian, Sugata, Tibor, Steve, Haye, Matthew, Dmitriy)

Future Work

Multithreading

MMX implementationCompiler