 
     /** Handles the actual reading of the TS fragment **/
     private function _fragReadHandler(audioTags:Vector.<Tag>,videoTags:Vector.<Tag>,adif:ByteArray,avcc:ByteArray,audioPID:Number=-1,audioTrackList:Vector.<HLSAudioTrack>=null):void {
+      var _demux_duration:uint = (new Date().valueOf() - _frag_demux_start_time);
+      Log.debug("Demux         duration/length/speed:"+_demux_duration+ "/" + _last_segment_size + "/" + ((8000*_last_segment_size/_demux_duration)/1024).toFixed(0) + " kb/s");
        var audio_index:Number;
        var audio_track_changed:Boolean = false;
        audioTrackList = audioTrackList.sort(function(a:HLSAudioTrack,b:HLSAudioTrack):Number { return a.id - b.id; });

    }

      private function _fragDemux(data : ByteArray) : void {
         // _frag_parsing_start_time = new Date().valueOf();
         
         /* deal with byte range if any specified */
         if (_frag_byterange_start_offset !=-1) {

        private var _frag_loading_start_time:Number;
        /** Time the decryption started. **/
        private var _frag_decrypt_start_time:Number;
        /** Time the demux started. **/
        private var _frag_demux_start_time:Number;
        /** Did the stream switch quality levels. **/
        private var _switchlevel:Boolean;
        /** Did a discontinuity occurs in the stream **/
