Método IMFPMediaPlayerCallback::OnMediaPlayerEvent (mfplay.h)

Importante Obsoleto. Esta API se puede quitar de futuras versiones de Windows. Las aplicaciones deben usar la sesión multimedia para la reproducción.
 

Llamado por el objeto de reproductor MFPlay para notificar a la aplicación un evento de reproducción.

Sintaxis

void OnMediaPlayerEvent(
  [in] MFP_EVENT_HEADER *pEventHeader
);

Parámetros

[in] pEventHeader

Puntero a una estructura de MFP_EVENT_HEADER que contiene información sobre el evento.

Valor devuelto

Ninguno

Observaciones

El tipo específico de evento de reproducción se da en el miembro eEventType de la estructura MFP_EVENT_HEADER . Esta estructura contiene información común a todos los tipos de eventos. Algunos tipos de eventos usan estructuras extendidas. Se define un conjunto de macros para convertir el puntero pEventHeader al tipo de estructura correcto. Para obtener más información, vea MFP_EVENT_TYPE.

Es seguro llamar a los métodos IMFPMediaPlayer y IMFPMediaItem dentro del método OnMediaPlayer . MFPlay no se garantiza que vuelva a escribir el método OnMediaPlayer . Es decir, las llamadas a OnMediaPlayer se serializan y el método no se volverá a invocar desde OnMediaPlayer.

Ejemplos

En el código siguiente se muestra cómo convertir el parámetro pEventHeader en el tipo de estructura correcto y pasar el puntero de estructura a una función de controlador. Las funciones de controlador se declaran al principio del ejemplo. La aplicación tendría que proporcionar implementaciones para estas funciones. Tenga en cuenta que no es necesario controlar todos los eventos. Por ejemplo, si la aplicación nunca llama a IMFPMediaPlayer::SetRate, no tendría que controlar el evento MFP_EVENT_TYPE_RATE_SET . En ese caso, simplemente omita MFP_EVENT_TYPE_RATE_SET de la instrucción switch .

// 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;
    }
}

Requisitos

   
Cliente mínimo compatible Windows 7 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 R2 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado mfplay.h

Consulte también

IMFPMediaPlayerCallback

Uso de MFPlay para la reproducción de audio y vídeo