Videoexempel
Videoexempelobjektet är en specialiserad implementering av IMFSample--gränssnittet för användning med Enhanced Video Renderer (EVR). Om du vill skapa en instans av det här objektet anropar du funktionen MFCreateVideoSampleFromSurface. Funktionen tar en pekare till en Direct3D-yta och returnerar en pekare till IMFSample--gränssnittet. Följande typer av objekt bör allokera exempel med den här funktionen:
Anpassade EVR-presentatörer. En presentatör allokerar videoklipp och skickar dem till mixerns IMFTransform::ProcessOutput-metoden. För mer information, se Hur man skriver en EVR-presentatör.
Videodekodare som stöder videoacceleration. Mer information finns i Supporting DXVA 2.0 in Media Foundation.
Videoexempleobjektet implementerar följande gränssnitt:
Om parametern pUnkSurface för MFCreateVideoSampleFromSurface inte ärNULL-innehåller det resulterande videoexemplet en enda mediebuffert som kapslar in Direct3D-ytan. Det här buffertobjektet har begränsade funktioner:
Buffertens IMFMediaBuffer::Lock metoden returnerar E_NOTIMPL.
Bufferten implementerar inte IMF2DBuffer- gränssnitt.
Det enda sättet att komma åt ytan från bufferten är att anropa IMFGetService::GetService, med hjälp av tjänstidentifieraren MR_BUFFER_SERVICE.
Om parametern pUnkSurface är NULL, skapas videoprovet utan mediebuffertar. Gör följande för att lägga till en buffert i exemplet:
Skapa en Direct3D-yta.
Skapa en ytbuffert genom att anropa MFCreateDXSurfaceBuffer. Mer information finns i DirectX Surface Buffer.
Lägg till bufferten i exemplet genom att anropa IMFSample::AddBuffer.
Använd den här metoden om du behöver att ytminnet ska vara tillgängligt via IMF2DBuffer--gränssnittet.
Relaterade ämnen