GSOC 2012 - Proposal - Printable Version
+- XBMC Community Forum (http://forum.xbmc.org)
+-- Forum: Development (/forumdisplay.php?fid=32)
+--- Forum: Development (/forumdisplay.php?fid=93)
+---- Forum: GSoC 2012 Development (/forumdisplay.php?fid=161)
+---- Thread: GSOC 2012 - Proposal (/showthread.php?tid=126931)
Pages: 1 2
RE: GSOC 2012 - Proposal - aniket - 2012-03-29 19:40
I was going through this thread here, its a little old, but gives some perspective as to how the development has taken place to handle the issue.
XBMC now ships with built in MySQL server, UPnP server and client and JSON-RPC. So I guess the way they want to handle this issue is through extending the existing functionality in XBMC. For instance using MySQL dbms allows sharing userdata across multiple XBMC systems and having UPnP + JSON-RPCs allows multiple clients to interact with each other and enables client side editing of metadata. I don't think running a separate daemon on NAS will be required, as we can accomplish the task from within XBMC library routines.
Also, I guess a portion of this project is about making it all transparent and effortless for the user too. So the user having many XBMC machines doesn't have to worry about keeping everything is sync. All of them communicate and keep themselves synced with each other.
Again, do correct me if I am wrong...
Thnx for the reply, it got me thinking...
RE: GSOC 2012 - Proposal - pecinko - 2012-03-30 14:48
Here are some links to some other threads that you may find helpful
RE: GSOC 2012 - Proposal - RockerC - 2012-03-30 15:15
Some great ideas there. I hope that you will make the UPnP part stay as much compatible with DLNA as it can, same as Plex now claim that they do in their media server software http://elan.plexapp.com/2012/03/29/this-aint-your-grandfathers-dlna/
RE: GSOC 2012 - Proposal - aniket - 2012-03-30 17:23
(2012-03-30 14:48)pecinko Wrote: Here are some links to some other threads that you may find helpful
Oh nice threads there... That's quite similar to what the project will intend to do but again as an in-built XBMC feature, rather than an add-on or a plugin...
(2012-03-30 14:48)pecinko Wrote: http://forum.xbmc.org/showthread.php?tid=92310
(2012-03-30 15:15)RockerC Wrote: Some great ideas there. I hope that you will make the UPnP part stay as much compatible with DLNA as it can, same as Plex now claim that they do in their media server software http://elan.plexapp.com/2012/03/29/this-aint-your-grandfathers-dlna/
Yes, while extending UPnP functionality, keeping it DLNA complaint will be a priority, as DLNA standards are very widely used.
However, I'm not sure if something similar to what this post says is what is intended of the project. Neither do I think the creation of a new DLNA server like PMS is asked of the project... But yeah, basic idea of sharing of metadata info across multiple installations.
Again, do correct me where I am wrong...
Thanks for your input guys, it was rather useful... If there are more suggestions and inputs, please keep 'em coming...
Oh, and just off the topic, the forum rules link in the signature of some members seems broken (404). Wasn't sure where to give this info...
RE: GSOC 2012 - Proposal - pecinko - 2012-03-30 17:47
Yup those two are python plugins and that third thread was general discussion about a possible solution.
I thought it might be of interest to you as those plugins were functional and that discussion have some posts with opinion of some of the devs.
Like this one http://forum.xbmc.org/showthread.php?tid=96649&pid=752370#pid752370
Just a thought from my side. Off I go now as am not able to help much more than this.
RE: GSOC 2012 - Proposal - aniket - 2012-03-31 08:54
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 18:37
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 18:53
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.