Compartir a través de


Interfaces de servicio

Algunas interfaces de Media Foundation deben obtenerse llamando a IMFGetService::GetService en lugar de llamar a QueryInterface. El método GetService funciona como QueryInterface, pero con las siguientes diferencias:

  • Toma un GUID de identificador de servicio además del identificador de interfaz.
  • Puede devolver un puntero a otro objeto que implementa la interfaz, en lugar de devolver un puntero al objeto original que se consulta.

Nota

La interfazIMFGetService es muy similar a la interfaz IServiceProvider que se usa en otras API.

 

Una de servicio es una interfaz determinada obtenida de una clase determinada de objetos a través de la interfazIMFGetService. Se definen los siguientes servicios.

Identificador de servicio Interfaz Objetos que podrían exponer este servicio
MF_METADATA_PROVIDER_SERVICE IMFMetadataProvider Orígenes multimedia
MF_MEDIASOURCE_SERVICE IMFMediaSource Compatible con Windows 8.1 y versiones posteriores.
MF_PMP_SERVER_CONTEXT IMFPMPServer Sesión multimedia protegida (PMP).
MF_QUALITY_SERVICES IMFQualityAdvise Orígenes multimedia.
MF_RATE_CONTROL_SERVICE IMFRateControl Orígenes multimedia, sesión multimedia
MF_RATE_CONTROL_SERVICE IMFRateSupport Orígenes multimedia, receptores de medios, Sesión multimedia
MF_REMOTE_PROXY IMFRemoteProxy Servidores proxy para objetos remotos.
MF_SAMI_SERVICE IMFSAMIStyle Origen multimedia sincronizado de intercambio de medios accesibles (SAMI).
MF_SOURCE_PRESENTATION_PROVIDER_SERVICE imfMediaSourcePresentationProvider Origen del secuenciador
MF_TIMECODE_SERVICE IMFTimecodeTranslate Origen multimedia de ASF.
MF_TOPONODE_ATTRIBUTE_EDITOR_SERVICE IMFTopologyNodeAttributeEditor Sesión multimedia
MF_WRAPPED_OBJECT IMFByteStream Objetos ajustados
MF_WRAPPED_BUFFER_SERVICE Compatible con Windows 8.1 y versiones posteriores.
MF_WRAPPED_SAMPLE_SERVIC Compatible con Windows 8.1 y versiones posteriores.
MF_WORKQUEUE_SERVICES IMFWorkQueueServices Sesión multimedia
MFNET_SAVEJOB_SERVICE IMFSaveJob Secuencias de bytes
MFNETSOURCE_STATISTICS_SERVICE IPropertyStore Origen de red. Use este servicio para recuperar estadísticas de red. ConsulteMFNETSOURCE_STATISTICS Property .
MR_AUDIO_POLICY_SERVICE IMFAudioPolicy Representador de audio
MR_BUFFER_SERVICE IDirect3DSurface9 Búferes de superficie de DirectX
MR_CAPTURE_POLICY_VOLUME_SERVICE IMFSimpleAudioVolume Origen de captura de audio
MR_POLICY_VOLUME_SERVICE IMFSimpleAudioVolume Representador de audio
MR_STREAM_VOLUME_SERVICE IMFAudioStreamVolume Representador de audio
MR_VIDEO_ACCELERATION_SERVICE IDirect3DDeviceManager9, IDirectXVideoAccelerationService Representador de vídeo mejorado (EVR)
MR_VIDEO_ACCELERATION_SERVICE IDirectXVideoMemoryConfiguration Patillas de entrada en el filtro DirectShow EVR
MR_VIDEO_ACCELERATION_SERVICE de interfaz IMFVideoSampleAllocator Receptores de flujo EVR.
MR_VIDEO_MIXER_SERVICE Varias interfaces expuestas por el mezclador EVR. Consulte Uso de los controles mezclador de vídeo. EVR
MR_VIDEO_RENDER_SERVICE Varias interfaces expuestas por el moderador de EVR. Consulte Uso de los controles de visualización de vídeo. EVR
MF_ACOUSTIC_ECHO_CANCELLATION_CONTROL_SERVICE IAcousticEchoCancellationControl Efectos acústicos de cancelación de eco (AEC). Introducido en Windows 11, versión 24H2.
MF_AUDIO_EFFECTS_MANAGER_SERVICE IAudioEffectsManager Orígenes multimedia. Introducido en Windows 11, versión 24H2.

 

Debe usar GetService para obtener las interfaces enumeradas en esta tabla de los objetos enumerados en esta tabla.

En algunos casos, una clase de objetos devuelve una interfaz como servicio y se devuelve a través de QueryInterface por otra clase de objetos. Las páginas de referencia de cada interfaz indican cuándo usar GetService y cuándo usar QueryInterface.

Cautela

Un objeto puede implementarse de tal manera que devuelva una interfaz de servicio mediante QueryInterface, así como GetService. Sin embargo, el uso de QueryInterface cuando se requiere GetService podría provocar problemas de compatibilidad más adelante.

 

La funciónMFGetServicees una función auxiliar que consulta un objeto para IMFGetService y, a continuación, llama al método GetService del objeto.

Ejemplos

En el ejemplo siguiente se consulta la sesión multimedia para IMFGetService y obtiene la interfazIMFRateControl.

IMFGetService *pGetService = NULL;
IMFRateControl *pRateControl = NULL;
HRESULT hr = S_OK;

hr = pMediaSession->QueryInterface(
    IID_IMFGetService, 
    (void**)&pGetService);

if (SUCCEEDED(hr))
{
    hr = pGetService->GetService(
        MF_RATE_CONTROL_SERVICE, 
        IID_IMFRateControl,
        (void**)&pRateControl);
}
if (SUCCEEDED(hr))
{
    // Use IMFRateControl. (Not shown.)
}

// Clean up.
SAFE_REELEASE(pGetService);
SAFE_RELEASE(pRateControl);

El ejemplo siguiente es equivalente al ejemplo anterior, pero usa la función MFGetService.

IMFRateControl *pRateControl = NULL;
HRESULT hr = S_OK;

hr = MFGetService(
    pMediaSession, 
    MF_RATE_CONTROL_SERVICE, 
    IID_IMFRateControl, 
    (void**) &pRateCtl 
); 
if (SUCCEEDED(hr))
{
    // Use IMFRateControl. (Not shown.)
}

// Clean up.
SAFE_RELEASE(pRateControl);

de la interfaz IMFGetService de

API de Media Foundation Platform