GSOC 2013: Profile based DLNA & transcoding support
#1
Star 
This is my graduation year so the last time I can participate in GSoC as a student. After last year I've gained a lot of knowledge of the UPnP/DLNA infrastructure and feel well placed to continue with my progress. This is a quick stab at a proposal as I'm in the middle of revising for my finals, but am keen to start the discussion early, and will update this first post as and when improvements are made.

* Summary:
Many UPnP aware devices (TVs, game consoles, AV receivers in particular) do not currently work well with XBMC, due to requiring additional proprietary DLNA metadata & by only supporting a limited (though well defined) set of codec & container formats. The goal is to add support for these devices by a combination of a 'profile' based system and real-time transcoding. This missing ability is crucial in order to maintain XBMC's position in the burgeoning media-centre market.

* How to achieve this:
As the XBMC foundation is not DLNA registered there is no access to the official specifications. However there are many open source applications which have already tackled this - Rygel, uShare, PS3 Media Server, Mediatomb to name a few. There is much to be learned from their codebases, and we can also learn from published profiles for closed source applications. Profiles would be made available as XML data, delivered through an official addon which would allow updates between major releases. Users could create their own profiles, share and test in the community before adoption in the official addon.

In order to achieve this I would:
  • design a well structured format for the profile descriptors
  • add better awareness of each client's capabilities through UPnP descriptors
  • enhance the DLNA metadata provided
  • integrate support for transcoding
  • re-engineer CUPnPServer to use this information to return targeted listings for each request
  • create and maintain an official addon which provided the profile descriptors
  • reach out to the community in order to collect & test profiles for as many manufacturers and devices as possible.

* Benefits:
XBMC's UPnP server is languishing due to a lack of proper DLNA and transcoding support. This project would add far greater interoperability with non-XBMC devices, creating the ability for community-driven updates to our device support over time.

* What does it touch in XBMC:
This would be largely self contained and will not touch core XBMC functionality. We already support 'quirks' handling for some devices, however this is limited and contained within the C++ source code. These would be shifted to a profile where useful.
Reply
#2
Transcoding would indeed be awesome!
Reply
#3
This and support for external subtitles in transcoding would be wonderful Smile
Reply
#4
(2013-04-18, 19:01)Tolriq Wrote: This and support for external subtitles in transcoding would be wonderful Smile

May i kindly remember everyone that this is not a feature suggestion thread? Smile

Though i totally get how exciting this proposal is ... Wink
AppleTV4/iPhone/iPod/iPad: HowTo find debug logs and everything else which the devs like so much: click here
HowTo setup NFS for Kodi: NFS (wiki)
HowTo configure avahi (zeroconf): Avahi_Zeroconf (wiki)
READ THE IOS FAQ!: iOS FAQ (wiki)
Reply
#5
This is not really a feature suggestion but a reminder of a thing that should not be forgotten with transcoding :p

I do PRs for JSON part but UPnP and transcoding are out of my comp Sad
Reply
#6
if you need testers for this (regardless if GSOC or not) drop a note. I can compile for Win and have a Sony, LG and Samsung TV from which IIRC at least the Sony needed special tweaks to show XBMC UPNP sources (not sure if the patch you sent me once made it into mainline and TV is driven now by a rPI so I didn't follow if the patch went in).
Reply
#7
I was hoping you could clear up something for me. As you no doubt know, XBMC has user profiles. It seems like you are referring to some other sort of profile when you use the work in your proposal above. Any chance you could define your version and explain how they differ?
Reply
#8
He talks about UPnP and rendering profiles not user profiles in Xbmc.

Would be for example xmls that define for each known upnp device that access to Xbmc the definition of what it supports as listing / codecs so that Xbmc can adapt itself to this device.
This would allow user contributions and growing database of supported devices and a much better end user experience with UPnP.

(Xmls is a sample don't know what alcoheca would use)
Reply
#9
Sigh - no notification of these responses.

@da-anda yes I'd definitely be keen on testing on your devices.

@natethomas - Tolriq is right, the profiles I talk about are device profiles. In theory you should be able to glean all of this from the client at runtime, but not all devices are 100% DLNA compliant and tweaks are needed on a per manufacturer / per model basis. The idea is these are distributed by an xml file provided by an official addon so updates can continue between major releases. Users are also able to create their own device profiles.
Reply
#10
One thing I like about how Plex manages their upnp/device profiles is that they keep an xml file on their servers which the client downloads on each startup (I believe). However, this can be over-ridden by a user's local copy.

Just throwing this out there as a suggestion, as it obviously allows (non-code-impacting) updates to the supported list (new / updates), but also keeps things simple from a user's perspective (no going to add-ons), while still allowing more advanced users to over-ride.

Not quite sure how this aligns with the 'don't call home' concept, but an argument can be made that this isn't really calling home, but rather pulling without anything being pushed...
Reply
#11
(2013-04-23, 18:07)edrikk Wrote: One thing I like about how Plex manages their upnp/device profiles is that they keep an xml file on their servers which the client downloads on each startup (I believe). However, this can be over-ridden by a user's local copy.

Just throwing this out there as a suggestion, as it obviously allows (non-code-impacting) updates to the supported list (new / updates), but also keeps things simple from a user's perspective (no going to add-ons), while still allowing more advanced users to over-ride.

Not quite sure how this aligns with the 'don't call home' concept, but an argument can be made that this isn't really calling home, but rather pulling without anything being pushed...

If made an addon which is installed by default (and just provides an xml really) you would get this behaviour for free. If a new device is found and added, the addon is updated and all users get an update.
If you have problems please read this before posting

Always read the XBMC online-manual, FAQ and search the forum before posting.
Do not e-mail XBMC-Team members directly asking for support. Read/follow the forum rules.
For troubleshooting and bug reporting please make sure you read this first.

Image

"Well Im gonna download the code and look at it a bit but I'm certainly not a really good C/C++ programer but I'd help as much as I can, I mostly write in C#."
Reply
#12
I've sent OP a PM, but does this project has a repo yet? Or a page to formally join in through?
Reply
#13
I don't answer PMs from strangers - and I've no idea what you mean by formally join.
Reply
#14
(2013-04-26, 10:33)alcoheca Wrote: I've no idea what you mean by formally join.

How does one contribute to this project? Is there a page on GSoC (I've never participated before, but as a CS student I assume I am eligible)?
Reply
#15
(2013-04-27, 19:30)MarkyC Wrote:
(2013-04-26, 10:33)alcoheca Wrote: I've no idea what you mean by formally join.

How does one contribute to this project? Is there a page on GSoC (I've never participated before, but as a CS student I assume I am eligible)?

This is a project that alcoheca is going to do. You need to do a project of your own to join.
Read/follow the forum rules.
For troubleshooting and bug reporting, read this first
Interested in seeing some YouTube videos about Kodi? Go here and subscribe
Reply

Logout Mark Read Team Forum Stats Members Help
GSOC 2013: Profile based DLNA & transcoding support1