Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Algumas interfaces no Media Foundation devem ser obtidas chamando IMFGetService::GetService em vez de chamar QueryInterface. O método GetService funciona como QueryInterface, mas com as seguintes diferenças:
- Ele usa um GUID do identificador de serviço além do identificador de interface.
- Ele pode retornar um ponteiro para outro objeto que implementa a interface, em vez de retornar um ponteiro para o objeto original que é consultado.
Nota
A interfaceIMFGetService é muito semelhante à interface de IServiceProvider usada em algumas outras APIs.
Um serviço é uma interface específica obtida de uma classe específica de objetos por meio da interfaceIMFGetService. Os serviços a seguir são definidos.
| Identificador de serviço | Interface | Objetos que podem expor esse serviço |
|---|---|---|
| MF_METADATA_PROVIDER_SERVICE | IMFMetadataProvider | Fontes de mídia |
| MF_MEDIASOURCE_SERVICE | IMFMediaSource | Com suporte no Windows 8.1 e posterior. |
| MF_PMP_SERVER_CONTEXT | IMFPMPServer | Sessão de Mídia do PMP (caminho de mídia protegido). |
| MF_QUALITY_SERVICES | IMFQualityAdvise | Fontes de mídia. |
| MF_RATE_CONTROL_SERVICE | IMFRateControl | Fontes de mídia, Sessão de Mídia |
| MF_RATE_CONTROL_SERVICE | IMFRateSupport | Fontes de mídia, coletores de mídia, Sessão de Mídia |
| MF_REMOTE_PROXY | IMFRemoteProxy | Proxies para objetos remotos. |
| MF_SAMI_SERVICE | IMFSAMIStyle | Fonte de mídia SAMI (Intercâmbio de Mídia Acessível Sincronizada). |
| MF_SOURCE_PRESENTATION_PROVIDER_SERVICE | IMFMediaSourcePresentationProvider | Origem do sequencer |
| MF_TIMECODE_SERVICE | IMFTimecodeTranslate | Fonte de mídia ASF. |
| MF_TOPONODE_ATTRIBUTE_EDITOR_SERVICE | IMFTopologyNodeAttributeEditor | Sessão de mídia |
| MF_WRAPPED_OBJECT | IMFByteStream | Objetos encapsulados |
| MF_WRAPPED_BUFFER_SERVICE | Com suporte no Windows 8.1 e posterior. |
|
| MF_WRAPPED_SAMPLE_SERVIC | Com suporte no Windows 8.1 e posterior. |
|
| MF_WORKQUEUE_SERVICES | IMFWorkQueueServices | Sessão de mídia |
| MFNET_SAVEJOB_SERVICE | IMFSaveJob | Fluxos de bytes |
| MFNETSOURCE_STATISTICS_SERVICE | IPropertyStore | Fonte de rede. Use esse serviço para recuperar estatísticas de rede. Consulte MFNETSOURCE_STATISTICS Property. |
| MR_AUDIO_POLICY_SERVICE | IMFAudioPolicy | Renderizador de áudio |
| MR_BUFFER_SERVICE | IDirect3DSurface9 | Buffers de superfície do DirectX |
| MR_CAPTURE_POLICY_VOLUME_SERVICE | IMFSimpleAudioVolume | Origem da captura de áudio |
| MR_POLICY_VOLUME_SERVICE | IMFSimpleAudioVolume | Renderizador de áudio |
| MR_STREAM_VOLUME_SERVICE | IMFAudioStreamVolume | Renderizador de áudio |
| MR_VIDEO_ACCELERATION_SERVICE | IDirect3DDeviceManager9, IDirectXVideoAccelerationService | Renderizador de vídeo avançado (EVR) |
| MR_VIDEO_ACCELERATION_SERVICE | IDirectXVideoMemoryConfiguration | Fixações de entrada no filtro EVR do DirectShow |
| MR_VIDEO_ACCELERATION_SERVICE | interface IMFVideoSampleAllocator | Coletores de fluxo EVR. |
| MR_VIDEO_MIXER_SERVICE | Várias interfaces expostas pelo mixer EVR. Consulte Usando os controles do Video Mixer. | EVR |
| MR_VIDEO_RENDER_SERVICE | Várias interfaces expostas pelo apresentador do EVR. Consulte Usando os controles de exibição de vídeo. | EVR |
| MF_ACOUSTIC_ECHO_CANCELLATION_CONTROL_SERVICE | IAcousticEchoCancellationControl | Efeitos de cancelamento de eco acústico (AEC). Introduzido no Windows 11, versão 24H2. |
| MF_AUDIO_EFFECTS_MANAGER_SERVICE | IAudioEffectsManager | Fontes de mídia. Introduzido no Windows 11, versão 24H2. |
Você deve usar GetService para obter as interfaces listadas nesta tabela dos objetos listados nesta tabela.
Em alguns casos, uma interface é retornada como um serviço por uma classe de objetos e retornada por meio de QueryInterface por outra classe de objetos. As páginas de referência de cada interface indicam quando usar GetService e quando usar QueryInterface.
Cuidado
Um objeto pode ser implementado de forma a retornar uma interface de serviço por meio de QueryInterface, bem como GetService. No entanto, usar QueryInterface quando getService for necessário pode levar a problemas de compatibilidade posteriormente.
A função MFGetService é uma função auxiliar que consulta um objeto para IMFGetService e, em seguida, chama o métodoGetServicedo objeto.
Exemplos
O exemplo a seguir consulta a Sessão de Mídia para IMFGetService e obtém a interfaceIMFRateControl.
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);
O exemplo a seguir é equivalente ao exemplo anterior, mas usa a função 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);
Tópicos relacionados
-
interface IMFGetService
-
APIs do Media Foundation Platform