                     // check if first fragment after seek has been already loaded
                     if (_fragment_first_loaded == false) {
                         // select level for first fragment load
-                        if (_hls.autolevel) {
+                        if(_level_next != -1) {
+                            level = _level_next;
+                        } else if (_hls.autolevel) {
                             if (_manifest_just_loaded) {
                                 level = _hls.startlevel;
                             } else {

                        _switchlevel = true;

                        // check if we received playlist for choosen level. if live playlist, ensure that new playlist has been refreshed
                        if ((_levels[level].fragments.length == 0) || (_hls.type == HLSTypes.LIVE && _last_loaded_level != level)) {
                            // playlist not yet received
                            CONFIG::LOGGING {
                                Log.debug("_checkLoading : playlist not received for level:" + level);
                            }
                            _loading_state = LOADING_WAITING_LEVEL_UPDATE;
                        } else {
                            // just after seek, load first fragment
                            _loading_state = _loadfirstfragment(_seek_pos, level);

                        // Log.info("seq/next:"+ _seqnum+"/"+ next_seqnum);
                        // }
                        if (next_seqnum != _frag_current.seqnum) {
                            // stick to same level after PTS analysis
                            _level_next = _hls.level;
                            CONFIG::LOGGING {
                                Log.debug("PTS analysis done on " + _frag_current.seqnum + ", matching seqnum is " + next_seqnum + " of [" + (_levels[_hls.level].start_seqnum) + "," + (_levels[_hls.level].end_seqnum) + "],cancel loading and get new one");
                            }
