     protected var _size :Point;
 
     protected var _duration :Number = NaN;
+
+    protected var _gotDurationFromMetadata :Boolean;
 
     protected var _volume :Number = 1;
 

        dispatchEvent(new ValueEvent(MediaPlayerCodes.SIZE, _size.clone()));
    }

    protected function handlePositionCheck (event :TimerEvent) :void
    {
        dispatchEvent(new ValueEvent(MediaPlayerCodes.POSITION, getPosition()));
    }

    protected function handleNetStatus (event :NetStatusEvent) :void


        switch (event.info.code) {
        case "NetStream.Play.Stop":
            if (_state == MediaPlayerCodes.STATE_PLAYING) {
                handlePositionCheck(); // if we never got metadata, retrieve final position as dur
                // rewind to the beginning
                _netStream.seek(0);
                _netStream.pause();
                updateState(MediaPlayerCodes.STATE_PAUSED);
            }
            break;

        case "NetStream.Seek.Notify":
            MethodQueue.callLater(handlePositionCheck);
            break;
        }
    }
