     private var streamHasAudio:Boolean = false;
     private var streamHasVideo:Boolean = false;
 
+    public var onXMPData:Function = null;
+    public var onCuePoint:Function = null;
+    public var onImageData:Function = null;
+    public var onSeekPoint:Function = null;
+    public var onTextData:Function = null;
+
     public function Player() {
       var self:Player = this;
 

      this.videoResize();
    }

    private function onXMPData(event:Event):void {
      Logger.log('XMPData received');
    }

    private function onCuePoint(cuePoint:Object):void {
      Logger.log('CuePoint received: ' + cuePoint.name);
    }

    private function onImageData(imageData:Object):void {
      Logger.log('ImageData received');
    }

    private function onSeekPoint(event:Event):void {
      Logger.log('SeekPoint received');
    }

    private function onTextData(textData:Object):void {
      Logger.log('TextData received');
    }


      this.ns = ev.data.ns;
      ev.data.ns.bufferTime = config.buffer;
      ev.data.ns.client = this;
      this.onXMPData = onXMPDataHandler;
      this.onCuePoint = onCuePointHandler;
      this.onImageData = onImageDataHandler;
      this.onSeekPoint = onSeekPointHandler;
      this.onTextData = onTextDataHandler;
      this.ns.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus);
      this.ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, onAsyncError);
      this.ns.addEventListener(DRMErrorEvent.DRM_ERROR, onDRMError);
