Download - Helix On The OLPC

Transcript
Page 1: Helix On The OLPC

Helix Summit 2007

Helix On The OLPCHelix On The OLPC

Python Extensions of Helix

Page 2: Helix On The OLPC

Helix Summit 2007 2

IntroductionsIntroductions

• We support open software, open communities, and an open world

• Peter Krenesky• Lead Software Engineer• Tech Lead for OLPC projects @ OSL

Page 3: Helix On The OLPC

Helix Summit 2007 3

ForewordForeword

•OLPC is a very unique device

•Its is not just a “laptop”

Page 4: Helix On The OLPC

Helix Summit 2007 4

SummarySummary

• Python API Overview• Helix Player On the OLPC:

• Watch & Listen

• ProducerSDK On the OLPC: • Produce• Teleconference

• Future Plans:• Audio Presentations Via Producer

Page 5: Helix On The OLPC

Helix Summit 2007 5

Pykit - OverviewPykit - Overview

• Python Modules• HxPlay• HxRecord

• Capture• Editing• Encoding

Page 6: Helix On The OLPC

Helix Summit 2007 6

Pykit - Design GoalsPykit - Design Goals

• Simplify the interface• Hide engine initialization• Hide initialization of components

• Resizing• Seeking

• Reuse as much as possible• Start from pyplayer• Feature implementations borrowed from splay

Page 7: Helix On The OLPC

Helix Summit 2007 7

HxPlay - OverviewHxPlay - Overview

• Ported to atlas• Target: player_kit_python• Code cleanup

• Added new features• QuickSeek• Video Site Resizing• Playlist support• Color Controls

Page 8: Helix On The OLPC

Helix Summit 2007 8

HxPlay - Player sampleHxPlay - Player sample

Import hxplayhxplay.init()player = hxplay.open(“foo.mp3”)

player.start()

Page 9: Helix On The OLPC

Helix Summit 2007 9

HxPlay – Incomplete HxPlay – Incomplete FeaturesFeatures

• Support other than Linux

• Support for Multiple Players

• Audio Formatting

• Audio Visualization

Page 10: Helix On The OLPC

Helix Summit 2007 10

HxRecord - OverviewHxRecord - Overview

• New Python Bindings Around ProducerSDK

• Target: player_kit_python_hxrecord

• ProducerSDK modifications• Porting to atlas• Adding features

Page 11: Helix On The OLPC

Helix Summit 2007 11

HxRecord - Design GoalsHxRecord - Design Goals

• Match ProducerSDK workflow

• Full featured

• Simplicity

• Merger with hxplay

Page 12: Helix On The OLPC

Helix Summit 2007 12

HxRecord - Code SampleHxRecord - Code Sample

dictionary = { ‘pluginType’ :

’avFileInput’ , ’filename’ : ’foo.avi’

}input = hxrecord.createInput(dictionary)encodingjob.setInput(input)

Page 13: Helix On The OLPC

Helix Summit 2007 13

HxRecord – RoadmapHxRecord – Roadmap

• Bindings Mostly Complete

• Debug Ported ProducerSDK

• Merge ProducerSDK components with Atlas

• Merge HxRecord and HxPlay

Page 14: Helix On The OLPC

Helix Summit 2007 14

ProducerSDK - Current ProducerSDK - Current HierarchyHierarchy

EncodeSVCMediaPlayback

Class Factory

Video Output (sites)

Container Classes

Class Factory

Video Output (sites)

Container Classes

Atlas ProducerSDK

Page 15: Helix On The OLPC

Helix Summit 2007 15

ProducerSDK – Intermediate ProducerSDK – Intermediate StepStep

EncodeSVCMediaPlayback

Class Factory

Video Output (sites)

Container Classes

Class Factory

Video Output (sites)

Container Classes

Atlas

Page 16: Helix On The OLPC

Helix Summit 2007 16

ProducerSDK - Planned ProducerSDK - Planned HierarchyHierarchy

EncodeSVCMediaPlayback

Class Factory

Atlas

Video Output (sites)

Container Classes

Page 17: Helix On The OLPC

Helix Summit 2007 17

PyKit - Current HierarchyPyKit - Current Hierarchy

HxRecord

EngineInitialization

HxPlay

EngineInitialization

Page 18: Helix On The OLPC

Helix Summit 2007 18

PyKit - Planned HierarchyPyKit - Planned Hierarchy

HxRecordHxPlay

HxEngine

PyKit

Page 19: Helix On The OLPC

Helix Summit 2007 19

Helix Player on the OLPCHelix Player on the OLPC

• Named “Watch and Listen” after the activity that children are doing.

• Lots of possible features but need to keep it simple

