0
Timeshift Everything, Miss Nothing Mash up your PVR with Kamaelia Euro OSCON 2006, Brussels Michael Sparks, Senior Researc...
<ul><ul><li>Prologue </li></ul></ul>
<ul><ul><li>Time shifting... </li></ul></ul><ul><ul><li>Enshrined as a right in UK Law </li></ul></ul><ul><ul><li>17A.  - ...
<ul><ul><li>Time shifting... </li></ul></ul><ul><ul><li>Enshrined as a right in UK Law </li></ul></ul><ul><ul><li>17A.  - ...
<ul><ul><li>Kamaelia Macro </li></ul></ul>
<ul><ul><li>Kamaelia Macro </li></ul></ul><ul><ul><li>It records and transcodes what is broadcast over DTT for future view...
 
 
 
<ul><ul><li>(video) </li></ul></ul>
<ul><ul><li>How do you build this? </li></ul></ul>
Kamaelia Macro: Target DVB Multiplex outbox Channel Transcoder inbox DVB  Demuxer  BBC_ONE inbox Channel Transcoder inbox ...
Kamaelia Macro: Status DVB Multiplex outbox Channel Transcoder inbox DVB  Demuxer  BBC_ONE inbox Channel Transcoder inbox ...
Kamaelia Macro: Status Scaling up simply awaiting hardware DVB Multiplex outbox Channel Transcoder inbox DVB  Demuxer  BBC...
Top Level Schematic DVB Multiplex outbox Channel Transcoder inbox DVB  Demuxer  BBC_ONE inbox
Channel Transcoder Schematic Channel Transcoder EITDemux inbox _eit_ inbox EITParsing outbox inbox Carousel transcoder_fac...
Programme Identification Schematic EIT Parsing PSI Packet Reconstructor inbox inbox EIT Packet Parser outbox inbox Now Nex...
Programme Transcoding Schematic (a pipeline) Programme Transcoder Pipethrough (“mencoder -o file options...”) inbox contro...
<ul><ul><li>But code isn't pretty  web 2.0 esque boxes  gradiented , it's never like that... </li></ul></ul>
<ul><ul><li>End of Prologue </li></ul></ul>
<ul><ul><li>Aims of Kamaelia </li></ul></ul>
Aims of this Talk To stave off doom from buggy software on parallel machines
Aims of this Talk ahem
Aims of this Talk (nb, that's something that concerns me, Kamaelia is partly aimed at staving that off, I'm not claiming i...
Aims of this Talk <ul><li>Understand what Kamaelia is </li></ul>
Aims of this Talk <ul><li>Understand what Kamaelia is </li></ul><ul><li>Take away our research results, and assimilate our...
Aims of this Talk <ul><li>Understand what Kamaelia is </li></ul><ul><li>Take away our research results, and assimilate our...
Aims of this Talk <ul><li>Understand what Kamaelia is </li></ul><ul><li>Take away our research results, and assimilate our...
Aims of this Talk <ul><li>Understand what Kamaelia is </li></ul><ul><li>Take away our research results, and assimilate our...
Learning More:  Kamaelia Open Space  <ul><li>What : kinda like a project's Foo/Bar Camp </li></ul><ul><li>Why : To help  y...
Aims of this Talk <ul><li>To share an approach we find fun and useful </li></ul>
<ul><ul><li>What ? </li></ul></ul>
<ul><ul><li>What ? </li></ul></ul><ul><ul><li>(demo) </li></ul></ul>
<ul><ul><li>What you've just seen. </li></ul></ul>
What you've just seen Component outbox inbox
What you've just seen Component outbox inbox Component outbox inbox
What you've just seen Component outbox inbox Component outbox inbox
What you've just seen Component outbox inbox Component outbox inbox Component outbox inbox
What you've just seen Component outbox inbox Component outbox inbox Component outbox inbox
What you've just seen Component outbox inbox Component outbox inbox Component outbox inbox
What you've just seen Component outbox inbox Component outbox inbox Component outbox inbox
What you've just seen Component outbox inbox Component outbox inbox Component outbox inbox
What you've just seen Component outbox inbox Component outbox inbox Component outbox inbox
What you've just seen Component inbox Component Component outbox outbox  |  inbox outbox  |  inbox
What you've just seen Component inbox Component Component outbox outbox | inbox outbox | inbox
What you've just seen What's inside the box? Component inbox Component Component outbox outbox | inbox outbox | inbox
<ul><ul><li>Python Generators </li></ul></ul>
Python Generators Fibonacci Demo
<ul><ul><li>Component Basics </li></ul></ul>
Component Basics Rotating Angle Demo “ turning a generator into a component”
Component Basics What use is this? class  RotatingAngle(Axon.Component.component): def  main(self): while  1: self.send(x,...
Component Basics Consider these components: class loopingCounter(Axon.Component.component) class  cartesianPingPong(Axon.C...
Component Basics Bouncing Cats
Component Basics Graphline( CAT = BasicSprite(image=cat), ROTATOR = loopingCounter(rotation_speed), MOVER = cartesianPingP...
<ul><ul><li>What's it good for? </li></ul></ul>
Some stuff we've done Networked Audio Mixer Matrix Dirac/Vorbis distribution/decode/players Subtitling distribution server...
Stuff trainees have done pre-university trainee: Previewing PVR content on a mobile phone Shakespeare script parsing and d...
Stuff trainees have done pre-university trainee: Previewing PVR content on a mobile phone Shakespeare script parsing and d...
Stuff trainees have done Summer trainee: (2 nd  year student) Tools for simple reliable multicast Multicast island joining
Google Summer of Code Students <ul><ul><li>Ryan Lothian </li></ul></ul><ul><ul><li>Thomas Flanitzer </li></ul></ul><ul><ul...
Google Summer of Code <ul><li>For us SoC was an opportunity to have components implemented that we've wanted for some time...
Google Summer of Code <ul><li>For us SoC was an opportunity to have components implemented that we've wanted for some time...
Google Summer of Code <ul><li>Components for: </li></ul><ul><ul><li>Bit Torrent integration, a web server, web clients, IR...
Ease of Use <ul><li>Now have 6 data points for ease of use </li></ul><ul><li>The youngest, most naïve students have produc...
Stuff other parts of the BBC have done Radio & Music Interactive: Prototyped  a system for recording all BBC radio output,...
Stuff other parts of the BBC have done Radio & Music Interactive: Prototyped  a system for recording all BBC radio output,...
Stuff other parts of the BBC have done Radio & Music Interactive: Prototyped  a system for recording all BBC radio output,...
Stuff other parts of the BBC have done Radio & Music Interactive: Prototyped  a system for recording all BBC radio output,...
Kamaelia Macro: Revisited
<ul><ul><li>What Macro looks like inside </li></ul></ul><ul><ul><li>(yes, it really  is  boxes) </li></ul></ul>
Top Level Schematic DVB Multiplex outbox Channel Transcoder inbox DVB  Demuxer  BBC_ONE inbox
Top Level Code Graphline( SOURCE=DVB_Multiplex(freq, pids[&quot;BBC ONE&quot;]+pids[&quot;EIT&quot;], feparams), DEMUX=DVB...
Channel Transcoder Schematic Channel Transcoder EITDemux inbox _eit_ inbox EITParsing outbox inbox Carousel transcoder_fac...
Channel Transcoder Code def  ChannelTranscoder(service_id, mencoder_options, dir_prefix): def  transcoder_factory(eit): re...
Programme Identification Schematic EIT Parsing PSI Packet Reconstructor inbox inbox EIT Packet Parser outbox inbox Now Nex...
Programme Identification Code def  EITParsing(*service_ids): return pipeline( PSIPacketReconstructor(), EITPacketParser(),...
Programme Transcoding Schematic (a pipeline) Programme Transcoder Pipethrough (“mencoder -o file options...”) inbox contro...
Programme Transcoding Code class ProgrammeTranscoder(Axon.Component.component): Inboxes = { &quot;inbox&quot; : &quot;TS p...
Kamaelia Macro <ul><ul><li>Code is in the distribution is you want to play </li></ul></ul><ul><ul><li>(only works under Li...
But Why Mashup?  <ul><ul><li>A  web mashup  often takes data from multiple sources (websites) transforms them and republis...
Kamaelia: Ideas  <ul><ul><li>Things you might want to do (to Macro and beyond) </li></ul></ul><ul><ul><li>3D user interfac...
Kamaelia Futures <ul><ul><li>We want to replace the need to write code when writing components. </li></ul></ul><ul><ul><li...
Kamaelia Futures <ul><ul><li>Collaborative Storyboarding/programme production tools </li></ul></ul><ul><ul><li>Open source...
Thank you! Thank you!
Kamaelia Open Space  <ul><li>This Friday  22 nd  Sept, 11am-5pm </li></ul><ul><li>FoAM's Offices: </li></ul><ul><ul><li>Ko...
Upcoming SlideShare
Loading in...5
×

Timeshift Everything, Miss Nothing - Mashup your PVR with Kamaelia

2,636

Published on

This presentation on Kamaelia at Euro OSCON 2006, and specifically focusses
on a particular system - Kamaelia Macro which is essentially a system for
timeshifting pretty much everything.

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,636
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
36
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Timeshift Everything, Miss Nothing - Mashup your PVR with Kamaelia"

  1. 1. Timeshift Everything, Miss Nothing Mash up your PVR with Kamaelia Euro OSCON 2006, Brussels Michael Sparks, Senior Research Engineer, BBC Research
  2. 2. <ul><ul><li>Prologue </li></ul></ul>
  3. 3. <ul><ul><li>Time shifting... </li></ul></ul><ul><ul><li>Enshrined as a right in UK Law </li></ul></ul><ul><ul><li>17A. - (1) The making in domestic premises for private and domestic use of a recording of a broadcast solely for the purpose of enabling it to be viewed or listened to at a more convenient time does not infringe any right conferred by Part 2 in relation to a performance or recording included in the broadcast. </li></ul></ul>
  4. 4. <ul><ul><li>Time shifting... </li></ul></ul><ul><ul><li>Enshrined as a right in UK Law </li></ul></ul><ul><ul><li>17A. - (1) The making in domestic premises for private and domestic use of a recording of a broadcast solely for the purpose of enabling it to be viewed or listened to at a more convenient time does not infringe any right conferred by Part 2 in relation to a performance or recording included in the broadcast. </li></ul></ul><ul><ul><li>TiVO*, Sky+, Goodmans, Grundig, Humax, Sagem, Topfield, Sharp, Sony, Thomson, Technosonic, etc... </li></ul></ul><ul><ul><li>* not sold in UK anymore </li></ul></ul>
  5. 5. <ul><ul><li>Kamaelia Macro </li></ul></ul>
  6. 6. <ul><ul><li>Kamaelia Macro </li></ul></ul><ul><ul><li>It records and transcodes what is broadcast over DTT for future viewing. </li></ul></ul>
  7. 10. <ul><ul><li>(video) </li></ul></ul>
  8. 11. <ul><ul><li>How do you build this? </li></ul></ul>
  9. 12. Kamaelia Macro: Target DVB Multiplex outbox Channel Transcoder inbox DVB Demuxer BBC_ONE inbox Channel Transcoder inbox Channel Transcoder inbox Channel Transcoder Channel Transcoder Channel Transcoder inbox inbox inbox BBC_TWO BBC_THREE BBC_FOUR CBEEBIES CBBC
  10. 13. Kamaelia Macro: Status DVB Multiplex outbox Channel Transcoder inbox DVB Demuxer BBC_ONE inbox Channel Transcoder inbox Channel Transcoder inbox Channel Transcoder Channel Transcoder Channel Transcoder inbox inbox inbox BBC_TWO BBC_THREE BBC_FOUR CBEEBIES CBBC
  11. 14. Kamaelia Macro: Status Scaling up simply awaiting hardware DVB Multiplex outbox Channel Transcoder inbox DVB Demuxer BBC_ONE inbox Channel Transcoder inbox Channel Transcoder inbox Channel Transcoder Channel Transcoder Channel Transcoder inbox inbox inbox BBC_TWO BBC_THREE BBC_FOUR CBEEBIES CBBC
  12. 15. Top Level Schematic DVB Multiplex outbox Channel Transcoder inbox DVB Demuxer BBC_ONE inbox
  13. 16. Channel Transcoder Schematic Channel Transcoder EITDemux inbox _eit_ inbox EITParsing outbox inbox Carousel transcoder_factory inbox next outbox
  14. 17. Programme Identification Schematic EIT Parsing PSI Packet Reconstructor inbox inbox EIT Packet Parser outbox inbox Now Next service filter Now Next Changes outbox inbox outbox inbox outbox outbox
  15. 18. Programme Transcoding Schematic (a pipeline) Programme Transcoder Pipethrough (“mencoder -o file options...”) inbox control signal inbox control _transcodingcomplete _stop signal
  16. 19. <ul><ul><li>But code isn't pretty web 2.0 esque boxes gradiented , it's never like that... </li></ul></ul>
  17. 20. <ul><ul><li>End of Prologue </li></ul></ul>
  18. 21. <ul><ul><li>Aims of Kamaelia </li></ul></ul>
  19. 22. Aims of this Talk To stave off doom from buggy software on parallel machines
  20. 23. Aims of this Talk ahem
  21. 24. Aims of this Talk (nb, that's something that concerns me, Kamaelia is partly aimed at staving that off, I'm not claiming it does that – but it is one approach we're finding useful)
  22. 25. Aims of this Talk <ul><li>Understand what Kamaelia is </li></ul>
  23. 26. Aims of this Talk <ul><li>Understand what Kamaelia is </li></ul><ul><li>Take away our research results, and assimilate our code or approach in your systems </li></ul>
  24. 27. Aims of this Talk <ul><li>Understand what Kamaelia is </li></ul><ul><li>Take away our research results, and assimilate our code or approach in your systems </li></ul><ul><li>To make it clear concurrency can be much simpler if you have the right tools </li></ul>
  25. 28. Aims of this Talk <ul><li>Understand what Kamaelia is </li></ul><ul><li>Take away our research results, and assimilate our code or approach in your systems </li></ul><ul><li>To make it clear concurrency can be much simpler if you have the right tools </li></ul><ul><ul><li>Can be simpler than single threaded code </li></ul></ul>
  26. 29. Aims of this Talk <ul><li>Understand what Kamaelia is </li></ul><ul><li>Take away our research results, and assimilate our code or approach in your systems </li></ul><ul><li>To make it clear concurrency can be much simpler if you have the right tools </li></ul><ul><li>To encourage you to think about using Kamaelia, and collaborating with us </li></ul>
  27. 30. Learning More: Kamaelia Open Space <ul><li>What : kinda like a project's Foo/Bar Camp </li></ul><ul><li>Why : To help you get started, share knowledge etc, </li></ul><ul><li>When: This Friday 22 nd Sept, 11am-5pm </li></ul><ul><li>Where: Here, Brussels, The FoAM Offices </li></ul><ul><ul><li>Koolmijnenkaai 30-34, 1080 Brussels </li></ul></ul><ul><ul><li>Details: http://tinyurl.com/f8szz </li></ul></ul><ul><ul><li>Map: http://tinyurl.com/hsarl </li></ul></ul>
  28. 31. Aims of this Talk <ul><li>To share an approach we find fun and useful </li></ul>
  29. 32. <ul><ul><li>What ? </li></ul></ul>
  30. 33. <ul><ul><li>What ? </li></ul></ul><ul><ul><li>(demo) </li></ul></ul>
  31. 34. <ul><ul><li>What you've just seen. </li></ul></ul>
  32. 35. What you've just seen Component outbox inbox
  33. 36. What you've just seen Component outbox inbox Component outbox inbox
  34. 37. What you've just seen Component outbox inbox Component outbox inbox
  35. 38. What you've just seen Component outbox inbox Component outbox inbox Component outbox inbox
  36. 39. What you've just seen Component outbox inbox Component outbox inbox Component outbox inbox
  37. 40. What you've just seen Component outbox inbox Component outbox inbox Component outbox inbox
  38. 41. What you've just seen Component outbox inbox Component outbox inbox Component outbox inbox
  39. 42. What you've just seen Component outbox inbox Component outbox inbox Component outbox inbox
  40. 43. What you've just seen Component outbox inbox Component outbox inbox Component outbox inbox
  41. 44. What you've just seen Component inbox Component Component outbox outbox | inbox outbox | inbox
  42. 45. What you've just seen Component inbox Component Component outbox outbox | inbox outbox | inbox
  43. 46. What you've just seen What's inside the box? Component inbox Component Component outbox outbox | inbox outbox | inbox
  44. 47. <ul><ul><li>Python Generators </li></ul></ul>
  45. 48. Python Generators Fibonacci Demo
  46. 49. <ul><ul><li>Component Basics </li></ul></ul>
  47. 50. Component Basics Rotating Angle Demo “ turning a generator into a component”
  48. 51. Component Basics What use is this? class RotatingAngle(Axon.Component.component): def main(self): while 1: self.send(x, &quot;outbox&quot;) x = x + 1 if x > 359: x = 0 yield 1
  49. 52. Component Basics Consider these components: class loopingCounter(Axon.Component.component) class cartesianPingPong(Axon.Component.component) class bouncingfloat(Axon.Component.component) class continuousIdentity(Axon.Component.component) class continuousZero(Axon.Component.component) class continuousOne(Axon.Component.component) (from Kamaelia.Automata.Behaviours...)
  50. 53. Component Basics Bouncing Cats
  51. 54. Component Basics Graphline( CAT = BasicSprite(image=cat), ROTATOR = loopingCounter(rotation_speed), MOVER = cartesianPingPong(position, 800, 600, 40), SCALER = bouncingFloat(scale_speed), IMAGER = continuousIdentity(cat), linkages = { (&quot;ROTATOR&quot;,&quot;outbox&quot; ) : (&quot;CAT&quot;, &quot;rotator&quot;), (&quot;MOVER&quot;,&quot;outbox&quot; ) : (&quot;CAT&quot;, &quot;translation&quot;), (&quot;SCALER&quot;,&quot;outbox&quot; ) : (&quot;CAT&quot;, &quot;scaler&quot;), (&quot;IMAGER&quot;,&quot;outbox&quot; ) : (&quot;CAT&quot;, &quot;imaging&quot;), } ).activate() From Examples/SimpleGraphicalApps/BouncingCatGame/Simplegame.py (shutdown fanout removed for space)
  52. 55. <ul><ul><li>What's it good for? </li></ul></ul>
  53. 56. Some stuff we've done Networked Audio Mixer Matrix Dirac/Vorbis distribution/decode/players Subtitling distribution server (mobiles, PCs) Presentation Tools Collaborative Whiteboards * with audio Simple games Visual programming tools Visual Introspection tools Kamaelia Macro ...
  54. 57. Stuff trainees have done pre-university trainee: Previewing PVR content on a mobile phone Shakespeare script parsing and doing something fun with events & data
  55. 58. Stuff trainees have done pre-university trainee: Previewing PVR content on a mobile phone Shakespeare script parsing and doing something fun with events & data Later adapted simply to have the characters talk the play on an IRC channel
  56. 59. Stuff trainees have done Summer trainee: (2 nd year student) Tools for simple reliable multicast Multicast island joining
  57. 60. Google Summer of Code Students <ul><ul><li>Ryan Lothian </li></ul></ul><ul><ul><li>Thomas Flanitzer </li></ul></ul><ul><ul><li>Devendra Laulkar </li></ul></ul><ul><ul><li>Anagha Mudigonda </li></ul></ul>
  58. 61. Google Summer of Code <ul><li>For us SoC was an opportunity to have components implemented that we've wanted for some time </li></ul><ul><ul><li>Students implementing them appear to have had fun. </li></ul></ul><ul><li>Also they've been guinea pigs to test our ease of use hypothesis </li></ul><ul><li>Large code chunks in our 0.5.0 release </li></ul>
  59. 62. Google Summer of Code <ul><li>For us SoC was an opportunity to have components implemented that we've wanted for some time </li></ul><ul><ul><li>Students implementing them appear to have had fun. </li></ul></ul><ul><li>Also they've been guinea pigs to test our ease of use hypothesis </li></ul><ul><li>Large code chunks in our 0.5.0 release </li></ul><ul><ul><li>Hopefully uploaded to sourceforge today :-) </li></ul></ul>
  60. 63. Google Summer of Code <ul><li>Components for: </li></ul><ul><ul><li>Bit Torrent integration, a web server, web clients, IRC clients, icecast clients tone generation </li></ul></ul><ul><ul><li>3D systems – widgets, pygame component wrapping, 3D scribbling, simple image viewer </li></ul></ul><ul><ul><li>secure communications – including a nascent (choppy) secure phone. </li></ul></ul><ul><ul><li>prototype trusted communications tools </li></ul></ul><ul><ul><ul><li>eg reporter trusting his comms to the BBC won't be changed without detection </li></ul></ul></ul>
  61. 64. Ease of Use <ul><li>Now have 6 data points for ease of use </li></ul><ul><li>The youngest, most naïve students have produced the most complex and interesting systems </li></ul><ul><li>The older ones have generally had more baggage, and unless used to thinking about X talking to Y, to Z, have had more problems. </li></ul><ul><ul><li>Even our weakest SoC student has produced interesting data </li></ul></ul>
  62. 65. Stuff other parts of the BBC have done Radio & Music Interactive: Prototyped a system for recording all BBC radio output, transcoding it and making podcasts from the resulting data.
  63. 66. Stuff other parts of the BBC have done Radio & Music Interactive: Prototyped a system for recording all BBC radio output, transcoding it and making podcasts from the resulting data. Bootstrapped the final system rapidly
  64. 67. Stuff other parts of the BBC have done Radio & Music Interactive: Prototyped a system for recording all BBC radio output, transcoding it and making podcasts from the resulting data. Bootstrapped the final system rapidly Created the system without any involvement from us
  65. 68. Stuff other parts of the BBC have done Radio & Music Interactive: Prototyped a system for recording all BBC radio output, transcoding it and making podcasts from the resulting data. This directly led on to the Macro work as a result, including optimisations
  66. 69. Kamaelia Macro: Revisited
  67. 70. <ul><ul><li>What Macro looks like inside </li></ul></ul><ul><ul><li>(yes, it really is boxes) </li></ul></ul>
  68. 71. Top Level Schematic DVB Multiplex outbox Channel Transcoder inbox DVB Demuxer BBC_ONE inbox
  69. 72. Top Level Code Graphline( SOURCE=DVB_Multiplex(freq, pids[&quot;BBC ONE&quot;]+pids[&quot;EIT&quot;], feparams), DEMUX=DVB_Demuxer({ 610: [&quot;BBCONE&quot;], 611: [&quot;BBCONE&quot;], 18: [&quot;BBCONE&quot;], }), BBCONE_HI = ChannelTranscoder(service_ids[&quot;BBC ONE&quot;], **params[&quot;HI&quot;]), linkages={ (&quot;SOURCE&quot;, &quot;outbox&quot;):(&quot;DEMUX&quot;,&quot;inbox&quot;), (&quot;DEMUX&quot;, &quot;BBCONE&quot;): (&quot;BBCONE_HI&quot;, &quot;inbox&quot;), } ).run()
  70. 73. Channel Transcoder Schematic Channel Transcoder EITDemux inbox _eit_ inbox EITParsing outbox inbox Carousel transcoder_factory inbox next outbox
  71. 74. Channel Transcoder Code def ChannelTranscoder(service_id, mencoder_options, dir_prefix): def transcoder_factory(eit): return ProgrammeTranscoder(eit, mencoder_options, dir_prefix) return Graphline( PROG_CODER = Carousel( transcoder_factory ), EIT_PARSE = EITParsing(service_id), DEMUX = EITDemux(), linkages = { (&quot;self&quot;,&quot;inbox&quot;) : (&quot;DEMUX&quot;,&quot;inbox&quot;), (&quot;DEMUX&quot;,&quot;outbox&quot;) : (&quot;PROG_CODER&quot;,&quot;inbox&quot;), (&quot;DEMUX&quot;,&quot;_eit_&quot;) : (&quot;EIT_PARSE&quot;, &quot;inbox&quot;), (&quot;EIT_PARSE&quot;, &quot;outbox&quot;) : (&quot;PROG_CODER&quot;, &quot;next&quot;), } )
  72. 75. Programme Identification Schematic EIT Parsing PSI Packet Reconstructor inbox inbox EIT Packet Parser outbox inbox Now Next service filter Now Next Changes outbox inbox outbox inbox outbox outbox
  73. 76. Programme Identification Code def EITParsing(*service_ids): return pipeline( PSIPacketReconstructor(), EITPacketParser(), NowNextServiceFilter(*service_ids), NowNextChanges(), )
  74. 77. Programme Transcoding Schematic (a pipeline) Programme Transcoder Pipethrough (“mencoder -o file options...”) inbox control signal inbox control _transcodingcomplete _stop signal
  75. 78. Programme Transcoding Code class ProgrammeTranscoder(Axon.Component.component): Inboxes = { &quot;inbox&quot; : &quot;TS packets containing audio and video&quot;, &quot;control&quot; : &quot;the usual&quot;, &quot;_transcodingcomplete&quot; : &quot;signal from the transcoder&quot;, } Outboxes = { &quot;outbox&quot; : &quot;&quot;, &quot;_stop&quot; : &quot;stop the transcoder&quot;, &quot;signal&quot; : &quot;the usual&quot;, } def __init__(self, eitdata, mencoder_options, dir_prefix): super(ProgrammeTranscoder,self).__init__() self.eitdata = eitdata self.mencoder_options =mencoder_options self.dir_prefix = dir_prefix def main(self): # first, generate unique filename uid = str(time.time()) encodingfile = &quot;/data/encoding&quot;+self.dir_prefix+&quot;/&quot;+uid+&quot;.avi&quot; waitingEIT = &quot;/data/encoding&quot;+self.dir_prefix+&quot;/&quot;+uid+&quot;.eit&quot; finishedfile = &quot;/data/finished&quot;+self.dir_prefix+&quot;/&quot;+uid+&quot;.avi&quot; finishedEIT = &quot;/data/finished&quot;+self.dir_prefix+&quot;/&quot;+uid+&quot;.eit&quot; print uid,&quot;Starting transcoding into: &quot;+encodingfile transcoder = Pipethrough(&quot;mencoder -o &quot;+encodingfile+&quot; &quot;+self.mencoder_options) print uid,&quot;Transcoder pipethough =&quot;,transcoder.name data_linkage = self.link( (self,&quot;inbox&quot;), (transcoder,&quot;inbox&quot;), passthrough=1 ) ctrl_linkage = self.link( (self,&quot;_stop&quot;), (transcoder,&quot;control&quot;)) done_linkage = self.link( (transcoder,&quot;signal&quot;), (self,&quot;_transcodingcomplete&quot;) )
  76. 79. Kamaelia Macro <ul><ul><li>Code is in the distribution is you want to play </li></ul></ul><ul><ul><li>(only works under Linux due to Linux having a uniform DVB-T API) </li></ul></ul>
  77. 80. But Why Mashup? <ul><ul><li>A web mashup often takes data from multiple sources (websites) transforms them and republishes them somehow, allowing recomposition. </li></ul></ul><ul><ul><li>Kamaelia Components are essentially the same, except you're not mashupping websites but systems, including potentially your PVR. </li></ul></ul><ul><ul><li>It's “just” data. </li></ul></ul>
  78. 81. Kamaelia: Ideas <ul><ul><li>Things you might want to do (to Macro and beyond) </li></ul></ul><ul><ul><li>3D user interface to the PVR </li></ul></ul><ul><ul><li>IRC based control (your PVR sitting on </li></ul></ul><ul><ul><li>an IRC channel) </li></ul></ul><ul><ul><li>Web integration (beyond blogs/rss) </li></ul></ul><ul><ul><li>Integrate common sense engine </li></ul></ul><ul><ul><li>An open alternative to Second Life </li></ul></ul><ul><ul><li>Video Conferencing </li></ul></ul><ul><ul><li>Build an open technology for BBC iPlayer? </li></ul></ul>
  79. 82. Kamaelia Futures <ul><ul><li>We want to replace the need to write code when writing components. </li></ul></ul><ul><ul><li>Further optimisations </li></ul></ul><ul><ul><li>More concurrency mechanisms </li></ul></ul><ul><ul><li>More tutorials </li></ul></ul>(AKA Specfic stuff we want to do)
  80. 83. Kamaelia Futures <ul><ul><li>Collaborative Storyboarding/programme production tools </li></ul></ul><ul><ul><li>Open source iPlayer </li></ul></ul><ul><ul><li>Integrate PGU </li></ul></ul><ul><ul><li>Better Tk Components </li></ul></ul><ul><ul><li>PyQT, wxWindows integration </li></ul></ul>(AKA Specfic stuff we want to do)
  81. 84. Thank you! Thank you!
  82. 85. Kamaelia Open Space <ul><li>This Friday 22 nd Sept, 11am-5pm </li></ul><ul><li>FoAM's Offices: </li></ul><ul><ul><li>Koolmijnenkaai 30-34, 1080 Brussels </li></ul></ul><ul><li>Map: http://tinyurl.com/hsarl </li></ul><ul><ul><li>Possible discussions: Get started; integrate your favourite libraries; apply to teaching (gesture recognition); flesh out our system to be more relevant to your problem domain (as we do for the BBC)? Re-implement in C++, Ruby? </li></ul></ul><ul><ul><ul><li>http://tinyurl.com/f8szz </li></ul></ul></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×