 Okay, everybody can hear me. Yeah. Hi. My name is Frank and I'm I'm happy to be here and talk a bit about Coherence Who in the audience knows about the DLNA or UPnP a little bit, okay UPnP is a protocol to let devices find itself on the network. So It stands for universal black and play It is the network An oleg on to black and play put some hardware into a PC and it just Finds that the hardware is where and UPnP is the same on the network DLNA is a specification on top of that it Glary fries a lot of things that are left over in UPnP But I won't go too much into the details I talked today about a special part of UPnP UPnP audio and video Now there are other things in UPnP, but as I said today, we talk about that part of the family and especially from the Application developer point of view because we added a few weeks ago Gluing part to Rivenbox to enable UPnP support in Rivenbox and Yeah, the talk is about opening the Rivenbox. What do I need to do? Anybody in a room remember these kind of things that was part of my music collection in the end of the 70s beginning of the 80s 10 years later it looked a bit like that a lot more but Actually, I haven't found all these CDs anymore Again 15 years later No There's one page Missing ah Doing something again what you don't see here two iPods You know them now you don't have your music your audio on CD or on records, you now have them on the iPods and Actually now when you deal with digital media We now talk about audio, but it can be video or images whatever And you want to distribute them Into your home you can put it on a hard disk on a network attached storage And serve it stream it to UPnP clients something like the Xbox over here Phillips, Streamium system, Terra Technoxon, there are a lot of more, but that is a little bit. Yeah Come to them Because Actually, you don't want to put your media into a file system and put on directories arrange the thing directors That's not the way you organize your data Think about you have a media center application like Eliza you have your musical data Sorted by artists you have albums You have your playlist your favorites same over in Rivenbox you do exactly the same and just to Serve these the data onto your network. It doesn't make sense to replicate the same thing into a UPnP server so the idea is Add the functionality to the application and let the application do all the tagging or the sorting And let the UPnP stuff do the distribution in the network so What we can do now we can stream data between Rivenbox and Eliza for example, we can do the same to the playstation 3 We have a Nokia controller system and we can from the Nokia Control Rivenbox and say Yeah, use that file play it stop change the volume all Based on a ISO standard not something we just defined for that special purpose It's based on a UPnP standard called media renderer control and Of course, we can stream from Eliza to our Nokia when we are In the garden or something else somewhere else and a nice feature we can Store something that's on the And it's on the door on our UPnP enabled phone when we come back home We can store it into our media center. It's a feature from of UPnP Currents, that's the framework. It's just Yeah Depends on how you look at it. It can be a standalone system It can be embedded in other applications Or it can be a server that you talk to via remote procedure calls debas and ask it to Announce whatever services you have onto the network And a very important thing I want to stress here UPnP is not only about One part of a family the internet gateway device that is mostly well known about its security issues There's a lot more with UPnP and a lot more family members and Yeah, we are talking about you p&p audio video now in That Specifications we have three devices. We have the media server media server just stores Your files it all can organize playlists text Artists whatever We have media renderer. No one thing. I forgot always Media server can with a newer specification to recording and Propagate electronic preparing guides to Media renderers something that displays an image as it is screen on your wall TV with a built-in media renderer to play back video or something that plays big audio The thing that interconnects these these two devices are control points they are There to provide information what you have on the media server What media servers are on your network and you can't tell with the control point The media render to play that file from that media server that latest on that media render And you and it provides some information about what your kids are listening to in their living room So the features we have there You have media sharing of course, that's the easiest thing. We have recording We can't tell the media server. Please record if it's capable of that please record that DVD stream or something else at that time we have play back and controlling We have organizing playlists artists folders album folders and we have the possibility to exchange media data between Devices move some files from one media store to the other media store Now let's go to ribbon box What we've added to ribbon box are with these three key features. It's now able to access other you can see media servers on the network That sounds pretty easy It's a little bit more complicated under the hood, but that's what corvents is for It can export its media data To other you can keep players a thing. So I told you before PS3 Xbox something like that and We can now control it from the Nokia from any other Commercial available you can keep control point again, but we put emphasis on this It's not needed to Put something on these devices if you have a new pinkie control point on your Nokia phones or on the Philips devices it will be able to control now ribbon box This is how the whole thing looks like All think here is corvents It contains everything you need it or you need to speak to other you pin P devices You pin P is some a lot very difficult Set of protocols. We have multicast UDP. We have soap We have FHGDP and a very strange mixture of all these things Um, but from my point of view Application normally doesn't have to know all these things about it just says In ribbon box I have some media data and I want to export it on the network. So what we need is a little bit of clue code Here it just translates the you pin P browse request Into a request to get that data from the ribbon box database Same over here for the ribbon box player What we need is the clue code that translates the play request from the UP and P control point Into the play command, but ribbon box actually actually makes playing the song and on this thing here Ribbon box sends out gives me all the Media files that are on the network and we just return it and ribbon box can displayed in its UI The whole thing The whole clue code is not more than yeah 1,200 lines of Python code Most of it really is just mapping translating between the Ribbon box database ribbon box internal representation of an audio file Into what you pin P things an audio file or the major data for an audio file should look like Go back one This 1200 lines are 400 here 400 here 200 I'm sorry 400 here 400 here 200 here and the rest is a little bit of initialization code to get the whole thing up I'm so focused on this So it's really pretty easy to add you pin P functionality to your application What we discovered when working with ribbon boxes An application that thinks okay. I'm here. I'm sitting here. I have access to my media database I'm yeah, I'm a master. I'm always in control, but if you Suddenly you get access from the outside of the world. There are some strange things happening Ribbon box for example Excesses the album art only when it's playing the file But a control point on the network wants to display that audio out when browsing The database so this is something we need to change there and Major file data access is not transparent for example with if you access your media data via and some bush here Ribbon box does not provide that information for currents to access it. So we need some Some fix for that. Yeah, that's my presentation. Thank you very much if you want to know more about it We have a track setup here. There's all the source code a viki tickets Write anything you wonder about that. We hang most of the time on IRC on the channel currents and Yeah Would be happy very happy to see you there any questions No one too complicated current as I said currents is Let's say look at it as a server It just sits there and you can connect to it With that clue code that clue code here You can embed Currents it's written in Python. So if you are a Python program, you just load currents into yourself And speak to it Methods here Ribbon box just enables Python plug-ins. So we just load that Little bit of glue code it loads current and that's it Currents can run stand alone. So if you have more Software that uses current it just makes sense to have it run standalone and let that clue code act via debas or via any RPC method