Delen via


Extensies voor gegevenseenheden configureren

[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.]

Voorbeelden die naar ASF-bestanden zijn geschreven, kunnen aanvullende informatie bevatten, behalve de mediavoorbeelden zelf. Deze informatie wordt opgenomen met behulp van extensies voor gegevenseenheden. Zie Data Unit Extensionsvoor meer informatie over extensies van gegevenseenheden.

Als u extensies voor gegevenseenheden wilt gebruiken, moet u de stream in het profiel configureren om deze te accepteren. Voer de volgende stappen uit om een gegevenseenheidextensie voor een stream te configureren.

  1. Verkrijg een aanwijzer naar de IWMStreamConfig2-interface door de methode QueryInterface aan te roepen van IWMStreamConfig-.
  2. Roep IWMStreamConfig2::AddDataUnitExtension aan om een type gegevenseenheidextensie voor de stream te registreren.

U kunt alle typen gegevenseenheiduitbreidingen die momenteel zijn geregistreerd voor een stream bekijken door IWMStreamConfig2::GetDataUnitExtensionCount aan te roepen om het aantal typen geregistreerde gegevenseenheden op te halen. Vervolgens kunt u alle typen doorlopen met aanroepen naar IWMStreamConfig2::GetDataUnitExtension voor elk type.

Extensies voor gegevenseenheden krijgen een grootte toegewezen wanneer ze zijn geconfigureerd voor een stream. Veel uitbreidingssystemen voor gegevenseenheden gebruiken gegevens van een constante omvang (meestal een structuur). U kunt de extensies van uw gegevenseenheid echter ook zo configureren dat ze een variabele grootte hebben door de grootte in te stellen op 0xFFFF. Elke gegevenseenheidextensie die tijdens de coderingstijd is toegewezen, kan vervolgens van elke grootte tussen 1 byte en 65534 bytes zijn. Uitbreidingen van gegevenseenheden met verschillende grootten worden ook wel dynamische gegevenseenheidextensies genoemd.

Het voordeel van het gebruik van extensies voor dynamische gegevenseenheden is dat u indien nodig extensiegegevens kunt koppelen. Als u een extensie voor een gegevenseenheid met een setgrootte definieert, moet elk voorbeeld voor de stream extensiegegevens van die grootte bevatten, zelfs als u geen gegevens voor sommige voorbeelden hebt. Met extensies voor dynamische gegevenseenheden kunt u extensies van gegevenseenheden weglaten uit enkele voorbeelden, waardoor ruimte wordt bespaard en de bandbreedtevereisten worden verminderd. Als extensies van gegevenseenheden echter een variabele grootte hebben, kan het leesobject de ontvangen extensiegegevens niet verifiëren op basis van een statische grootte. U moet controleren of de gegevens van de extensie die u ontvangt geldig zijn en geen kwaadaardige vervorming van de bitstroom vormen.

Extensies van afzonderlijke gegevenseenheden moeten worden ingesteld op voorbeelden met behulp van de methode INSSBuffer3::SetProperty. Zie Extensies voor gegevenseenheden instellenvoor meer informatie.

Streams configureren