Partager via


Service Interfaces

Certaines interfaces dans Media Foundation doivent être obtenues en appelant IMFGetService ::GetService au lieu d’appeler QueryInterface. La méthode GetService fonctionne comme QueryInterface, mais avec les différences suivantes :

  • Il prend un GUID d’identificateur de service en plus de l’identificateur d’interface.
  • Il peut retourner un pointeur vers un autre objet qui implémente l’interface, au lieu de renvoyer un pointeur vers l’objet d’origine interrogé.

Note

L’interface IMFGetService est très similaire à l’interface IServiceProvider utilisée dans d’autres API.

 

Un de service est une interface particulière obtenue à partir d’une classe particulière d’objets via l’interface IMFGetService. Les services suivants sont définis.

Identificateur de service Interface Objets susceptibles d’exposer ce service
MF_METADATA_PROVIDER_SERVICE IMFMetadataProvider Sources multimédias
MF_MEDIASOURCE_SERVICE IMFMediaSource Pris en charge dans Windows 8.1 et versions ultérieures.
MF_PMP_SERVER_CONTEXT IMFPMPServer Session de média PMP (Protected Media Path).
MF_QUALITY_SERVICES IMFQualityAdvise Sources multimédias.
MF_RATE_CONTROL_SERVICE IMFRateControl Sources multimédias, session multimédia
MF_RATE_CONTROL_SERVICE IMFRateSupport Sources multimédias, récepteurs multimédias, session multimédia
MF_REMOTE_PROXY IMFRemoteProxy Proxys pour les objets distants.
MF_SAMI_SERVICE IMFSAMIStyle Source de média SAMI (Accessible Media Interchange) synchronisée.
MF_SOURCE_PRESENTATION_PROVIDER_SERVICE IMFMediaSourcePresentationProvider Source sequencer
MF_TIMECODE_SERVICE IMFTimecodeTranslate Source multimédia ASF.
MF_TOPONODE_ATTRIBUTE_EDITOR_SERVICE IMFTopologyNodeAttributeEditor Session multimédia
MF_WRAPPED_OBJECT IMFByteStream Objets encapsulés
MF_WRAPPED_BUFFER_SERVICE Pris en charge dans Windows 8.1 et versions ultérieures.
MF_WRAPPED_SAMPLE_SERVIC Pris en charge dans Windows 8.1 et versions ultérieures.
MF_WORKQUEUE_SERVICES IMFWorkQueueServices Session multimédia
MFNET_SAVEJOB_SERVICE IMFSaveJob Flux d’octets
MFNETSOURCE_STATISTICS_SERVICE IPropertyStore Source réseau. Utilisez ce service pour récupérer les statistiques réseau. Voir MFNETSOURCE_STATISTICS, propriété.
MR_AUDIO_POLICY_SERVICE IMFAudioPolicy Convertisseur audio
MR_BUFFER_SERVICE IDirect3DSurface9 Mémoires tampons de surface DirectX
MR_CAPTURE_POLICY_VOLUME_SERVICE IMFSimpleAudioVolume Source de capture audio
MR_POLICY_VOLUME_SERVICE IMFSimpleAudioVolume Convertisseur audio
MR_STREAM_VOLUME_SERVICE IMFAudioStreamVolume Convertisseur audio
MR_VIDEO_ACCELERATION_SERVICE IDirect3DDeviceManager9, IDirectXVideoAccelerationService Convertisseur vidéo amélioré (EVR)
MR_VIDEO_ACCELERATION_SERVICE IDirectXVideoMemoryConfiguration Broches d’entrée sur le filtre EVR DirectShow
MR_VIDEO_ACCELERATION_SERVICE l’interface IMFVideoSampleAllocator Récepteurs de flux EVR.
MR_VIDEO_MIXER_SERVICE Différentes interfaces exposées par le mélangeur EVR. Consultez Utilisation des contrôles de mixage vidéo. EVR
MR_VIDEO_RENDER_SERVICE Différentes interfaces exposées par le présentateur EVR. Consultez Utilisation des contrôles d’affichage vidéo. EVR
MF_ACOUSTIC_ECHO_CANCELLATION_CONTROL_SERVICE IAcousticEchoCancellationControl Effets D’annulation d’écho acoustique (AEC). Introduit dans Windows 11, version 24H2.
MF_AUDIO_EFFECTS_MANAGER_SERVICE IAudioEffectsManager Sources multimédias. Introduit dans Windows 11, version 24H2.

 

Vous devez utiliser GetService pour obtenir les interfaces répertoriées dans ce tableau à partir des objets répertoriés dans ce tableau.

Dans certains cas, une interface est retournée en tant que service par une classe d’objets et retournée par QueryInterface par une autre classe d’objets. Les pages de référence de chaque interface indiquent quand utiliser GetService et quand utiliser QueryInterface .

Prudence

Un objet peut être implémenté de telle manière qu’il retourne une interface de service via QueryInterface ainsi que GetService. Toutefois, l’utilisation de QueryInterface lorsque GetService est nécessaire peut entraîner des problèmes de compatibilité ultérieurement.

 

La fonction MFGetService est une fonction d’assistance qui interroge un objet pour IMFGetService, puis appelle la méthode GetServicede l’objet.

Exemples

L’exemple suivant interroge la session media pour IMFGetService et obtient l’interface IMFRateControl.

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);

L’exemple suivant équivaut à l’exemple précédent, mais utilise la fonctionMFGetService.

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 l’interface IMFGetService

API Media Foundation Platform