protected void GetTransportInfoSink(CpAVTransport sender, System.UInt32 InstanceID, CpAVTransport.Enum_TransportState CurrentTransportState, CpAVTransport.Enum_TransportStatus CurrentTransportStatus, CpAVTransport.Enum_TransportPlaySpeed CurrentSpeed, UPnPInvokeException e, object Handle)
        {
            if (e != null)
            {
                return;
            }

            _TransportStatus = _cp.Enum_TransportStatus_ToString(CurrentTransportStatus);

            switch (CurrentTransportState)
            {
            case CpAVTransport.Enum_TransportState.PLAYING:
                this._PlayState = "PLAYING";
                break;

            case CpAVTransport.Enum_TransportState.STOPPED:
                this._PlayState = "STOPPED";
                break;

            case CpAVTransport.Enum_TransportState.PAUSED_PLAYBACK:
                this._PlayState = "PAUSED_PLAYBACK";
                break;

            case CpAVTransport.Enum_TransportState.PAUSED_RECORDING:
                this._PlayState = "PAUSED_RECORDING";
                break;

            case CpAVTransport.Enum_TransportState.RECORDING:
                this._PlayState = "RECORDING";
                break;

            case CpAVTransport.Enum_TransportState.TRANSITIONING:
                this._PlayState = "TRANSITIONING";
                break;
            }

            if (this.OnPlayStateChanged != null)
            {
                OnPlayStateChanged(this);
            }
            if (this.OnTransportStatusChanged != null)
            {
                OnTransportStatusChanged(this);
            }

            lock (this)
            {
                --StateCounter;
                if (StateCounter == 0)
                {
                    if (OnReady != null)
                    {
                        OnReady(this);
                    }
                }
            }
        }