current state and vision

  Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Post Reply
FernetMenta Offline
Team-Kodi Developer
Posts: 6,190
Joined: Jul 2010
Reputation: 140
Location: Munich
Post: #1
Kodi's video player is one of the oldest and most important components of the application. New features and ports to new platforms have long outgrown the original architecture of player. From its internal name "dvdplayer" you can tell how old this component is. In order to cope with current and future requirements like Ultra HD, MVC, 10bit depth, or PiP some elementary changes need to be done. The problem is that those changes require adjustments of platform dependent code. This dependency tremendously slows down development.

Ideally video player is a self contained component or service with its own life cycle and versioning. This would allow updates and upgrades independently from the main application. One platform could choose to stay with version X while others go with version Y. Maybe video player itself will be comprised of services with its own versions: decoders, demuxers, video/audio renderers, etc.

This is a long way and we need to get started somewhere. I requested this sub-forum to get platform devs involved, document and discuss what has been done so far, next steps, etc.
find quote
Memphiz Offline
Kodi MVP
Posts: 16,020
Joined: Feb 2011
Reputation: 225
Location: germany
Post: #2
subscribed

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)
find quote
natethomas Offline
XBMC Chief and Kodi Project Manager
Posts: 6,233
Joined: Apr 2008
Reputation: 128
Location: Kansas
Post: #3
I'm experiencing some deja vu. I feel like I had this exact same discussion with somebody when binary addons were first being explained to me.
find quote
ironic_monkey Offline
Posting Freak
Posts: 1,423
Joined: Nov 2013
Reputation: 66
Post: #4
that's because again it's the complete disconnect between your all-platforms-or-none principle and the available devs that is at the core of the problem. learn or redo old mistakes (if the latter, prepare to be called clueless rainer).
find quote
RockerC Offline
Posting Freak
Posts: 1,485
Joined: May 2011
Reputation: 28
Post: #5
(2015-09-03 13:22)FernetMenta Wrote:  Ideally video player is a self contained component or service with its own life cycle and versioning. This would allow updates and upgrades independently from the main application. One platform could choose to stay with version X while others go with version Y. Maybe video player itself will be comprised of services with its own versions: decoders, demuxers, video/audio renderers, etc.
So you are talking about Kodi ultimately supporting and having multiple video players as self-contained binary addons?

Nice! Supporting such video players (and audio players?) as binary add-ons should indeed allow the support for rolling updates outside major releases of multiple video/audio player with dependencies, and as such could possible also help speed up development and testing of individial players on each platform.
find quote
FernetMenta Offline
Team-Kodi Developer
Posts: 6,190
Joined: Jul 2010
Reputation: 140
Location: Munich
Post: #6
(2015-09-09 10:09)RockerC Wrote:  So you are talking about Kodi ultimately supporting and having multiple video players as self-contained binary addons?

Basically that's kind of the idea but we are very far from this goal. This is really bad spaghetti code that grew over time. At this time I am not sure if this can be slowly transformed into the desired state or we need the sledgehammer and re-write lot of this code in core.
find quote
Martijn Offline
Team Kodi
Posts: 16,935
Joined: Jul 2011
Reputation: 310
Location: Dawn of time
Post: #7
@FernetMenta
is you master branch in a state where we could start providing public builds for OSX and Windows to get feedback for those platforms? Doing so might reveal some minor problems and gets it ready for merge in first 17 alpha. Once Android is build-able we can add that to the list as well in the test thread.

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
find quote
FernetMenta Offline
Team-Kodi Developer
Posts: 6,190
Joined: Jul 2010
Reputation: 140
Location: Munich
Post: #8
(2015-10-21 11:33)Martijn Wrote:  @FernetMenta
is you master branch in a state where we could start providing public builds for OSX and Windows to get feedback for those platforms? Doing so might reveal some minor problems and gets it ready for merge in first 17 alpha. Once Android is build-able we can add that to the list as well in the test thread.

I don't compile for Windows and did not get any feedback from a Windows dev recently. OSX is fine running on my laptop LCD but needs a few things to fix for fullscreen with refresh rate switching.
find quote
erhnam Offline
Team-XBMC Live Developer
Posts: 703
Joined: May 2009
Reputation: 2
Location: The Netherlands
Post: #9
Just out of curiosity, what are your timelines? And what have been implemented at stage and what's on your todo or bucket list?
find quote
FernetMenta Offline
Team-Kodi Developer
Posts: 6,190
Joined: Jul 2010
Reputation: 140
Location: Munich
Post: #10
(2015-10-23 13:24)erhnam Wrote:  Just out of curiosity, what are your timelines? And what have been implemented at stage and what's on your todo or bucket list?

