Mediatype-onderhandeling voor de encoder
In Microsoft Media Foundation worden coderingsprogramma's geïmplementeerd als Media Foundation (MMFT's) met één invoer en één uitvoer transformeert. Voordat een coderingssessie wordt uitgevoerd, moet een encoder de kenmerken van de stream kennen die deze ontvangt als invoer en de indeling van de stream die als uitvoer wordt geproduceerd. U moet de invoer- en uitvoermediatypen en gerelateerde kenmerken instellen voordat u gegevens doorgeeft via de encoder. U moet de invoer- en uitvoerindelingen opgeven door de juiste mediatype-GUID's op te geven en de kenmerken van de uitvoerstroom in te stellen door de relevante Kenmerken van mediatype in te stellen voor het type uitvoermedia. Een zojuist geïnstantieerde encoder heeft geen set mediatypen.
Het type invoermedia is een niet-gecomprimeerde indeling, zoals PCM-audio of RGB-video. De indelingstypen die door de encoder worden gebruikt, zijn beperkt tot de typen die worden beschreven door de VIDEOINFOHEADER en WAVEFORMATEX structuren. Zie de Windows SDK-documentatie voor meer informatie over deze structuren. Media Foundation biedt helperfuncties voor het maken van mediatypen op basis van indelingsstructuren. De functie MFInitMediaTypeFromVideoInfoHeader initialiseert bijvoorbeeld een videotype van een VIDEOINFOHEADER structuur en de functie MFInitMediaTypeFromWaveFormatEx initialiseert een videotype van een WAVEFORMATEX- of WAVEFORMATEXTENSIBLE structuur. Zie mediatypeconversiesvoor meer informatie. U moet het invoermediatype voor de encoder instellen door IMFTransform::SetInputTypeaan te roepen.
Het type uitvoermedia is de compressie-indeling die wordt gebruikt in de uiteindelijke bronstroom of het uiteindelijke bestand. U kunt het beschikbare type uitvoermedia alleen instellen nadat u het invoermediatype hebt ingesteld. U kunt de ondersteunde uitvoertypen ophalen door IMFTransform::GetOutputAvailableType in een lus aan te roepen totdat de encoder MF_E_NO_MORE_TYPESretourneert. Verhoog de typeindex met elke iteratie. Wanneer u een geschikt mediatype vindt, stelt u het type uitvoermedia in door IMFTransform::SetOutputTypeaan te roepen.
De beslissingsfactor bij het kiezen van het type uitvoermedia is afhankelijk van het type codering en uw coderingsvereisten. Voor audiostreams die zijn gecodeerd met CBR, wilt u bijvoorbeeld een mediatype vinden dat overeenkomt met uw invoer en een bitsnelheid heeft die zo dicht mogelijk bij een doelwaarde ligt.
Als u een andere coderingsmodus dan CBR wilt gebruiken, moet u de modus instellen en vervolgens de uitvoertypen voor die modus inventariseren, omdat de encoder de ondersteunde uitvoertypen wijzigt, afhankelijk van de modusset. De eigenschappen die de coderingsmodus beheren, worden MFPKEY_VBRENABLED en MFPKEY_PASSESUSED. Als u bijvoorbeeld uitvoertypen opsommen voor codering van VBR-kwaliteit, is het mediatype afhankelijk van de kwaliteitswaarde die u wilt gebruiken. Zie Encoding Propertiesvoor meer informatie over het instellen van deze eigenschappen.
Verwante onderwerpen
-
Een Encoder MFT- instantiëren