tag:blogger.com,1999:blog-243197402009-05-19T22:50:22.814+02:00The best ideas are common property.Sometimes I get an idea that is just so crazy I have to write it down somewhere.Stecchinohttp://www.blogger.com/profile/13897782022515387068noreply@blogger.comBlogger4125tag:blogger.com,1999:blog-24319740.post-16556890662437527432009-05-10T08:01:00.007+02:002009-05-10T08:15:56.859+02:00UPnP DevSprint in Paris<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.upnp.org/download/logo/UPnP_Forum_Color.JPG"><img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 180px;" src="http://www.upnp.org/download/logo/UPnP_Forum_Color.JPG" border="0" alt="" /></a><br />Hi from Paris, where together with <a href="http://netzflocken.de/files/IMG_0473.JPG">[ade], dev, erwan, philn and lightyear</a> I'm at the <a href="http://coherence.beebits.net">Coherence</a>/KDE developer sprint focused on UPnP.<br />Yesterday, after struggling with QtDBUS (specifically the under-documented qdbusxml2cpp) I managed to the signals from Coherence and call functions. So now I can discover the devices on the network.<br /><br />The signals are connected to a UPnPCollectionFactory that should create a new collection for each mediaserver (containing music) on the network.<br /><br />Next step will be to really talk to the devices themselves. That will require some XML parsing, which can get a bit complicated. With any luck I'll find a Qt based DIDL-lite parsing library. Consider that a lazyweb questions :).<br /><br />A bientôt,<br />Bart<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24319740-1655689066243752743?l=commonideas.blogspot.com'/></div>Stecchinohttp://www.blogger.com/profile/13897782022515387068noreply@blogger.com5tag:blogger.com,1999:blog-24319740.post-31566933911757313812009-02-13T14:31:00.000+01:002009-02-13T21:20:32.980+01:00UPnP support in KDE and AmarokDuring FOSDEM <a href="http://people.fruitsalad.org/adridg/bobulate/index.php?/feeds/index.rss2">[ade]</a> and I met with <a href="http://netzflocken.de/tags/coherence">Frank Scholz</a>, the lead developer of Coherence. We discussed DLNA/UPnP and how Coherence can be used in KDE and Amarok. The conclusion of this meeting was that we should use Coherence as our base for supporting UPnP services in KDE. The first implementation will be a KIO slave for browsing media stored on remote devices.<br /><br /><a href="http://en.wikipedia.org/wiki/Universal_Plug_and_Play">UPnP</a> is a network technology using a combination of SSDP, XML and SOAP, with some GENA thrown in for eventing. A group of UPnP services called the UPnP A/V Architecture has been picked up by an industry organization called <a href="http://www.dlna.org/home">the Digital Living Network Alliance</a>. DLNA specifies device classes which have to implement specific services and support a minimal set of filetypes and codecs.<br /><br /><a href="http://coherence.beebits.net/">Coherence</a> is a framework, written in Python but it exposes a DBUS API, that allows an application to participate in the "Digital Home Network". For the moment this means mainly UPnP, but support for Ampache is available and Apple's DAAP is also considered. It's published under the MIT license and is multiplatform.<br /><br />In Amarok we have been planning to integrate UPnP for a long while. But except for a failed Google Summer of Code project last year not a lot of effort has been spend. Thanks to Coherence this will quickly change: in relative short term (read 2.2) we will introduce a UPnP Collection that will list and enable playback of music stored on a DLNA Digital Media Server.<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_dHagi-przjU/SZXPT79CESI/AAAAAAAAAZA/LnPsSg2VFNU/s1600-h/Streamium_NP2500.jpeg"><img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 240px; height: 240px;" src="http://1.bp.blogspot.com/_dHagi-przjU/SZXPT79CESI/AAAAAAAAAZA/LnPsSg2VFNU/s320/Streamium_NP2500.jpeg" border="0" alt=""id="BLOGGER_PHOTO_ID_5302372077716771106" /></a><br />We could even consider publishing the content in the local Collection, basically making Amarok a DMS. Amarok can then track plays on remote devices and use it in the scoring algorithm.<br />Even more advanced functionality would be to control one or more Digital Media Renderes, such as <br /><a href="http://www.streamium.com/">the Philips Streamium</a>, from Amarok.<br /><br />A few mails have been going back and forth between interested developers about discovery of network services in general. In order to simplify using technologies as UPnP, zeroconf, Samba, etc I'm wondering if we can integrate this in Solid. Only the discovery part obviously, using the services would be the task of separate frameworks, such as Coherence. With this functionality in Solid it should be trivial to show a kind of "Network Map" to the user with all the services per device.<br /><br />As you can tell, plenty of cool things to keep a few people busy for a year or 3.<br /><br />Bart<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24319740-3156693391175731381?l=commonideas.blogspot.com'/></div>Stecchinohttp://www.blogger.com/profile/13897782022515387068noreply@blogger.com5tag:blogger.com,1999:blog-24319740.post-38920784016961763712009-02-02T19:43:00.005+01:002009-02-02T20:02:47.551+01:00Amarok Junior Job: Auto-download new podcastsA <a href="http://amarok.kde.org/en/releases/2.0.1.1#comment-11723">recent comment</a> by progmanos on the post of the 2.0.1.1 release reminded that I still have to implement Podcast episode auto-downloading. In the hurry to get 2.0 released I did add the config option, but forgot to add the actual code to make it work.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_dHagi-przjU/SYdCmobFJqI/AAAAAAAAAWs/Ny-r2eKYvIY/s1600-h/podcast_config.png"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 321px; height: 159px;" src="http://1.bp.blogspot.com/_dHagi-przjU/SYdCmobFJqI/AAAAAAAAAWs/Ny-r2eKYvIY/s320/podcast_config.png" alt="" id="BLOGGER_PHOTO_ID_5298276718078142114" border="0" /></a><br />In Amarok 2 Podcasts are implemented in classes derived from PodcastProvider. There can be mutliple providers, which allows for instance podcast syncing between Amarok and an iPod.<br />The default provider is <a href="http://websvn.kde.org/trunk/extragear/multimedia/amarok/src/podcasts/sql/SqlPodcastProvider.cpp?view=log">SqlPodcastProvider</a>. This is where the auto-download function should get implemented.<br /><br />This is a nicelly contained and not to steep introduction to Amarok development. So it's an excelent Junior Job.<br />If progmanos or anyone else would like to have a go at it, contact me on #amarok on irc.freenode.net. My nickname is Stecchino.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24319740-3892078401696176371?l=commonideas.blogspot.com'/></div>Stecchinohttp://www.blogger.com/profile/13897782022515387068noreply@blogger.com0tag:blogger.com,1999:blog-24319740.post-65907454255286777512008-11-04T13:51:00.012+01:002008-11-12T12:01:19.614+01:00Amarok podcasting 2.0 and post-2.0 plansHey fellow developers and users,<br /><br />In Juli 2007, at Akademy Glasgow I started implementing podcasting support in Amarok2. Since then I was <a href="http://akademy2008.kde.org/">sidetracked a little</a>, as you may be aware.<br /><br />The little time I did manage to spend designing and implementing was short and far from focused. So a lot of features are not finished or just plainly missing. The framework I created underneath suffered from the same lack of focus and is need of a good review. I'm aware there is probably some overdesign and some parts might be to complex. If you feel you can help in that area I suggest you take a look at <a href="http://websvn.kde.org/trunk/extragear/multimedia/amarok/src/podcasts/">extragear/multimedia/amarok/src/podcasts</a> . Send questions, comments and suggestions to amarok-devel@kde.org .<br /><br />The 3rd beta from Amarok 2.0 is already out the door and podcasting support is still not finished. In order to make it I had to reduce some goals I had set for myself during those rainy summer days in Scotland. Here's the plan:<br /><br /><span style="font-weight: bold;">Amarok 2.0:</span><br />The focus ATM is on finishing the SqlPodcastProvider, Podcastmodel and PodcastCategory (GUI).<br />SqlPodcastProvider uses tables in the standard SQL database, adds and updates the feeds using PodcastReader and downloads to disk using the regular KIO-jobs.<br />To make the podcasting fully functional though we'll need to reintroduce:<br /><ul><li>Autoscan the feed for updates<br /></li><li>Download when available</li><li>Episode purging (delete downloaded episodes automatically)<br /></li></ul>The settings dialog for this exists, next up is using them :).<br />The GUI currently shows all episodes ever read from the feed, which obviously needs to be addressed.<br />The GUI for 2.0 should be very similar, if not identical to Amarok 1.4, probably minus folder tree grouping support since that is better handled generically for all Playlists (which PodcastChannel is in our class diagram).<br /><br />If anyone has a bit of Qt Model/View experience and would like to see podcasting in Amarok 2.0 I suggest you send a mail to amarok-devel@kde.org or ping me on irc (Stecchino on #amarok).<br />Without help we might have to drop it's from 2.0 completely because it's a bit much for me alone to complete and stabilize.<br /><br /><span style="font-weight: bold;">Amarok > 2.0:</span><br />I do have a plan for a complete GUI overhaul post-2.0. I'll get some art and usability advice in another blog post when the time comes.<br /><br />The 2.x releases should see more advanced features being introduced that the framework is already designed to support:<br />For the SqlPodcastProvider specifically:<br /><ul><li>Renaming and sorting individual episodes (popular request)</li><li>Purging based on episode age and/or total size on disk<br /></li><li>Labeling of PodcastChannels (perhaps to replace traditional folder tree grouping)</li></ul>More general<br /><ul><li>Mediadevice Podcast support: iPod being the most advanced implementation but also generic usb devices, music phones and Canola2, I'm sure the INdT guys could help us with that.</li><li>OPML import and export<br /></li><li>Podcast Directory personal subscription list.</li><li>BashpodderProvider: to use <a href="http://www.lincgeek.org/bashpodder/">bashpodder</a> and Amarok in parallel with synchronized download status</li><li>...</li></ul>On to hacking.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24319740-6590745425528677751?l=commonideas.blogspot.com'/></div>Stecchinohttp://www.blogger.com/profile/13897782022515387068noreply@blogger.com2