Aby użyć sterowania zakresem dynamicznym
[Funkcja skojarzona z tą stroną, windows Media Format 11 SDK, jest starszą funkcją. Zostało zastąpione przez Czytnik Źródła i Zapis Ujścia . Czytnik źródła i Automat wyjścia zostały zoptymalizowane pod kątem systemów Windows 10 i Windows 11. Firma Microsoft zdecydowanie zaleca, aby nowy kod używał Source Reader i Sink Writer zamiast zestawu SDK Windows Media Format 11, jeśli jest 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.]
Zakres dynamiczny zawartości audio jest zasadniczo różnicą między najniższym woluminem a maksymalnym woluminem. Jeśli zakres dynamiczny zawartości jest zbyt duży, użytkownicy mogą wielokrotnie dostosowywać wolumin podczas odtwarzania. Na przykład filmy często mają duży zakres dynamiczny. Często, gdy głośność jest dostosowywana, aby dialogi były zrozumiałe w cichych scenach, inne części filmu z muzyką lub efektami dźwiękowymi są głośniejsze niż pożądano.
Kodeki Windows Media Audio 9 Professional oraz Windows Media Audio 9 Lossless obsługują funkcję nazywaną kontrolą zakresu dynamicznego. W czasie kodowania koder kodujący oblicza wartości szczytowe i średnie amplitudy w zawartości, a obiekt zapisywania przechowuje te wartości w metadanych strumienia po zakończeniu kodowania. Opcjonalnie aplikacja może również zapisywać wartości "docelowe" jako metadane, których aplikacje odtwarzacza i dekoder mogą używać jako wskazówek podczas odtwarzania pliku. W czasie odtwarzania aplikacja może określić poziom kontrolki zakresu dynamicznego, który ma być stosowany do strumienia audio.
Program Windows Media Player implementuje kontrolkę zakresu dynamicznego jako funkcję Tryb cichy.
Kiedy używać kontrolki zakresu dynamicznego
Kontrolka zakresu dynamicznego może zmieniać dźwięk zawartości. Z tego powodu nie należy konfigurować aplikacji do automatycznego używania kontrolki zakresu dynamicznego. Zamiast tego zapewnij użytkownikom możliwość włączania lub wyłączania dynamicznej kontrolki zakresu zgodnie z potrzebami.
Korzystanie z kontrolki zakresu dynamicznego
W czasie odtwarzania kontrolka zakresu dynamicznego jest aktywowana przy użyciu ustawienia danych wyjściowych g_wszDynamicRangeControl. Użyj IWMReaderAdvanced2::SetOutputSetting, aby skonfigurować ustawienie. Wartość zero (wartość domyślna) wskazuje, że zakres dynamiczny nie powinien być zmieniany. Wartość 1 lub 2 sygnalizuje kodek do wykonywania kontroli zakresu dynamicznego, gdzie 1 oznacza umiarkowany poziom kompresji zakresu dynamicznego, a 2 oznacza wysoki poziom kompresji zakresu dynamicznego.
W czasie kodowania lub odtwarzania można nadać kodekowi docelowe wartości PCM dla szczytowych i średnich poziomów poprzez ustawienie atrybutów WM/WMADRCPeakTarget i WM/WMADRCAverageTarget odpowiednio. Te wartości są przechowywane jako atrybuty metadanych i powinny być dostępne przy użyciu metod interfejsuIWMHeaderInfo3. Podczas kodowania strumienia audio przy użyciu profesjonalnego lub bezstratnego kodeka, atrybuty WM/WMADRCPeakReference i WM/WMADRCAverageReference są ustawiane automatycznie na szczytowe i średnie poziomy oryginalnej zawartości. Wartości docelowe są domyślnie ustawione na te same wartości co odwołania.
Dekoder w czasie odtwarzania oblicza zakres dynamiczny na podstawie wybranego poziomu kontrolki zakresu dynamicznego i wartości docelowych (jeśli zostały określone). Możliwe zakresy przedstawiono w poniższej tabeli.
Ustawienia | Zakres dostarczonego dźwięku |
---|---|
g_wszDynamicRangeControl = 0 (dowolne wartości docelowe) | Ten sam zakres co oryginalna zawartość. |
g_wszDynamicRangeControl = 1 (Wartości docelowe równe wartościom referencyjnym) | Średni poziom jest utrzymywany, a szczyty są ograniczone do średniej +12 dB. |
g_wszDynamicRangeControl = 2 (Wartości docelowe równe wartościom referencyjnym) | Średni poziom jest utrzymywany, a szczyty są ograniczone do średniej +6 dB. |
g_wszDynamicRangeControl = 1 (określone wartości docelowe) | Średni poziom ustawiony na wartość średnią docelową i szczyty ograniczone do docelowej wartości szczytowej. |
g_wszDynamicRangeControl = 2 (określone wartości docelowe) | Średni poziom ustawiony na wartość średnią docelową i szczyty ograniczone do mediany wartości średniej docelowej i docelowej wartości szczytowej. |
Należy pamiętać, że kontrolka zakresu dynamicznego jest funkcją dekodowania tylko i istnieje tylko jako metadane w samym pliku. Te ustawienia nie mają wpływu na zawartość przechowywaną w pliku, chyba że specjalnie poinstruujesz dekoder, aby używał ich. Zestaw SDK formatu Windows Media nie udostępnia metod modyfikowania dynamicznego zakresu danych audio w czasie kodowania.
Tematy pokrewne