Acerca de la sesión multimedia

La sesión multimedia expone la interfaz IMFMediaSession . Hay dos maneras de crear la sesión multimedia, en función de si la aplicación admitirá contenido protegido:

  • Si la aplicación no admite contenido protegido, puede crear la sesión multimedia llamando a MFCreateMediaSession. Esta función crea la sesión multimedia dentro del proceso de aplicación.
  • Para admitir contenido protegido, cree la sesión multimedia llamando a MFCreatePMPMediaSession. Esta función crea la sesión multimedia dentro del proceso de ruta de acceso a medios protegidas (PMP). La aplicación recibe un puntero a un objeto proxy que serializa las llamadas de método a través del límite del proceso. Tenga en cuenta que la sesión multimedia PMP se puede usar para reproducir contenido no cifrado, así como contenido protegido.

Cualquier aplicación que use la sesión multimedia seguirá estos pasos generales:

  1. Cree una topología.
  2. Poner en cola la topología en la sesión multimedia llamando a IMFMediaSession::SetTopology.
  3. Controle el flujo de datos llamando a IMFMediaSession::Start, IMFMediaSession::P ause o IMFMediaSession::Stop.
  4. Antes de que se cierre la aplicación, llame a IMFMediaSession::Close para cerrar la sesión multimedia.
  5. Apague los orígenes multimedia creados por la aplicación mediante una llamada a IMFMediaSource::Shutdown.
  6. Apague la sesión multimedia llamando a IMFMediaSession::Shutdown.

Al usar la sesión multimedia, la aplicación no debe iniciar, pausar ni detener directamente el origen multimedia. Todos los cambios de estado deben iniciarse llamando a los métodos IMFMediaSession . La sesión multimedia controla los cambios de estado en el origen multimedia.

Muchos otros detalles dependerán de la funcionalidad específica de la aplicación.

Contenido protegido

Para reproducir contenido protegido, debe crear la sesión multimedia dentro de la ruta de acceso de medios protegida (PMP), llamando a MFCreatePMPMediaSession. Esta función crea una instancia de la sesión multimedia dentro del PMP y devuelve un puntero a un objeto proxy que serializa las interfaces a través del límite del proceso.

En la mayoría de los aspectos, el uso de la sesión multimedia dentro de PMP es transparente para la aplicación. Sin embargo, es posible que la aplicación necesite invocar determinadas acciones que permitan al usuario reproducir el contenido. Por ejemplo, es posible que el usuario necesite obtener una licencia DRM. Media Foundation define un mecanismo genérico para estas acciones mediante la interfaz IMFContentEnabler .

Para obtener más información, vea los temas siguientes:

Reloj de presentación

La sesión multimedia administra todos los aspectos del reloj de presentación:

  • Creación del reloj de presentación.

  • Selección del origen de hora.

  • Notificación a los receptores de medios sobre el reloj

  • Iniciar, detener y pausar el reloj según sea necesario.

  • Apagando el reloj.

Para obtener un puntero al reloj de presentación, llame a IMFMediaSession::GetClock en la sesión multimedia. El reloj de presentación no devuelve una hora válida hasta que la sesión multimedia envía el evento MESessionTopologyStatus con la marca MF_TOPOSTATUS_READY. Hasta entonces, GetClock devuelve MF_E_CLOCK_NO_TIME_SOURCE.

Una aplicación que usa la sesión multimedia nunca debe iniciarse, detener o pausar el reloj de presentación; cambiar la velocidad del reloj; o apaga el reloj.

Cuando la aplicación llama a IMFMediaSession::Start, la sesión multimedia inicia el reloj de presentación con una hora de inicio igual a la posición inicial especificada en el método Start . Para obtener más información sobre la sesión multimedia, vea Sesión multimedia.

Sesión multimedia