Segmenty kopert
[Funkcja skojarzona z tą stroną, DirectShow, jest starszą funkcją. Został zastąpiony przez MediaPlayer, IMFMediaEnginei Audio/Video Capture w Media Foundation. Te funkcje zostały zoptymalizowane pod kątem systemów Windows 10 i Windows 11. Firma Microsoft zdecydowanie zaleca, aby nowy kod używał MediaPlayer, IMFMediaEngine i Audio/Video Capture w programie Media Foundation zamiast DirectShow, jeśli to możliwe. Firma Microsoft sugeruje, że istniejący kod, który używa starszych interfejsów API, należy przepisać go do korzystania z nowych interfejsów API, jeśli to możliwe.]
Krzywa parametrów składa się z co najmniej jednego segmentu koperty zdefiniowanego przy użyciu struktury MP_ENVELOPE_SEGMENT. Ta struktura zawiera następujące informacje:
- Czasy rozpoczęcia i zakończenia.
- Wartości początkowe i końcowe.
- Typ krzywej (liniowy, kwadratowy itd.).
- Opcjonalne flagi, opisane wkrótce.
Klient dodaje segmenty kopert do parametru, wywołując IMediaParams::AddEnvelope metodę i przekazując tablicę struktur MP_ENVELOPE_SEGMENT. Klient powinien sortować segmenty w kolejności rosnącej czasu przed wywołaniem metody . Ponieważ DMO przetwarza dane, można sobie wyobrazić parametr podróżujący po każdym segmencie koperty, jak samochód jeżdżąc po serii wzgórz. Metoda IMediaParams::GetParam zwraca najnowszą wartość.
Dwie sąsiadujące segmenty mogą mieć między sobą lukę. Podczas przerw parametr zachowuje poprzednią wartość w następujący sposób:
- Przed pierwszym segmentem wartość jest wartością neutralną.
- Między segmentami wartość jest końcową wartością poprzedniego segmentu.
- Po ostatnim segmencie wartość pozostaje na wartości końcowej tego segmentu.
- Jeśli klient opróżni funkcję DMO, wartość zostanie przywrócona do wartości neutralnej.
Segment można zmienić, ustawiając jedną z następujących flag:
- MPF_ENVLP_BEGIN_CURRENTVAL. Funkcja DMO używa najnowszej wartości parametru jako wartości początkowej dla segmentu. Może to być wartość neutralna lub wartość końcowa z poprzedniego segmentu. Obiekt DMO ignoruje element valStart struktury MP_ENVELOPE_SEGMENT.
- MPF_ENVLP_BEGIN_NEUTRALVAL. Funkcja DMO używa neutralnej wartości parametru jako wartości początkowej dla segmentu. Ignoruje valStart.
Te flagi można traktować jako chwytanie punktu początkowego segmentu i przenoszenie go w górę lub w dół, podczas gdy wartość końcowa pozostaje stała. Segment będzie "rozciągnąć" odpowiednio.
Tematy pokrewne