24
Centrum Wiskunde & Informatica Engineering the Ambulant Multimedia Player Jack Jansen < [email protected] > SEN5 group CWI 1 dinsdag 17 mei 2011

Engineering the Ambulant Multimedia Player

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Centrum Wiskunde & Informatica

Engineering the Ambulant Multimedia PlayerJack Jansen <[email protected]>

SEN5 group

CWI

1dinsdag 17 mei 2011

Centrum Wiskunde & Informatica

Outline of the Talk

What is Ambulant?

Design

Implementation

Success stories

Lessons learned

2

2dinsdag 17 mei 2011

Centrum Wiskunde & Informatica

What is Ambulant?

Multimedia playback engine

SMIL-based

Desktop: Windows, Mac, Linux

Browser plugin: Safari, IE, Firefox (win/linux)

Mobile: iPad, iPhone

Initial implementation sponsored bt NLNet Foundation

3

3dinsdag 17 mei 2011

Centrum Wiskunde & Informatica

Target Market

Ourselves

Test SMIL standardisation

Platform for experimentation

Similar groups

Generally: scientists, experimentors and hackers

4

4dinsdag 17 mei 2011

Centrum Wiskunde & Informatica

Design Guidelines

Use formalisms only sparingly

Small team

Highly trained staff

Tight cooperation

Nothing is cast in concrete

Agile Development! Yeah!

Probably influenced by “The Zen of Python”

5

5dinsdag 17 mei 2011

Centrum Wiskunde & Informatica

Design Requirements

Adaptable, extensible, embeddable

Portable

Platform-native GUI

Enables use of native media toolkits

Expected user experience

Efficient

Handhelds, embedded systems

6

6dinsdag 17 mei 2011

Centrum Wiskunde & Informatica

PlayableDatasource Playable Renderer

Parser

Scheduler

Playable Renderer Surface

Layout Manager

GUI window

Datasource

Sing

le in

stan

ces

Mul

tiple

inst

ance

s

Mac

hine

depe

nden

tM

achi

nein

depe

nden

t

Task Scheduler

DOM tree

SMIL State

Plugin Engine

Global Design25 UML-ish diagrams

1500 lines of text

Each component can be replaced

Almost all have been...

7

7dinsdag 17 mei 2011

Centrum Wiskunde & Informatica

Embedding and Extending

Clean well-defined API

Fully available in C++, Python

Python bindings are two-way

Generated

Beautiful....

Wanted: COM/OLE, Java?

8

8dinsdag 17 mei 2011

Centrum Wiskunde & Informatica

State of the Code

Uses ffmpeg, live, expat, xerces, SDL, gettext, ....

Linux: gtk, qt

MacOS: Cocoa, CoreGraphics

Windows: DirectDraw, Direct2D

iOS: UIKit+CoreGraphics

Dropped: Zaurus, Nokia 770, Windows Mobile

Missing: WM7, Android, Symbian

9

9dinsdag 17 mei 2011

Centrum Wiskunde & Informatica

Meaningless Metrics

About 100KLOC

60 Interfaces

450 Methods

450 Classes

{ grep, wc, interpret, refine}

10

10dinsdag 17 mei 2011

Centrum Wiskunde & Informatica

Development Environment

Native:

auto*, make

XCode

Visual Studio

hg

Doxygen

11

11dinsdag 17 mei 2011

Centrum Wiskunde & Informatica

Development Environment - 2

Poor-mans code review (checkin messages)

Nightly builds

Test suite (finally) under development

12

12dinsdag 17 mei 2011

Centrum Wiskunde & Informatica

Use Case - SMIL

Extensively used during development of

SMIL 2.1

SMIL 3.0

13

13dinsdag 17 mei 2011

Centrum Wiskunde & Informatica

Use Case - Amis Daisy Reader

Digital Talking Books

Embeds Ambulant

Screen reading

Highlighting

Navigation

14

www.daisy.org/amis

14dinsdag 17 mei 2011

Centrum Wiskunde & Informatica

Use Case - Ambulant Annotator

FP6, BRICKS project

Seminal Secondary Screen paper

Sofa-based editing and sharing

