Changes in the Switching rules. 

New 
Switching to the proper index based on continuously averaged throughput metrics.   
Sustaining the highest bit rate when the buffer occupancy dictates but throughput drops suddenly.      
Stepping down when we reach critical buffer levels in intervals that double as we decrease past critical levels. (8 seconds and lower for vod streams, bypassed on low latency live)
Emergency switch to 0 on buffer stale events.
Fixed some minor bugs and changed the rate that we analyze rules to be more frequent. 

Coming soon. 
Optimizing startup and the index selection at startup and detecting cache and latency scenarios that dictate different reactions.
Fragment Download monitoring and abandonment rule so that we can abandon a slow download and make a switch and retry.
Remove the limit switch rule and make the rules individual rules handle limitations so that when it is fired it is read not ignored. Make system easier to debug. 

Issues.  There seems to be times when we are scheduling fragments but the buffer is still dropping, the player reach zero buffer and then a huge jump in buffer.  Why is that info not pushed into the buffer sooner? Seems like there is some kind of delay in the append process here. Working on this as well.