Showing posts with label gsoc10. Show all posts
Showing posts with label gsoc10. Show all posts

Saturday, August 21, 2010

Final Evaluations results processed for Amarok and KDE UPnP Integration

Hi Nikhil Marathe,

We have processed the evaluation for your project named Amarok and KDE UPnP Integration with KDE.

Congratulations, from our data it seems that you have successfully passed the Final Evaluations. Please contact your mentor to discuss >the results of your evaluation and to plan your goals and development plan for the rest of the program

Greetings, The Google Open Source Programs Team

Yay!

Posted via email from nikhil's posterous

Saturday, July 31, 2010

Whats up doc?

Pardon me for the excessively cliche title, I was short on time :P

Its been a week now since college began, and already I feel the
extreme busy-ness that occurs trying to squeeze every activity into 24
hours. The vacations were comparatively totally empty.

The UPnP collection support in Amarok is concluding pretty well. Today
I committed the fix that considerably shortens the amount of data
transfer required over the network for subsequent queries once the
local cache is relatively filled. With a relatively small share on
miniDLNA, I got near native performance, with the tracks being
populated as soon as I opened up a tree. The kioslave too has had some
additions that allow applications using it to bypass many of the
user-friendly features (required for browsing via Dolphin or
Konqueror) and get blazing fast results instead.

With another Amarok release coming up, I want to get some time to fix
bugs, but it has been hard to come by, even on a weekend.

My other pet KDE project has been Rekonq, more specifically Chrome
extension support. I can't remember the last time I blagged about it,
but just so it doesn't get buried as defunct project, let me give a
status update. Work is slow but not stalled. I have extension
installation working. I have figured out how to interface the C++ and
JS parts, although it is a bit hacky. The Chrome Tabs API is mostly
implemented, (localization and script injection and message passing
are not), including the captureVisibleTab() method. Now that I have
some experience, it should be much easier to implement the rest of the
APIs. I still have to figure out how to implement background pages
(most likely a WebTab not added to the UI), implement safe message
passing and so on. A nice UI to manage extensions would also be
required, and it would be great if others are interested in jumping in
to the project.
I would be glad to explain the architecture ( I have a IRC log lying
around, thanks to Rohan Garg :P )

I don't know about 1.0, but extension support will get there in the
end, so lets not remove my name from the Credits :)

Posted via email from nikhil's posterous

Friday, June 11, 2010

GSoC Week 4: Experimenting with Collections

I didn't write a post last week, and it looks really bad in my form completion :) but I didn't have any user visible updates at all. This week is much better. First the visual then the text.



That's cover art fetched from the UPnP device when the Content Directory has it available!

Other updates include smoother full and incremental scanning of the Collection. This is one area which needs a lot more improvement. The kio slave is now threaded and continuously monitors the UPnP device for updates. This is used by the Collection to mirror the actual contents whenever possible. The slave is also now fully normally evented, without pesky internal event loops and blocking. I learned a lot about how signals and slots work in the mean time, and uniqueness and disconnections. Certain thread related things have been sorted so that the slave is much more bug free, although Bart Cerneels still made it crash :)

Now today I'm stopping work much earlier, because its time for the World Cup to begin, and I'm supporting Germany! I hope my excuse is good enough.

Oh, by the way:
Here's to meeting a lot of KDE devs soon...

Saturday, May 29, 2010

GSoC Week 2: Experimenting with Collections

Another week is already gone, and although it didn't see much progress feature wise, I've been working a lot on the project. Three days were spent on a nasty little hard to produce bug, one that would only occur 4 levels deep into the Content Directory, and not always in that case either. Finally with a lot of debug statements, many hours talking to Tuomo Penttinen of HUpnp we fixed a little bug in his library.

The reason the bug was present - MediaTomb was disconnecting my slave for connecting multiple times very very quickly. When it rejected the request, two slots were fired in the HUpnp code which caused multiple access's to certain data which should be modified only once... I'll spare the details.

Once that was fixed, I spent half a day getting the DLNA recommended meta-data being reported by the slave using custom UDSEntry fields. That was pretty easy.

That pretty much finishes the slave's Browse() API, since fetching file's is delegated to the HTTP slave. The next step is Search().

But I took a little break and started experimenting with Amarok's Collection code, which is HUMONGOUS and complicated. I still haven't figured it out completely. Like why Collection::queryMaker() has too return a new instance of a QueryMaker sub class everytime, or how the Capabilities system works, but I'll get there in the end. The result for today is manually inserting a track into the collection. Ah, I do like seeing progress:

Friday, May 21, 2010

GSoC Week 1: Kioslave is shaping up

(This post was published on Friday, but I put in a wrong tag and I didn't get aggregated, so, republished)

Although I've been hacking on my GSoC project for quite a while, doing little experiments and getting my mind around various factors involved, this week was my first official coding period, since that was what I had in my timeline.

The first piece to implement is the kioslave to browse UPnP MediaServers. This involves writing a parser for the DIDL-Lite XML format used to describe directory structures. The parser I developed this week can now parse containers and items and their titles and pass them on to the slave. Meta-data and extra tag handling isn't done yet, but I have time :) The slave scheme is upnp-ms and right now you have to pass the UUID. But once the network:// slave is modified, it should be seamless for normal users




Their are a few issues I have to take care of in the slave. UPnP identifies all objects merely by a numeric ID. Now it wouldn't be fun to have the user deal with IDs. So the kioslave uses names just like normal file browsing. This involves reconversion back to the ID whenever I have to talk to the server. If the user manually types a URL to jump to some other point, I have no information about the IDs leading up to that location. So I've to implement some resolving. This is what I did this week. It is still a bit buggy, but I haven't figured out if the bug is in my code or HUpnp ( most likely my code ).