Page 20: Helix On The OLPC

Helix Summit 2007 20

Watch & Listen - Watch & Listen - ScreenshotScreenshot

Page 21: Helix On The OLPC

Helix Summit 2007 21

Watch & Listen - FeaturesWatch & Listen - Features

• Standard Playback Buttons• Seeking via slider• Screen size toggles• Metadata display• Playlist Support

Page 22: Helix On The OLPC

Helix Summit 2007 22

The OLPC JournalThe OLPC Journal

• Stores a history of what a child has done

• Activities can be resumed

• Files have a mime-type

• Only place where Watch & Listen can be launched

Page 23: Helix On The OLPC

Helix Summit 2007 23

Journal - ScreenshotJournal - Screenshot

Page 24: Helix On The OLPC

Helix Summit 2007 24

W & L - Features We’d Like W & L - Features We’d Like to Addto Add

• Visualizations for audio Playback

• Keyboard Shortcuts

• Sharing - Collaboration among children

Page 25: Helix On The OLPC

Helix Summit 2007 25

Sharing - OverviewSharing - Overview

• It’s a collaboration tool not just a laptop!

• Shared learning experiences

Page 26: Helix On The OLPC

Helix Summit 2007 26

Watch & Listen - Watch & Listen - MulticastingMulticasting

• Positives• Scales very well for 1:M transmission

• Negatives• Server is a large image• Simultaneous multicasts may degrade mesh

Page 27: Helix On The OLPC

Helix Summit 2007 27

OLPC - Mesh NetworkingOLPC - Mesh Networking

• 802.11s• Ad-hoc Wireless network• May easily span miles• Peers may connect indirectly through other Peers

Page 28: Helix On The OLPC

Helix Summit 2007 28

W & L - Synchronized W & L - Synchronized ViewingViewing• Positives

• Doesn’t require a much larger image

• Negatives • Limited Scaling• Must all have access to video

• Keeping video synchronized is difficult

Server

Page 29: Helix On The OLPC

Helix Summit 2007 29

Produce - OverviewProduce - Overview

• Capture - video and audio• Encoding• Simple Video Editing

• Cropping• Resizing• Cutting & Joining videos• Add Audio Tracks

Page 30: Helix On The OLPC

Helix Summit 2007 30

Produce - Record MockupProduce - Record Mockup

Page 31: Helix On The OLPC

Helix Summit 2007 31

Produce - Record Produce - Record ScreenshotScreenshot

Page 32: Helix On The OLPC

Helix Summit 2007 32

Produce - Editing MockupProduce - Editing Mockup

Page 33: Helix On The OLPC

Helix Summit 2007 33

Teleconference - OverviewTeleconference - Overview

• Audio and video Teleconferencing using Helix

• Senior Capstone Project• Year long project required for graduation

Page 34: Helix On The OLPC

Helix Summit 2007 34

Teleconference - OverviewTeleconference - Overview

• Will use both HxRecord & HxPlay

• 1:1 Video and or Audio at usable rates

• CPU power bigger issue than bandwidth

• M:N Conferencing may not be possible with CPU limitations

Page 35: Helix On The OLPC

Helix Summit 2007 35

Teleconference - 1:1 Teleconference - 1:1 WorkflowWorkflow

Child 1

Producer (out)

Player (in)

Child 2

Player (in)

Producer (out)

Page 36: Helix On The OLPC

Helix Summit 2007 36

Teleconference - M:N Teleconference - M:N ChallengesChallenges• Every Participant adds 2 streams

• Videos must be decoded and drawn to screen

• Audio must be multiplexedChild 1

Producer (out) Child2

Child3

Producer (in)

Player (in)

AudioCombined Stream

Page 37: Helix On The OLPC

Helix Summit 2007 37

Teleconference – Special Teleconference – Special RequirementsRequirements

• All communication between laptops must use Python dbus• XO has special libraries for locating and communicating with peers on the mesh

• Plugins will be required for both Producer and Player

Page 38: Helix On The OLPC

Helix Summit 2007 38

Webcaster – OverviewWebcaster – Overview

• PowerPoint + Recorded Audio

• Proposed project • Will probably be done in pieces as class projects

Page 39: Helix On The OLPC

Helix Summit 2007 39

RecapRecap

• Python API – A lot of momentum

• Helix On the OLPC: • Watch & Listen• Produce• Teleconference• Audio Presentations Via Producer

Page 40: Helix On The OLPC

Helix Summit 2007 40

Questions?Questions?

• Peter Krenesky• Email: [email protected]• Web: http://osuosl.org

• Ribosome Targets:• Player_kit_python• Player_kit_python_hxrecord

• http://laptop.org