Dela via


Stöd för användarallokerat prov

[Funktionen som är associerad med den här sidan, Windows Media Format 11 SDK, är en äldre funktion. Det har ersatts av Source Reader och Sink Writer. Source Reader och Sink Writer har optimerats för Windows 10 och Windows 11. Microsoft rekommenderar starkt att ny kod använder Source Reader och Sink Writer i stället för Windows Media Format 11 SDK, när det är möjligt. Microsoft föreslår att befintlig kod som använder äldre API:er skrivs om för att använda de nya API:erna om möjligt.]

Under normala omständigheter skapar både läsarobjektet och det synkrona läsarobjektet ett nytt buffertobjekt för varje exempel som levereras till programmet. Det beror på att läsobjektet inte har något sätt att veta vad programmet gör med exemplen när det har hämtat dem. Även om många program endast läser exempel för att återge dem omedelbart, kan vissa program behöva underhålla exempel under en lång tid. Läsobjektet kan därför inte återanvända någon av de buffertar som det allokerar. den levererar dem till ditt program, som sedan har kontroll över dem.

Problemet med den här metoden är att en fil kan innehålla ett stort antal exempel. Om var och en av dem kräver att ett nytt buffertobjekt skapas slösas mycket processortid åt att allokera och frigöra minne. I tidskänsliga program som mediespelare kan den här kostnaden vara mycket skadlig för prestanda.

För att minska prestandaproblemen för läsarallokerade exempel stöder både läsaren och den synkrona läsaren användarallokerade exempel. Om du vill använda exempel som allokerats av ditt program anropar läsobjektet en metod för återanrop av exempelallokering som du implementerar. Logiken som används av återanropet för att leverera buffertar till läsobjektet är helt upp till dig. Du kan använda en pool med buffertar för hela filen eller använda flera pooler med buffertar, en för varje utdata eller dataström eller något annat schema som fungerar för ditt program.

allokera buffertar för filläsning

filläsningsfunktioner