GSOC 2020 - Interested in working on "Bitrate Switch" and "Read ahead"- **Proposal**
#1
This is my Proposal for the Idea - "inputstream.adaptive binary addon”
 
Reply
#2
(2020-03-29, 16:21)khaledsab1997 Wrote: This is my Proposal for the Idea - "inputstream.adaptive binary addon - Bitrate switch”
 

Thx for this proposal and for the time / energy you want to spend for our project.
My notes on the first proposal draft:

1.) UI
-> Instead adding a new setings option, idea was to remove the "stream selection".
If a stream is started, kodi requests all available streams. Talking about video track only, we curently return 1 stream if streamselection is "Auto" (the pre-evaluated representation), and return #representations if streamselection is "Manual".
Goal is that we return always #representation + 1 Auto stream. ​​​​

2.) good idea, but IIRC there is no such feedback yet and it has to be implemented in the inputstream API (see also 3.)
3.) Window size changes are currently not in the inputstream API, must be extended.
Note, that some ppl. are in opinion, that 4K on a FHD screen looks better, but we have the IgnoreDisplay option in inputstream settings for this

5.) We should keep this simple and rely on the skipped frames. Must be added to inputstream api (IIRC)
But for sure we can use CPU / memory usage, too. Maybe just choose one of the options, and make your implementation in a way that it can be extended easily. 

-----

From my POV the following 2 tasks have to be developed:
1.) inputstream.adaptive / AdaptiveStream must be enhanced to a.) prefetch multiple segments (For this we should introduce a settings value how many seconds or bytes)
and b.) make inputstream.adaptive capable of switching the streams (this is already partly implemented).
2.) Create a new module / class which knows the stats and which manages the conditions for a stream switch (display resolution / cpu / ram usage / skipped frames / network)

Every time a new segment should be loaded, AdaptiveStream asks the new module (2.) which representation to use.
 
For testing 1.) without having 2.) implemented, you could switch streams randomly.​

I have not found anything regarding 1.) in the timeline.

-----
>What does it touch in Kodi?
For getting cpu / memory / skipped frames / display reolution changes into inputstream.adaptive, inputstream.adaptive, the inputstream API interface AND Kodi has to be changed.

> When did you first start programming? And what the journey you had from that date?
Cool what you already implemented, but it's hard to read without any .'s and without any paragraphs.
Maybe you want to consider formatting this part a little bit.
Reply
#3
(2020-03-30, 00:16)peak3d Wrote:
(2020-03-29, 16:21)khaledsab1997 Wrote: This is my Proposal for the Idea - "inputstream.adaptive binary addon - Bitrate switch”
 

Thx for this proposal and for the time / energy you want to spend for our project.
My notes on the first proposal draft:

1.) UI
-> Instead adding a new setings option, idea was to remove the "stream selection".
If a stream is started, kodi requests all available streams. Talking about video track only, we curently return 1 stream if streamselection is "Auto" (the pre-evaluated representation), and return #representations if streamselection is "Manual".
Goal is that we return always #representation + 1 Auto stream. ​​​​

2.) good idea, but IIRC there is no such feedback yet and it has to be implemented in the inputstream API (see also 3.)
3.) Window size changes are currently not in the inputstream API, must be extended.
Note, that some ppl. are in opinion, that 4K on a FHD screen looks better, but we have the IgnoreDisplay option in inputstream settings for this

5.) We should keep this simple and rely on the skipped frames. Must be added to inputstream api (IIRC)
But for sure we can use CPU / memory usage, too. Maybe just choose one of the options, and make your implementation in a way that it can be extended easily. 

-----

From my POV the following 2 tasks have to be developed:
1.) inputstream.adaptive / AdaptiveStream must be enhanced to a.) prefetch multiple segments (For this we should introduce a settings value how many seconds or bytes)
and b.) make inputstream.adaptive capable of switching the streams (this is already partly implemented).
2.) Create a new module / class which knows the stats and which manages the conditions for a stream switch (display resolution / cpu / ram usage / skipped frames / network)

