Indata, strömmar och utdata
[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.]
En "indata" i den här dokumentationen är en dataström för digitala medier (till exempel ljud eller video) som programmet levererar till skrivarobjektet från en källa med hjälp av lämpliga API:er. Indata måste levereras i ett format som stöds. Flera RGB- och YUV-standardformat stöds som indata, och ljudkodarna stöder PCM. Om ett angivet indataformat inte stöds internt av codecen instansierar skrivobjektet antingen ett ljud- eller videohjälpobjekt som kan konvertera en mängd olika format till format som codec kan acceptera. För ljudindata justerar hjälpobjektet bitdjupet, exempelfrekvensen och antalet kanaler efter behov. För videoindata utför videohjälpobjektet färgrymdskonverteringar och rektangelstorleksjusteringar. I vissa fall kan komprimerade ljud- och videodata skickas i en indataström. Indata kan vara av någon annan medietyp än ljud och video, till exempel text, skriptkommandon, stillbilder eller godtyckliga fildata.
Ett "utdata" i den här dokumentationen refererar till data som läsarobjektet skickar till ett program för återgivning. Utdata motsvarar en enda ström vid uppspelningstillfället. Om du använder ömsesidig uteslutning delar alla ömsesidigt uteslutande strömmar en enda utdata. Utdata är vanligtvis i form av okomprimerade ljud- eller videodata, även om de kan innehålla alla typer av data. Videoutdataformat som stöds visas någon annanstans i den här dokumentationen.
Termen "ström" i den här dokumentationen refererar till data i en ASF-fil, till skillnad från (1) indatakällan innan de bearbetas av skrivarobjektet och (2) utdata efter att dekomprimeras av läsarobjektet. En ASF-ström innehåller data som kommer från en enda indata på skrivarobjektet, även om mer än en ström kan skapas från samma indata. En ström har samma format- och komprimeringsinställningar från början till slut. En enkel ASF-fil har två strömmar, en för ljud och en för video. En mer komplex fil kan ha två ljudströmmar och flera videoströmmar. Ljudströmmarna kan ha samma komprimeringsinställningar men innehåller olika innehåll, till exempel en berättarröst på olika språk. Videoströmmarna kan innehålla samma innehåll, men har olika komprimeringsinställningar. Medieformatet och komprimeringsinställningarna som skrivobjektet ska gälla för varje ström anges i profilen.
Relationen mellan indata, strömmar och utdata kan vara av tre grundläggande typer. Följande tre diagram illustrerar relationerna.
I den mest grundläggande relationen, som är en profil utan ömsesidigt undantag, bearbetas varje indata av skrivaren och infogas i ASF-filen som en enda ström. Vid uppspelning läser läsaren strömmen och levererar okomprimerade exempel som en enda utdata, som visas i följande diagram.
En mer komplex relation inträffar när ömsesidigt undantag med flera bithastigheter används. I det här fallet bearbetas en enda indata av skrivaren och kodas med flera bithastigheter. Varje kodning av data infogas i ASF-filen som en separat ström. Vid uppspelning avgör läsaren vilken ström som ska dekomprimeras baserat på den tillgängliga bandbredden. Läsaren läser sedan den valda strömmen och levererar okomprimerade exempel som en enda utdata, som visas i följande diagram.
Den tredje typen av relation kan inträffa när ett språkbaserat eller anpassat ömsesidigt undantag används. I den här relationen bearbetas flera indata av läsaren och var och en infogas i ASF-filen som en enskild ström. Vid uppspelning väljer ditt program manuellt vilken ström som ska dekomprimera baserat på logik som du anger. Läsaren läser sedan den valda strömmen och levererar okomprimerade exempel som en enda utdata. Den här processen kan användas för att inkludera ljudspår på flera språk. Följande diagram illustrerar den här processen.
Det finns en viss variation i de relationer som beskrevs tidigare. En fil kan till exempel innehålla alla tre relationerna, eller en eller två av dem. Det är också möjligt att vissa indata komprimeras, i vilket fall skrivaren inte utför någon ytterligare komprimering. Läsaren kan också leverera komprimerade exempel. Men när det gör det måste du komma åt dem efter strömnummer, inte efter utdatanummer.
Not
Indata, ångor och utdata tilldelas alla nummer av objekten i Windows Media Format SDK. Strömmar har ett strömnummer, som är 1-baserat, som du definierar i profilen. Varje ström tilldelas också ett strömindex för användning i uppräkning av strömmar i en profil. Inget av dessa tal är garanterat konsekventa med varandra. Det innebär att indatanummer 1 kanske inte motsvarar strömnummer 1, strömnummer 1 kanske inte motsvarar strömindex 1 och så vidare.
Relaterade ämnen