/**
     * <summary>AtomExプレーヤのデタッチ</summary>
     * \par 説明:
     * 出力データ解析を行うAtomExプレーヤをデタッチします。<br/>
     * デタッチを行うと、以降の解析処理は行われなくなります。
     * \attention
     * アタッチ済みのプレーヤが音声を再生している状態で本関数を呼び出した場合、
     * 強制的に再生を停止した上でデタッチが行われます。<br/>
     * <br/>
     * アタッチしたAtomExプレーヤが既に破棄されていた場合はアクセス違反が発生します。<br/>
     * 必ず本関数、またはCriAtomExPlayerOutputAnalyzer::Disposeを呼び出してから、
     * AtomExプレーヤを破棄するようにしてください。<br/>
     * \sa CriAtomExPlayerOutputAnalyzer::AttachExPlayer, CriAtomExPlayerOutputAnalyzer::Dispose
     */
    public void DetachExPlayer()
    {
        if (this.player == null || this.handle == IntPtr.Zero)
        {
            return;
        }

        CriAtomExPlayer.Status status = this.player.GetStatus();
        if (status != CriAtomExPlayer.Status.Stop)
        {
            /* 音声再生中にデタッチは行えないため、強制的に停止 */
            Debug.LogWarning("[CRIWARE] Warning: CriAtomExPlayer is forced to stop for detaching CriAtomExPlayerOutputAnalyzer.");
            this.player.StopWithoutReleaseTime();
        }

        criAtomExPlayerOutputAnalyzer_DetachExPlayer(this.handle, this.player.nativeHandle);
        this.player = null;
    }
    /**
     * <summary>AtomExプレーヤのアタッチ</summary>
     * <returns>アタッチが成功したかどうか(成功:true、失敗:false)</returns>
     * \par 説明:
     * 出力データ解析を行うAtomExプレーヤをアタッチします。<br/>
     * 複数のAtomExプレーヤをアタッチすることは出来ません。
     * アタッチ中に別のAtomExプレーヤをアタッチした場合、アタッチ中のAtomExプレーヤはデタッチされます。<br/>
     * <br/>
     * CriAtomSourceをアタッチする場合、CriAtomSource::AttachToOutputAnalyzerを使用してください。
     * \attention
     * アタッチは再生開始前に行う必要があります。再生開始後のアタッチは失敗します。<br/>
     * <br/>
     * 本関数でアタッチしたAtomExプレーヤをデタッチする前に破棄した場合、
     * デタッチ時にアクセス違反が発生します。<br/>
     * 必ず先にデタッチを行ってからAtomExプレーヤを破棄してください。<br/>
     * \sa CriAtomExPlayerOutputAnalyzer::DetachExPlayer, CriAtomSource::AttachToOutputAnalyzer
     */
    public bool AttachExPlayer(CriAtomExPlayer player)
    {
        if (player == null || this.handle == IntPtr.Zero)
        {
            return(false);
        }

        /* アタッチ済みのプレーヤがあればデタッチ */
        this.DetachExPlayer();

        /* プレーヤの状態をチェック */
        CriAtomExPlayer.Status status = player.GetStatus();
        if (status != CriAtomExPlayer.Status.Stop)
        {
            return(false);
        }

        criAtomExPlayerOutputAnalyzer_AttachExPlayer(this.handle, player.nativeHandle);
        this.player = player;

        return(true);
    }