Every time a new segment should be loaded, AdaptiveStream asks the new module (2.) which representation to use.
 
For testing 1.) without having 2.) implemented, you could switch streams randomly.​

I have not found anything regarding 1.) in the timeline.

-----
>What does it touch in Kodi?
For getting cpu / memory / skipped frames / display reolution changes into inputstream.adaptive, inputstream.adaptive, the inputstream API interface AND Kodi has to be changed.

> When did you first start programming? And what the journey you had from that date?
Cool what you already implemented, but it's hard to read without any .'s and without any paragraphs.
Maybe you want to consider formatting this part a little bit.  

Hi peak3d,

1) so, Do you want to remove stream selection option in configuration of the addon and return (all the representation + 1 AUTO selection) without letting the user make a default in the configuration file? Why that could be a good for the user to take away from him the feature of selection a default for his stream quality? I’m taking the YouTube as an example, YouTube let’s you make a default quality and you can change this default to another whether select another quality or make auto!
from my point of view, stream selection could be modified to include (480p,720p,1080p,4k,Auto) and of course return all the streams in the video stream and user can change as he wants.

You mentioned later in the reply, that I need to add a UI for loading segments ahead buffer size (in bytes or secs), it will be a good feature for an expert user and will only make normal user more confused what this actually does? Taking YouTube as an example, YouTube makes his loading buffer size and I don’t know how size of that buffer 10 secs ? 60 secs ? , so if you still think it’s important to add, I will add it.

2) I know it’s not implemented and I ‘ll need to add this to inputstream API, maybe I didn’t explain it well in the document, but ‘ll explain it in the next version.

3) same as (2)  of course will extend it, 
4k on FHD looks better because its bitrate is much higher than in the FHD that’s why it ‘ll be an important part to select the stream according to the resolution and the bitrate of it and of course will take the IgnoreDisplay option in consideration I forgot to add this in document.

5) when I thought about this I was thinking if I will do frame skipping ( do I will process the audio ? could it be a good experience watching a video in lower frame rate ? ) Did you have experienced frame skipping before or watch it on a video ? I ‘ll search about that if you could provide me with a resource it will be good, in my opinion, watching in lower quality better than frame skipping!

“From my POV the following 2 tasks have to be developed: …..”
Do you recommend me to write what I will implement in this formula ? I wrote it in terms of features but it’s the same anyway,
That’s right I will make a class for “SteamAutoSelection” according to the features we talked about and this ‘ll include all the features.

“I have not found anything regarding 1.) in the timeline.”
Do you mean this “1.) inputstream.adaptive / AdaptiveStream must be enhanced to a.) prefetch multiple segments (For this we should introduce a settings value how many seconds or bytes)” ? 

If yes, then I wrote it in Network fluctuation feature and that will be implemented in the last phase,
If no, please tell me again.


">What does it touch in Kodi?"
-> I tried to be more specific, should I write it in your way you provided me “For getting c..” ?

"> When did you first start programming? And what the journey you had from that date?"
Okay, will make it into paragraphs sorry for that Smile.

thanks for your time Smile and forgive me for the long reply I just wanted to explain my thought process as clear as possible.
Reply
#4
@peak3d ,  I took your advice and made some research and changed some parts in the documentation , this is my last version of the documentation : https://drive.google.com/file/d/1Ib8IHjy...sp=sharing 
and will implement both the bit rate change and read ahead in inputstream.adaptive binary addon, thanks for your time and effort to get this great work be done
Reply
#5
This sounds amazing!
We need this!
Reply
#6
That is something that is absolutely needed.
Reply

Logout Mark Read Team Forum Stats Members Help
GSOC 2020 - Interested in working on "Bitrate Switch" and "Read ahead"- **Proposal**2