Delen via


Over Mediatypen (Microsoft Media Foundation)

Een mediatype beschrijft de indeling van een mediastroom. In Microsoft Media Foundation worden mediatypen vertegenwoordigd door de interface IMFMediaType. Deze interface neemt de IMFAttributes interface over. De details van een mediatype worden opgegeven als kenmerken.

Als u een nieuw mediatype wilt maken, roept u de functie MFCreateMediaType aan. Deze functie retourneert een aanwijzer naar de interface IMFMediaType. Het mediatype heeft in eerste instantie geen kenmerken. Als u de details van de indeling wilt instellen, stelt u de relevante kenmerken in.

Zie mediatypekenmerkenvoor een lijst met kenmerken van mediatypen.

Belangrijkste typen en subtypen

Twee belangrijke gegevens voor elk mediatype zijn het primaire type en het subtype.

  • Het primaire type is een GUID die de algemene categorie van de gegevens in een mediastroom definieert. Belangrijke typen zijn video en audio. Als u het primaire type wilt opgeven, stelt u het kenmerk MF_MT_MAJOR_TYPE in. De methode IMFMediaType::GetMajorType retourneert de waarde van dit kenmerk.
  • Het subtype definieert de indeling verder. In het hoofdtype video zijn er bijvoorbeeld subtypen voor RGB-24, RGB-32, YUY2 enzovoort. Binnen audio zijn er PCM-audio, IEEE-drijvende komma-audio en andere. Het subtype biedt meer informatie dan het primaire type, maar definieert niet alles over de indeling. Videosubtypen definiĆ«ren bijvoorbeeld niet de grootte van de afbeelding of de framesnelheid. Als u het subtype wilt opgeven, stelt u het kenmerk MF_MT_SUBTYPE in.

Alle mediatypen moeten een hoofdtype-GUID en een subtype-GUID hebben. Zie mediatype-GUID'svoor een lijst met hoofd- en subtype-GUID's.

Waarom kenmerken?

Kenmerken hebben verschillende voordelen ten opzichte van de indelingsstructuren die zijn gebruikt in eerdere technologieƫn, zoals DirectShow en de Windows Media Format SDK.

  • Het is gemakkelijker om waarden voor 'niet weten' of 'niet belangrijk' weer te geven. Als u bijvoorbeeld een videotransformatie schrijft, weet u mogelijk van tevoren welke RGB- en YUV-indelingen de transformatie ondersteunt, maar niet de afmetingen van het videoframe, totdat u ze uit de videobron krijgt. Op dezelfde manier geeft u mogelijk niet om bepaalde details, zoals de primaries van de video. Met een indelingsstructuur moet elk lid worden gevuld met een bepaalde waarde. Als gevolg hiervan is het gebruikelijk om nul te gebruiken om een onbekende of standaardwaarde aan te geven. Deze procedure kan fouten veroorzaken als een ander onderdeel nul behandelt als een legitieme waarde. Met kenmerken laat u gewoon de kenmerken weg die onbekend of niet relevant zijn voor uw onderdeel.

  • Naarmate de vereisten na verloop van tijd zijn gewijzigd, zijn indelingsstructuren uitgebreid door extra gegevens toe te voegen aan het einde van de structuur. WAVEFORMATEXTENSIBLE breidt bijvoorbeeld de structuur WAVEFORMATEX uit. Deze praktijk is gevoelig voor fouten, omdat onderdelen structuurpunten naar andere structuurtypen moeten casten. Kenmerken kunnen veilig worden uitgebreid.

  • Er zijn onderling niet-compatibele indelingsstructuren gedefinieerd. DirectShow definieert bijvoorbeeld de VIDEOINFOHEADER- en VIDEOINFOHEADER2 structuren. Kenmerken worden onafhankelijk van elkaar ingesteld, dus dit probleem treedt niet op.

kenmerken van mediatype

mediatypen