Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Przykładowy obiekt wideo to wyspecjalizowana implementacja interfejsu IMFSample do użycia z ulepszonym rendererem wideo (EVR). Aby utworzyć wystąpienie tego obiektu, wywołaj funkcję MFCreateVideoSampleFromSurface. Funkcja przyjmuje wskaźnik do powierzchni Direct3D i zwraca wskaźnik do interfejsu IMFSample. Następujące typy obiektów powinny przydzielać próbki przy użyciu tej funkcji:
Niestandardowe prezentery EVR. Prezenter przydziela próbki wideo i wysyła je do metody IMFTransform::ProcessOutput. Aby uzyskać więcej informacji, zobacz "Jak napisać prezentera EVR".
Dekodatory wideo obsługujące przyspieszanie wideo. Aby uzyskać więcej informacji, zobacz Supporting DXVA 2.0 in Media Foundation.
Przykładowy obiekt wideo implementuje następujące interfejsy:
Jeśli parametr pUnkSurface MFCreateVideoSampleFromSurface jest inny niżnull, wynikowy przykład wideo zawiera pojedynczy bufor multimedialny, który hermetyzuje powierzchnię Direct3D. Ten obiekt buforu ma ograniczoną funkcjonalność:
Metoda IMFMediaBuffer::Lock buforu zwraca E_NOTIMPL.
Bufor nie implementuje interfejsu IMF2DBuffer.
Jedynym sposobem uzyskania dostępu do powierzchni z buforu jest wywołanie IMFGetService::GetServiceprzy użyciu identyfikatora usługi MR_BUFFER_SERVICE.
Jeśli parametr pUnkSurface jest NULL, próbka wideo jest tworzona z zerowymi buforami multimediów. Aby dodać bufor próbki, wykonaj następujące czynności:
Utwórz powierzchnię Direct3D.
Utwórz bufor powierzchni, wywołując MFCreateDXSurfaceBuffer. Aby uzyskać więcej informacji, zobacz DirectX Surface Buffer.
Dodaj bufor do próbki, wywołując IMFSample::AddBuffer.
Użyj tej metody, aby pamięć powierzchni była dostępna za pośrednictwem interfejsu IMF2DBuffer.
Tematy pokrewne