Esempi di video
L'oggetto di esempio video è un'implementazione specializzata dell'interfaccia IMFSample da usare con il renderer video avanzato (EVR). Per creare un'istanza di questo oggetto, chiamare la funzione MFCreateVideoSampleFromSurface . La funzione accetta un puntatore a una superficie Direct3D e restituisce un puntatore all'interfaccia IMFSample . I tipi di oggetti seguenti devono allocare campioni usando questa funzione:
Relatori EVR personalizzati. Un relatore alloca campioni video e li invia al metodo IMFTransform::P rocessOutput del mixer. Per altre informazioni, vedere Come scrivere un relatore EVR.
Decodificatori video che supportano l'accelerazione video. Per altre informazioni, vedere Supporto di DXVA 2.0 in Media Foundation.
L'oggetto di esempio video implementa le interfacce seguenti:
Se il parametro pUnkSurface di MFCreateVideoSampleFromSurface è diverso da NULL, l'esempio video risultante contiene un singolo buffer multimediale che incapsula la superficie Direct3D. Questo oggetto buffer ha funzionalità limitate:
Il metodo IMFMediaBuffer::Lock del buffer restituisce E_NOTIMPL.
Il buffer non implementa l'interfaccia IMF2DBuffer .
L'unico modo per accedere alla superficie dal buffer consiste nel chiamare IMFGetService::GetService, usando l'identificatore del servizio MR_BUFFER_SERVICE.
Se il parametro pUnkSurface è NULL, l'esempio video viene creato con zero buffer multimediali. Per aggiungere un buffer, eseguire le operazioni seguenti:
Creare una superficie Direct3D.
Creare un buffer di superficie chiamando MFCreateDXSurfaceBuffer. Per altre informazioni, vedere DirectX Surface Buffer.
Aggiungere il buffer all'esempio chiamando IMFSample::AddBuffer.
Usare questo approccio se è necessario che la memoria di superficie sia accessibile tramite l'interfaccia IMF2DBuffer .
Argomenti correlati