Przykładowa pomoc techniczna przydzielona przez użytkownika
[Funkcja skojarzona z tą stroną, windows Media Format 11 SDK, jest starszą funkcją. Został zastąpiony przez Source Reader i Sink Writer. Źródłowy Czytnik i Zapisnik Ujścia zostały zoptymalizowane dla Windows 10 i Windows 11. Firma Microsoft zdecydowanie zaleca, aby nowy kod używał czytnika źródeł i modułu zapisywania ujścia 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.]
W normalnych okolicznościach zarówno obiekt czytnika, jak i obiekt synchronicznego czytnika tworzą nowy obiekt buforu dla każdego przykładu dostarczonego do aplikacji. Dzieje się tak, ponieważ obiekt odczytu nie ma możliwości poznania, co aplikacja robi z przykładami po ich pobraniu. Mimo że wiele aplikacji odczytuje próbki tylko w celu ich natychmiastowego renderowania, niektóre aplikacje mogą wymagać przechowywania próbek przez długi czas. W związku z tym obiekt odczytu nie może ponownie użyć żadnego z buforów, które przydziela; dostarcza je do aplikacji, która następnie ma nad nimi kontrolę.
Problem z tym podejściem polega na tym, że plik może zawierać ogromną liczbę próbek. Jeśli każdy z nich wymaga utworzenia nowego obiektu buforu, dużo czasu pracy procesora jest marnowane na przydzielanie i zwalnianie pamięci. W aplikacjach wrażliwych na czas, takich jak odtwarzacze multimedialne, obciążenie to może być bardzo szkodliwe dla wydajności.
Aby złagodzić problemy z wydajnością przykładów przydzielonych przez czytelników, zarówno czytelnik, jak i synchroniczny czytelnik obsługują przykłady przydzielone przez użytkownika. Aby użyć próbek przydzielonych przez aplikację, obiekt odczytu wykonuje wywołania do metody wywołania zwrotnego, którą implementujesz, dotyczącej alokacji próbek. Logika używana przez funkcję wywołania zwrotnego do dostarczania buforów do obiektu odczytu zależy wyłącznie od Ciebie. Można użyć puli buforów dla całego pliku lub wielu pul buforów, jedna dla każdego wyjścia lub strumienia, bądź zastosować dowolny inny schemat, który działa w twojej aplikacji.
Tematy pokrewne