                 }
             }
 
-            var tags : Vector.<Tag> = new Vector.<Tag>();
-            // Push regular tags into buffer.
-            for each (var vtag : Tag in _videoTags) {
-                tags.push(vtag);
-            }
-            for each (var atag : Tag in _audioTags) {
-                tags.push(atag);
-            }
-
             // report audio-only segment
-            if (_videoTags.length == 0) {
+            if (!_video_tags_found) {
                 _hls.dispatchEvent(new HLSEvent(HLSEvent.AUDIO_ONLY));
             }
 

                var start_offset : Number = _levels[_level].updateFragment(_seqnum, true, min_pts, max_pts);
                _hls.dispatchEvent(new HLSEvent(HLSEvent.PLAYLIST_DURATION_UPDATED, _levels[_level].duration));
                _fragment_loading = false;
                _callback(tags, min_pts, max_pts, _hasDiscontinuity, start_offset);
                _pts_loading_in_progress = false;
                _hls.dispatchEvent(new HLSEvent(HLSEvent.FRAGMENT_LOADED, metrics));
                _fragment_first_loaded = true;

            var tag : Tag;
            // Audio PTS/DTS normalization + min/max computation
            for each (tag in audioTags) {
                _audio_tags_found = true;
                tag.pts = PTS.normalize(_prev_audio_pts, tag.pts);
                tag.dts = PTS.normalize(_prev_audio_dts, tag.dts);
                _min_audio_pts = Math.min(_min_audio_pts, tag.pts);
                _max_audio_pts = Math.max(_max_audio_pts, tag.pts);
                _prev_audio_pts = tag.pts;
                _prev_audio_dts = tag.dts;
                _tags.push(tag);
            }

            // Video PTS/DTS normalization + min/max computation
            for each (tag in videoTags) {
                _video_tags_found = true;
                tag.pts = PTS.normalize(_prev_video_pts, tag.pts);
                tag.dts = PTS.normalize(_prev_video_dts, tag.dts);
                _min_video_pts = Math.min(_min_video_pts, tag.pts);
                _max_video_pts = Math.max(_max_video_pts, tag.pts);
                _prev_video_pts = tag.pts;
                _prev_video_dts = tag.dts;
                _tags.push(tag);
            }
        }

