Kodi Community Forum
GSOC 2012 - Proposal - Printable Version

+- Kodi Community Forum (https://forum.kodi.tv)
+-- Forum: Development (https://forum.kodi.tv/forumdisplay.php?fid=32)
+--- Forum: Kodi Application (https://forum.kodi.tv/forumdisplay.php?fid=93)
+---- Forum: GSoC 2012 (https://forum.kodi.tv/forumdisplay.php?fid=161)
+---- Thread: GSOC 2012 - Proposal (/showthread.php?tid=126931)

Pages: 1 2

RE: GSOC 2012 - Proposal - aniket - 2012-03-31

okay, thanks pecinko...

Based on the wiki page on how to sync multiple libraries, I could think of some possible possible issues and their solutions.

One problem that is obvious is that it's not going to be easy for someone with less technical know-how to be able to do this. One way to go about this is give user an option to create the current installation of XBMC as a server for hosting shared userdata. On this installation MySQL can be installed. Other XBMC installations can add this server for syncing userdata and accessing media on other devices. The idea is pretty similar to what is mentioned in this rather old ticket (if anyone has newer resources please point me towards them). The server will manage the media path translations (so that different devices can access each others media) and syncing userdata. This will eliminate the need for users to edit the 'advancedsettings.xml' file on each device. But one possible limitation with this method is that a message passing scheme will be needed to handle the communication between the server and all other installations (like the port number and protocol). This could be a problem if existing UPnP, JSON-RPC, HTTP and other sharing protocols are inappropriate for this.

The other solution can be to avoid the whole 'creation of central server' business and use XBMC's in-built UPnP server to interact with machines like NAS, the way jmarshall mentions in this post (or at least this my interpretation of what he meant...). So each XBMC installation can update the metadata information about the media files through UPnP, and when other clients sync themselves with NAS their view will be updated. But one limitation contained by this solution is that the media present only on the NAS will then be shared, right? I'm not sure about this, but if there is (or can be a way) to send the media files from device to NAS server (using XBMC's UPnP server), then may be we can handle this too...

These are a couple of design alternatives that I was thinking of. I might have gone wrong somewhere, feel free to correct me... Suggestions and feedback welcome too...

RE: GSOC 2012 - Proposal - Sylus - 2012-04-01

I would clearly prefer the version with the centralised server. In the case that one has several xbmc running he will have a server with all the movies. I do not expect, that someone runs serveral xbmc and has their files distributed.

RE: GSOC 2012 - Proposal - aniket - 2012-04-01

Thanks Sylus for your reply, just to clarify you do like the second solution right? I’d prefer it too, mainly because the first solution will require significant maintenance both on the developers’ side and user side.

Meanwhile, I built XBMC from the source code and was debugging it on VS2010 to figure out how the requests to UPnP server are being made. What I could understand from the code was that Platinum lib is handling all the communication back and forth and there are several UPnP classes written to utilize its functionality. For eg: CUPnPGetDirectory class's functions are used to update the library. CUPnP class maintains the state of the server throughout the lifetime of an XBMC instance, ie from start to exit. But there is some problem in transferring some information from UPnP server, like if I change the filename of a file/folder on the UPnP device and click 'Update library' then the change is not reflected... (it’s happening with me, I don’t know about others)
I think this will be the right place to insert our code for updating media metadata information from the UPnP server. As far extending the metadata fields is concerned, since there is an option to set AVTransportURIMetaData field in Platinum SDK that transports metadata in DIDL-Lite XML format, we can put anything in it to satisfy out needs.

The second part can be to add the functionality to update the UPnP server from our device. This can also be handled by Platinum SDK much like Plex and others (mentioned on their website do). And since JSON-RPC will soon have this functionality, it can be done using that too. There should not be any platform related issues, because we’d only be extending the existing functionality.

So I guess that should give a solid idea about the scope of my project. Basically, extending all UPnP functionality (or JSON-RPC) to update a server (capable of understanding UPnP, like NAS) so that all XBMC instances, linked to that server, remain in sync.

Please reply back with any queries and suggestions. I have exams the next 2 days, so the response might be slow, but I’d love to dig in more to give more solid outline of my project.