             }
             // inject discontinuity/metadata/AVC header/AAC header if available
             if (disIdx != -1)  idx2Clone.push(disIdx);
-            if (metIdx != -1)  idx2Clone.push(metIdx);
+            if (metIdxMain != -1)  idx2Clone.push(metIdxMain);
+            if (metIdxAltAudio != -1)  idx2Clone.push(metIdxAltAudio);
             if (aacIdx != -1)  idx2Clone.push(aacIdx);
             if (avcIdx != -1)  idx2Clone.push(avcIdx);
 


        public function appendTags(fragmentType : int, tags : Vector.<FLVTag>, min_pts : Number, max_pts : Number, continuity : int, start_position : Number) : void {
            // compute playlist sliding here :  it is the difference between  expected start position and real start position
            var sliding:Number = 0, next_relative_start_pos: Number = start_position + (max_pts - min_pts) / 1000;
            if(_hls.type == HLSTypes.LIVE) {
                if(fragmentType == HLSLoaderTypes.FRAGMENT_MAIN) {
                    // if -1 : it is not the first appending for this fragment type : we can compute playlist sliding

                if (max_pos >= _seek_position_requested) {
                    // inject enough tags to reach seek position
                    duration = _seek_position_requested + MAX_NETSTREAM_BUFFER_SIZE - min_min_pos;
                }
            }
            if (duration > 0) {
