Bemenetek, streamek és kimenetek
[A laphoz társított funkció, Windows Media Format 11 SDKegy régi funkció. A Forrásolvasó és Fogadó írójafelülírta. Forrásolvasó és Fogadó író Windows 10-hez és Windows 11-hez lett optimalizálva. A Microsoft határozottan javasolja, hogy az új kód Forrásolvasó és Fogadó író használjon Windows Media Format 11 SDKhelyett, ha lehetséges. A Microsoft javasolja, hogy az örökölt API-kat használó meglévő kódot át kell írni az új API-k használatára, ha lehetséges.]
A jelen dokumentációban szereplő "bemenet" bármely digitális médiaadatfolyam (például hang- vagy videostream), amelyet az alkalmazás a megfelelő API-k használatával továbbít az íróobjektumnak egy forrásból. A bemeneteket támogatott formátumban kell kézbesíteni. Bemenetként számos szabványos RGB- és YUV-formátum támogatott, a hangkodek pedig a PCM-et támogatják. Ha a kodek nem támogatja natív módon a megadott bemeneti formátumot, az íróobjektum egy hang- vagy videoeszköz-segédobjektumot fog létrehozni, amely számos formátumot képes konvertálni a kodek által elfogadható formátumokká. A hangbemenetek esetében a segédobjektum szükség szerint módosítja a bitmélység, a mintasebesség és a csatornák számát. A videobemenetek esetében a videó segédobjektuma színtér-átalakításokat és téglalapméret-módosításokat hajt végre. Bizonyos esetekben a tömörített hang- és videoadatok továbbíthatók egy bemeneti adatfolyamban. A bemenet a hang- és videotartalmakon kívül más típusú is lehet, például szöveg, szkriptparancsok, állóképek vagy tetszőleges fájladatok.
A dokumentáció "kimenete" azokra az adatokra vonatkozik, amelyeket az olvasóobjektum továbbít egy alkalmazásnak renderelés céljából. A kimenet egy streamnek felel meg a lejátszás időpontjában. Ha kölcsönös kizárást használ, a kölcsönösen kizáró streamek mindegyike egyetlen kimenettel rendelkezik. A kimeneti adatok általában tömörítetlen hang- vagy videoadatok formájában vannak, bár bármilyen típusú adatot tartalmazhatnak. A támogatott videokimeneti formátumok a dokumentáció más részein találhatók.
A jelen dokumentációban a "stream" kifejezés egy ASF-fájlban lévő adatokra utal, szemben az (1) a bemeneti forrásadatokkal, mielőtt az íróobjektum feldolgozta volna azokat, és (2) a kimeneti adatokat, miután az olvasóobjektum kibontotta azokat. Az ASF-adatfolyamok olyan adatokat tartalmaznak, amelyek egyetlen bemenetből származnak az íróobjektumon, bár több stream is létrehozható ugyanabból a bemenetből. A streamek formátuma és tömörítési beállításai az elejétől a végéig megegyeznek. Egy egyszerű ASF-fájl két streamel, egy hangfájllal és egy videóval. Egy összetettebb fájl két hangstreamet és több videostreamet is tartalmazhat. Előfordulhat, hogy a hangstreamek tömörítési beállításai megegyeznek, de különböző tartalmakat tartalmaznak, például különböző nyelvű kísérőszövegeket. Előfordulhat, hogy a videóstreamek ugyanazt a tartalmat tartalmazzák, de különböző tömörítési beállításokkal rendelkeznek. A profilban meg vannak adva azok a médiaformátumok és tömörítési beállítások, amelyeket az íróobjektum az egyes streamekre alkalmaz.
A bemenetek, streamek és kimenetek közötti kapcsolat három alaptípusból állhat. Az alábbi három diagram a kapcsolatokat szemlélteti.
A legalapvetőbb kapcsolatban, amely egy kölcsönös kizárás nélküli profil, az egyes bemeneteket az író dolgozza fel, és egyetlen streamként szúrja be az ASF-fájlba. Lejátszáskor az olvasó felolvassa a streamet, és egyetlen kimenetként jeleníti meg a tömörítetlen mintákat, ahogyan az alábbi ábrán látható.
Összetettebb kapcsolat akkor fordul elő, ha több bitsebességű kölcsönös kizárást használ. Ebben az esetben az író egyetlen bemenetet dolgoz fel, és több bitsebességen kódolja. Az adatok minden kódolása külön streamként lesz beszúrva az ASF-fájlba. Lejátszáskor az olvasó határozza meg, hogy melyik streamet bontsa le a rendelkezésre álló sávszélesség alapján. Az olvasó ezután felolvassa a kijelölt streamet, és egyetlen kimenetként jeleníti meg a tömörítetlen mintákat, ahogy az az alábbi ábrán is látható.
A harmadik típusú kapcsolat akkor fordulhat elő, ha nyelvalapú vagy egyéni kölcsönös kizárást használ. Ebben a kapcsolatban az olvasó több bemenetet dolgoz fel, és mindegyik be lesz szúrva az ASF-fájlba egyéni streamként. Lejátszáskor az alkalmazás manuálisan kiválasztja, hogy melyik streamet bontsa le a megadott logika alapján. Az olvasó ezután felolvassa a kijelölt streamet, és egyetlen kimenetként tömörítetlen mintákat szolgáltat. Ez a folyamat több nyelven is használható hangsávok beiktatásához. Az alábbi ábra ezt a folyamatot szemlélteti.
A korábban ismertetett kapcsolatokban van némi eltérés. Egy fájl tartalmazhat például mindhárom kapcsolatot, vagy egy vagy két kapcsolatot. Bizonyos bemenetek tömörítése is lehetséges, ebben az esetben az író nem végez további tömörítést. Az olvasó tömörített mintákat is képes szállítani. De ha igen, akkor streamszám alapján kell elérnie őket, nem pedig kimeneti szám alapján.
Jegyzet
A bemeneteket, gőzöket és kimeneteket a Windows Media Format SDK objektumai mind hozzárendelik. A streamek egy 1-alapú streamszámmal rendelkeznek, amelyet a profilban definiál. Minden streamhez egy streamindex is hozzá van rendelve, amely a profilban lévő streamek számbavételéhez használható. Ezek közül a számok közül egyik sem biztos, hogy összhangban van egymással. Ez azt jelenti, hogy az 1. bemeneti szám nem felel meg az 1. streamszámnak, az 1. streamszám nem felel meg az 1. streamindexnek stb.
Kapcsolódó témakörök