IMFPMediaPlayerCallback::OnMediaPlayerEvent メソッド (mfplay.h)

大事な 廃止。 この API は、Windows の今後のリリースから削除される可能性があります。 アプリケーションでは、再生に メディア セッション を使用する必要があります。
 

MFPlay プレーヤー オブジェクトによって呼び出され、再生イベントがアプリケーションに通知されます。

構文

void OnMediaPlayerEvent(
  [in] MFP_EVENT_HEADER *pEventHeader
);

パラメーター

[in] pEventHeader

イベントに関する情報を含む MFP_EVENT_HEADER 構造体へのポインター。

戻り値

なし

解説

特定の種類の再生イベントは、MFP_EVENT_HEADER構造体の eEventType メンバーで指定されます。 この構造体には、すべてのイベントの種類に共通する情報が含まれています。 一部のイベントの種類では、拡張構造体が使用されます。 一連のマクロは、 pEventHeader ポインターを正しい構造体の種類にキャストするために定義されます。 詳細については、「 MFP_EVENT_TYPE」を参照してください。

OnMediaPlayer メソッド内で IMFPMediaPlayer メソッドと IMFPMediaItem メソッドを呼び出しても問題ありません。 MFPlay は OnMediaPlayer メソッドを再入力しないことが保証されています。 つまり、 OnMediaPlayer の呼び出しはシリアル化され、 OnMediaPlayer 内からメソッドが再度呼び出されることはありません。

次のコードは、 pEventHeader パラメーターを正しい構造体型にキャストし、構造体ポインターをハンドラー関数に渡す方法を示しています。 ハンドラー関数は、例の先頭で宣言されています。 アプリケーションでは、これらの関数の実装を提供する必要があります。 すべてのイベントを処理する必要はありません。 たとえば、アプリケーションが IMFPMediaPlayer::SetRate を呼び出さない場合は、 MFP_EVENT_TYPE_RATE_SET イベントを処理する必要はありません。 その場合は、switch ステートメントからMFP_EVENT_TYPE_RATE_SETを省略するだけです。

// Declarations of MFPlay event handler functions.

void OnPlay(MFP_PLAY_EVENT *pEvent);
void OnPause(MFP_PAUSE_EVENT *pEvent);
void OnStop(MFP_STOP_EVENT *pEvent);
void OnPositionSet(MFP_POSITION_SET_EVENT *pEvent);
void OnRateSet(MFP_RATE_SET_EVENT *pEvent);
void OnMediaItemCreated(MFP_MEDIAITEM_CREATED_EVENT *pEvent);
void OnMediaItemSet(MFP_MEDIAITEM_SET_EVENT *pEvent);
void OnFrameStep(MFP_FRAME_STEP_EVENT *pEvent);
void OnMediaItemCleared(MFP_MEDIAITEM_CLEARED_EVENT *pEvent);
void OnMFEvent(MFP_MF_EVENT *pEvent); 
void OnError(MFP_ERROR_EVENT *pEvent);
void OnPlaybackEnded(MFP_PLAYBACK_ENDED_EVENT *pEvent);
void OnAquireUserCredential(MFP_ACQUIRE_USER_CREDENTIAL_EVENT *pEvent);

// Implementation of IMFPMediaPlayerCallback::OnMediaPlayerEvent
void STDMETHODCALLTYPE PlayerCallback::OnMediaPlayerEvent(MFP_EVENT_HEADER * pEventHeader)
{
    switch (pEventHeader->eEventType)
    {
    case MFP_EVENT_TYPE_PLAY: 
        OnPlay(MFP_GET_PLAY_EVENT(pEventHeader));
        break;

    case MFP_EVENT_TYPE_PAUSE: 
        OnPause(MFP_GET_PAUSE_EVENT(pEventHeader));
        break;

    case MFP_EVENT_TYPE_STOP: 
        OnStop(MFP_GET_STOP_EVENT(pEventHeader)); 
        break;

    case MFP_EVENT_TYPE_POSITION_SET: 
        OnPositionSet(MFP_GET_POSITION_SET_EVENT(pEventHeader)); 
        break;

    case MFP_EVENT_TYPE_RATE_SET: 
        OnRateSet(MFP_GET_RATE_SET_EVENT(pEventHeader)); 
        break;

    case MFP_EVENT_TYPE_MEDIAITEM_CREATED: 
        OnMediaItemCreated(MFP_GET_MEDIAITEM_CREATED_EVENT(pEventHeader)); 
        break;

    case MFP_EVENT_TYPE_MEDIAITEM_SET: 
        OnMediaItemSet(MFP_GET_MEDIAITEM_SET_EVENT(pEventHeader)); 
        break;

    case MFP_EVENT_TYPE_FRAME_STEP: 
        OnFrameStep(MFP_GET_FRAME_STEP_EVENT(pEventHeader)); 
        break;

    case MFP_EVENT_TYPE_MEDIAITEM_CLEARED: 
        OnMediaItemCleared(MFP_GET_MEDIAITEM_CLEARED_EVENT(pEventHeader)); 
        break;

    case MFP_EVENT_TYPE_MF: 
        OnMFEvent(MFP_GET_MF_EVENT(pEventHeader)); 
        break;

    case MFP_EVENT_TYPE_ERROR: 
        OnError(MFP_GET_ERROR_EVENT(pEventHeader)); 
        break;

    case MFP_EVENT_TYPE_PLAYBACK_ENDED: 
        OnPlaybackEnded(MFP_GET_PLAYBACK_ENDED_EVENT(pEventHeader)); 
        break;

    case MFP_EVENT_TYPE_ACQUIRE_USER_CREDENTIAL: 
        OnAquireUserCredential(MFP_GET_ACQUIRE_USER_CREDENTIAL_EVENT(pEventHeader)); 
        break;
    }
}

要件

   
サポートされている最小のクライアント Windows 7 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 R2 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー mfplay.h

関連項目

IMFPMediaPlayerCallback

オーディオ/ビデオ再生に MFPlay を使用する