See the forum threads in this section. git diff to mainline shows: Showing 987 changed files with 5,351 additions and 1,896 deletions. Those first changes are scheduled for 17.0 alpha.

In parallel I just started to split the render thread. That's going to be a lot of work I guess.
find quote
Martijn Offline
Team Kodi
Posts: 16,935
Joined: Jul 2011
Reputation: 310
Location: Dawn of time
Post: #11
@FernetMenta somewhere hidden in our code is the ability for plugins to dictate which player it should use. I already removed this from API docs but seems the code is still there.
For reference this was TheUni's try on killing it https://github.com/xbmc/xbmc/pull/1427
Could you perhaps take this in account and kill off that feature? Should this be needed back in future it should be done the proper way by asking Kodi a list of available players instead of hardcoding it.

Semi related is:
https://github.com/xbmc/xbmc/pull/4781

Since the refactor is happening any way perhaps this could be tackled.

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
(This post was last modified: 2015-10-29 11:35 by Martijn.)
find quote
topfs2 Offline
Team-Kodi Developer
Posts: 4,548
Joined: Dec 2007
Reputation: 17
Post: #12
(2015-10-29 11:32)Martijn Wrote:  Could you perhaps take this in account and kill off that feature? Should this be needed back in future it should be done the proper way by asking Kodi a list of available players instead of hardcoding it.

+1 Always hated the feature Tongue

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#."
(This post was last modified: 2015-10-29 11:38 by topfs2.)
find quote
da-anda Offline
Team-Kodi Member
Posts: 5,781
Joined: Jun 2009
Reputation: 77
Location: germany
Post: #13
+1

I'd also like to differ between player and renderer. While we should drop the ability to specify the player used by the local Kodi instance, we still have to give the option to specify the renderer, which would be "local" and any remote playing source found (UPNP renderers).

Btw - I'd actually also drop the possibility to select specific internal players in the "play using" feature and only give the option to select default/internal, external players specified in as.xml and UPNP sources. Ideally though UPNP sources would not show up there but rather in a "play to" context item, which could also be exposed in GUI (to allow pushing playback to a different device while watching, like when you start on TV in living room and want to finish in bedroom or on tablet).

edit: option to select internal player implementation could be enabled via some expert setting if needed (like for debugging and comparing dvdplayer vs omxplayer)
(This post was last modified: 2015-10-29 11:56 by da-anda.)
find quote
FernetMenta Offline
Team-Kodi Developer
Posts: 6,190
Joined: Jul 2010
Reputation: 140
Location: Munich
Post: #14
I will look into this and consider it.
find quote
madshi Offline
Junior Member
Posts: 43
Joined: Aug 2011
Reputation: 14
Post: #15
(2015-09-03 13:22)FernetMenta Wrote:  Ideally video player is a self contained component or service with its own life cycle and versioning. This would allow updates and upgrades independently from the main application. One platform could choose to stay with version X while others go with version Y. Maybe video player itself will be comprised of services with its own versions: decoders, demuxers, video/audio renderers, etc.

I think that's a very good idea.

Specifically for Windows: Could this be a good opportunity to maybe join efforts with the DSPlayer dev(s)? E.g. in Windows we already have the excellent "LAV" DirectShow package which includes the best of libav/ffmpeg for movie playback, combined with some more decoders from other sources (e.g. Intel QuickSync). Also we have different subtitle renderers available for DirectShow, and besides EVR we also have madVR for video rendering. There are also good quality standalone DirectShow audio renderers in the works, like e.g. Sanear. Making use of all that would reduce the strain on Kodi developers, because they would not have to bother with all that sort of stuff for Windows, anymore, but could instead rely on those external packages. Also there would be no duplicate efforts for Kodi DVDPlayer & DSPlayer devs, anymore. The current main DSPlayer dev already expressed willingness to work on DSPlayer in such a way that changes to Kodi itself would be minimal. Maybe worth a thought?

I understand that on other OSs, e.g. Linux, there's no general framework available for media player components, so for those OSs it probably makes sense to include all the decoders and renderers in Kodi itself. But since in Windows the situation is different and there are high quality external components available, isn't it worth reevaluating the situation, just for Windows?
find quote
Post Reply