Python-based XMLRPC server in Ambulant

Client UI on the handheld

Pablo Cesar, Dick C.A. Bulterman and Jack Jansen. 2008. Usages of the Secondary Screen in an Interactive Television Environment: Control, Enrich, Share, and Transfer Television Content. In LNCS VOL. 5066/2008, pp. 168-177. Springer Berln/Heidelberg, DE. DOI= 10.1007/978-3-540-69478-6_22

15

15dinsdag 17 mei 2011

Centrum Wiskunde & Informatica

PlayableDatasource Playable Renderer

Parser

Scheduler

Playable Renderer Surface

Layout Manager

GUI window

Datasource

Sing

le in

stan

ces

Mul

tiple

inst

ance

s

Mac

hine

depe

nden

tM

achi

nein

depe

nden

t

Task Scheduler

DOM tree

SMIL State

Plugin Engine XMLRPC Server

Implementation

Runs on “TV”

Various UIs on various handhelds

16

16dinsdag 17 mei 2011

Centrum Wiskunde & Informatica

Use Case - Adaptive Time-based Web Apps

Integrate time into web application

Ambulant in WebKit plugin

Uses WebKit DOM

Glue in Python/WebKit/JavaScript

Jack Jansen and Dick C.A. Bulterman. 2008. Enabling adaptive time-based web applications with SMIL state. In Proceeding of the eighth ACM symposium on Document engineering (DocEng '08). ACM, New York, NY, USA, 18-27. DOI=10.1145/1410140.1410146

17

17dinsdag 17 mei 2011

Centrum Wiskunde & Informatica

PlayableDatasource Playable Renderer

Parser

Scheduler

Playable Renderer Surface

Layout Manager

GUI window

Datasource

Sing

le in

stan

ces

Mul

tiple

inst

ance

s

Mac

hine

depe

nden

tM

achi

nein

depe

nden

t

Task Scheduler

DOM tree

SMIL State

Plugin Engine

DOM tree

SMIL State

WebKit Glue

Implementation

Glue is Python and Javascript

18

18dinsdag 17 mei 2011

Centrum Wiskunde & Informatica

Use Case - Ta2 VCE

FP7 Project

Composition-based video-conferencing

Adds Live Video, Flash, specialised renderers

Adds Python-based XMLRPC control

Jack Jansen, Pablo Cesar, Dick C.A. Bulterman, Tim S. Stevens, Ian C. Kegel and Jochen Issing. 2011. Enabling Composition-Based Video-Conferencing for the Home. Submitted to IEEE Trans.MM.

19

19dinsdag 17 mei 2011

Centrum Wiskunde & Informatica

PlayableDatasource Playable Renderer

Parser

Scheduler

Playable Renderer Surface

Layout Manager

GUI window

Datasource

Sing

le in

stan

ces

Mul

tiple

inst

ance

s

Mac

hine

depe

nden

tM

achi

nein

depe

nden

t

Task Scheduler

DOM tree

SMIL State

Plugin Engine XMLRPC Server

Playable RendererDatasource

Implementation

Driven by other components

Complexity is in SMIL

20

20dinsdag 17 mei 2011

Centrum Wiskunde & Informatica

Use Case - Axmedis

Automatic Production of Media for Multichannel Distribution

CWI not involved

FP6 Project, code still available

http://www.axmedis.org/documenti/view_documenti.php?doc_id=3507

www.axmedis.org

21

21dinsdag 17 mei 2011

Centrum Wiskunde & Informatica

What we did Right

API

and willingness to adapt and refactor

small team!

Multi-everything to the core

Light-weight (human) processes

22

22dinsdag 17 mei 2011

Centrum Wiskunde & Informatica

What we did Wrong

Framework, should have been Toolbox:-(

Hinders re-use by others

No “Application” object

Hinders embedding

Some things left too long

Nightly builds

Automatic testing

23

23dinsdag 17 mei 2011

Centrum Wiskunde & Informatica

Closing Remarks

Slides: http://www.cwi.nl/~jack/presentations/ambulant-se.pdf

See www.ambulantplayer.org for more

Questions, discussion, ...

24

24dinsdag 17 mei 2011