Delen via


Invoer, streams en uitvoer

[De functie die is gekoppeld aan deze pagina, Windows Media Format 11 SDK, is een verouderde functie. Het is vervangen door Source Reader en Sink Writer. Bronlezer en Sink Writer zijn geoptimaliseerd voor Windows 10 en Windows 11. Microsoft raadt ten zeerste aan om nieuwe code te gebruiken bronlezer en Sink Writer- in plaats van Windows Media Format 11 SDK, indien mogelijk. Microsoft stelt voor dat bestaande code die gebruikmaakt van de verouderde API's, indien mogelijk opnieuw worden geschreven om de nieuwe API's te gebruiken.]

Een 'invoer' in deze documentatie is een digitale mediagegevensstroom (zoals audio of video) die uw toepassing levert aan het schrijverobject vanuit een bron met behulp van de juiste API's. Invoer moet worden geleverd in een ondersteunde indeling. Verschillende standaard RGB- en YUV-indelingen worden ondersteund als invoer en de audiocodecs ondersteunen PCM. Als een opgegeven invoerindeling niet door de codec wordt ondersteund, wordt door het writer-object een audio- of video-helperobject geïnstitueerd dat een groot aantal indelingen kan converteren naar indelingen die de codec kan accepteren. Voor audio-invoer past het helperobject indien nodig de bitdiepte, de samplefrequentie en het aantal kanalen aan. Voor video-invoer voert het videohulpobject kleurruimteconversies en aanpassingen van rechthoekgrootte uit. In sommige gevallen kunnen gecomprimeerde audio- en videogegevens worden doorgegeven in een invoerstroom. Een invoer kan van een ander mediatype zijn, naast audio en video, zoals tekst, scriptopdrachten, nog steeds afbeeldingen of willekeurige bestandsgegevens.

Een 'uitvoer' in deze documentatie verwijst naar gegevens die het lezerobject doorgeeft aan een toepassing voor rendering. Een uitvoer is gelijk aan één stream op het moment van afspelen. Als u wederzijdse uitsluiting gebruikt, delen alle wederzijds exclusieve streams één uitvoer. Uitvoergegevens hebben doorgaans de vorm van niet-gecomprimeerde audio- of videogegevens, hoewel deze elk type gegevens kunnen bevatten. Ondersteunde indelingen voor video-uitvoer worden elders in deze documentatie vermeld.

De term 'stream' in deze documentatie verwijst naar gegevens in een ASF-bestand, in plaats van (1) de invoerbrongegevens voordat deze worden verwerkt door het writer-object en (2) de uitvoergegevens nadat het door het lezerobject is gedecomprimeerd. Een ASF-stroom bevat gegevens die afkomstig zijn van één invoer voor het writer-object, hoewel meer dan één stroom kan worden gemaakt op basis van dezelfde invoer. Een stream heeft dezelfde indelings- en compressie-instellingen van begin tot eind. Een eenvoudig ASF-bestand heeft twee streams, één voor audio en één voor video. Een complexer bestand kan twee audiostreams en verschillende videostreams bevatten. De audiostreams hebben mogelijk dezelfde compressie-instellingen, maar bevatten verschillende inhoud, zoals gesproken tekst in verschillende talen. De videostreams bevatten mogelijk dezelfde inhoud, maar hebben verschillende compressie-instellingen. De media-indeling en compressie-instellingen die het writer-object op elke stream toepast, worden opgegeven in het profiel.

De relatie tussen invoer, streams en uitvoer kan van drie basistypen zijn. De volgende drie diagrammen illustreren de relaties.

In de meest eenvoudige relatie, een profiel zonder wederzijdse uitsluiting, wordt elke invoer verwerkt door de schrijver en ingevoegd in het ASF-bestand als één stroom. Bij het afspelen leest de lezer de stream en levert de niet-gecomprimeerde voorbeelden als één uitvoer, zoals wordt weergegeven in het volgende diagram.

diagram met de normale relatie tussen invoer, streams en uitvoer.

Een complexere relatie treedt op wanneer wederzijdse uitsluiting met meerdere bitsnelheid wordt gebruikt. In dit geval wordt één invoer verwerkt door de schrijver en gecodeerd met verschillende bitsnelheden. Elke codering van de gegevens wordt als afzonderlijke stroom ingevoegd in het ASF-bestand. Bij het afspelen bepaalt de lezer welke stroom moet worden gedecomprimeren op basis van de beschikbare bandbreedte. De lezer leest vervolgens de geselecteerde stroom en levert niet-gecomprimeerde voorbeelden als één uitvoer, zoals wordt weergegeven in het volgende diagram.

diagram met de relaties tussen invoer, streams en uitvoer bij het gebruik van wederzijdse uitsluiting met meerdere bitsnelheid.

Het derde type relatie kan optreden wanneer een op taal gebaseerde of aangepaste wederzijdse uitsluiting wordt gebruikt. In deze relatie worden meerdere invoerbewerkingen verwerkt door de lezer en elke invoer wordt als afzonderlijke stroom in het ASF-bestand ingevoegd. Bij het afspelen selecteert uw toepassing handmatig welke stroom moet worden gedecomprimeert op basis van de logica die u opgeeft. De lezer leest vervolgens de geselecteerde stroom en levert niet-gecomprimeerde voorbeelden als één uitvoer. Dit proces kan worden gebruikt voor het opnemen van soundtracks in meerdere talen. In het volgende diagram ziet u dit proces.

diagram met de relaties tussen invoer, streams en uitvoer bij het gebruik van aangepaste wederzijdse uitsluiting.

Er is een aantal variaties in de relaties die eerder zijn beschreven. Een bestand kan bijvoorbeeld alle drie de relaties bevatten, of een of twee ervan. Het is ook mogelijk dat sommige invoer wordt gecomprimeerd, in welk geval de schrijver geen extra compressie uitvoert. De lezer kan ook gecomprimeerde voorbeelden leveren. Maar wanneer dit het geval is, moet u ze openen op stroomnummer, niet op uitvoernummer.

Notitie

Invoer, stoom en uitvoer worden allemaal toegewezen door de objecten van de Windows Media Format SDK. Streams hebben een streamnummer, dat is gebaseerd op 1, die u in het profiel definieert. Aan elke stream wordt ook een streamindex toegewezen voor gebruik bij het inventariseren van streams in een profiel. Geen van deze getallen is gegarandeerd consistent met elkaar. Dat wil gezegd: invoernummer 1 komt mogelijk niet overeen met streamnummer 1, stroomnummer 1 komt mogelijk niet overeen met streamindex 1, enzovoort.

 

Concepten

wederzijdse uitsluiting