2018-04-14, 11:59
@FernetMenta
I think I reached my max for now, so I'll just wait for you. Just ping me when you are ready to look into this. Thank you :-)
I really can't figure out why playing the first item in the playlist, moving to the next item with auto play makes the video buffer infinitely. Everything is called correctly, I see the artwork is loaded, metadata filled, but the video itself is stuck in buffer mode forever until I hit stop playback.
If instead, I play the second item in the list, and move to the next item with auto play, everything works as intended. I really don't know why it would behave differently.
Here are the changes I made to test strm as non-playlist, which works for the most part except for what I explained above:
I think I reached my max for now, so I'll just wait for you. Just ping me when you are ready to look into this. Thank you :-)
I really can't figure out why playing the first item in the playlist, moving to the next item with auto play makes the video buffer infinitely. Everything is called correctly, I see the artwork is loaded, metadata filled, but the video itself is stuck in buffer mode forever until I hit stop playback.
If instead, I play the second item in the list, and move to the next item with auto play, everything works as intended. I really don't know why it would behave differently.
Here are the changes I made to test strm as non-playlist, which works for the most part except for what I explained above:
Quote:PlayListFactory.cpp
https://github.com/xbmc/xbmc/blob/master...y.cpp#L142
Changes: ".m3u|.b4s|.pls|.wpl|.asx|.ram|.url|.pxml");
https://github.com/xbmc/xbmc/blob/master...y.cpp#L148
Changes: ".m3u|.b4s|.pls|.wpl|.asx|.ram|.url|.pxml");
Application.cpp
https://github.com/xbmc/xbmc/blob/384894...3038-L3045
Changes:
cpp:
std::string path = item.GetDynPath();
if (path.empty())
path = item.GetPath();
if (item.IsPlugin() || URIUtils::IsPlugin(path))
{ // we modify the item so that it becomes a real URL
bool resume = item.m_lStartOffset == STARTOFFSET_RESUME;
CFileItem item_new(item);
if (XFILE::CPluginDirectory::GetPluginResult(path, item_new, resume))
// removed std::move, otherwise it always buffers indefinitely with auto-play
// but it buffers forever without auto-play and play from here is used.
return PlayFile(item_new, player, false);
return false;
}