GSOC 2013: Profile based DLNA & transcoding support

  Thread Rating:
  • 1 Votes - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Post Reply
alcoheca Offline
Team-XBMC Developer
Posts: 265
Joined: Feb 2008
Reputation: 6
Star  GSOC 2013: Profile based DLNA & transcoding support
Post: #1
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.
(This post was last modified: 2013-05-28 14:12 by Kib.)
find quote
zag Offline
Team-Kodi Member
Posts: 1,706
Joined: Oct 2007
Reputation: 20
Location: UK
Post: #2
Transcoding would indeed be awesome!

HTPC - XBMC Gotham, OpenELEC, Harmony Smart Remote, Intel Haswell NUC, 40gb intel SSD, Core i3, 4gb RAM
Storage - 2 x qnap 8tb 419p+ NAS
Display LG 46" LCD + Casio Bulbless projector [PICS]
[Image: widget]
find quote
Tolriq Offline
Donor
Posts: 2,341
Joined: Jun 2009
Reputation: 68
Location: France
Post: #3
This and support for external subtitles in transcoding would be wonderful Smile

Yatse 2 : Media Center Remote Control for Touch Screens
Yatse, the Xbmc Remote and Widgets for Android
find quote
Memphiz Offline
Team-Kodi Developer
Posts: 10,942
Joined: Feb 2011
Reputation: 113
Location: germany
Post: #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

AppleTV2/iPhone/iPod: HowTo find debug logs and everything else which the devs like so much: click here
HowTo setup NFS for XBMC: Wiki NFS
HowTo configure avahi (zeroconf): Wiki Avahi
READ THE IOS FAQ!: iOS FAQ
find quote
Tolriq Offline
Donor
Posts: 2,341
Joined: Jun 2009
Reputation: 68
Location: France
Post: #5
This is not really a feature suggestion but a reminder of a thing that should not be forgotten with transcoding Tongue

I do PRs for JSON part but UPnP and transcoding are out of my comp Sad

Yatse 2 : Media Center Remote Control for Touch Screens
Yatse, the Xbmc Remote and Widgets for Android
find quote
da-anda Offline
Team-Kodi Member
Posts: 3,071
Joined: Jun 2009
Reputation: 39
Location: germany
Post: #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).
find quote
natethomas Offline
Team Kodi Community Manager
Posts: 3,671
Joined: Apr 2008
Reputation: 63
Location: Kansas
Post: #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?

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: badge.gif]
find quote
Tolriq Offline
Donor
Posts: 2,341
Joined: Jun 2009
Reputation: 68
Location: France
Post: #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)

Yatse 2 : Media Center Remote Control for Touch Screens
Yatse, the Xbmc Remote and Widgets for Android
find quote
alcoheca Offline
Team-XBMC Developer
Posts: 265
Joined: Feb 2008
Reputation: 6
Post: #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.
find quote
edrikk Offline
Senior Member
Posts: 240
Joined: Jul 2011
Reputation: 5
Post: #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...
find quote
topfs2 Offline
Team-Kodi Developer
Posts: 4,050
Joined: Dec 2007
Reputation: 10
Post: #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: badge.gif]

"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#."
find quote
MarkyC Offline
Junior Member
Posts: 6
Joined: Apr 2013
Reputation: 0
Post: #12
I've sent OP a PM, but does this project has a repo yet? Or a page to formally join in through?
find quote
alcoheca Offline
Team-XBMC Developer
Posts: 265
Joined: Feb 2008
Reputation: 6
Post: #13
I don't answer PMs from strangers - and I've no idea what you mean by formally join.
find quote
MarkyC Offline
Junior Member
Posts: 6
Joined: Apr 2013
Reputation: 0
Post: #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)?
find quote
Martijn Offline
Team Kodi
Posts: 11,388
Joined: Jul 2011
Reputation: 165
Location: Dawn of time
Post: #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.

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

For your mediacenter artwork go to
[Image: fanarttv.png]
find quote
Post Reply