         /** monitor fragment loader stall events, arm a boolean  **/
         private function _liveLoadingStalledHandler(event : HLSEvent) : void {
             _liveLoadingStalled = true;
-        };
+        }
+
+        /** playback complete handler **/
+        private function _playbackComplete(event : HLSEvent) : void {
+            _playbackCompleted = true;
+        }
+
+
     }
 }
 

            var pos : Number = position;
            var bufLen : Number = _hls.stream.bufferLength;
            var duration : Number = _playlistDuration;
            // dispatch media time event only if position/buffer or playlist duration has changed
            if(pos != _lastPos || bufLen != _lastBufLen || duration != _lastDuration) {
                _hls.dispatchEvent(new HLSEvent(HLSEvent.MEDIA_TIME, new HLSMediatime(pos, duration, bufLen, backBufferLength, _liveSlidingMain, _liveSlidingAltAudio)));
                _lastPos = pos;
                _lastDuration = duration;

        private var _nextExpectedAbsoluteStartPosAltAudio : Number;
        /** is live loading stalled **/
        private var _liveLoadingStalled : Boolean;
        /** is playback completed **/
        private var _playbackCompleted : Boolean;
        /* last media time data */
        private var _lastPos : Number;
        private var _lastBufLen : Number;
