Delen via


Encoder-implementatie en -ondersteuning

In Windows XP Service Pack 1 definieerde Microsoft drie sets met kernelstreaming-eigenschappen en één opsomming in ksmedia.h ter ondersteuning van encoderapparaten met alleen video's. Elke set eigenschappen bevat één eigenschap. Met andere woorden, elke eigenschap ontvangt een eigen eigenschappenset. Als uw stuurprogramma get-property- of Set-property-aanroepen doet, geeft u de GUID van de eigenschappenset (zoals gedefinieerd in ksmedia.h) op in de setlid van de KSPROPERTY-structuur en nul in het id-lid wanneer u de aanroep instelt:

Eigenschappenset Beschrijving
ENCAPIPARAM_BITRATE

Implementeer deze eigenschap die is ingesteld om de coderingsbitsnelheden op te geven die worden ondersteund door het encoderapparaat. Zie Codevoorbeelden voor coderingsprogramma's voor meer informatie.

ENCAPIPARAM_BITRATE_MODE

Implementeer deze eigenschap die is ingesteld om de coderingsmodi op te geven die door het apparaat worden ondersteund. Deze eigenschappenset maakt gebruik van de opsomming VIDEOENCODER_BITRATE_MODE om de ondersteunde modi op te geven. Zie Codevoorbeelden voor coderingsprogramma's voor meer informatie.

ENCAPIPARAM_PEAK_BITRATE

Implementeer deze eigenschap die is ingesteld om de maximale coderingsbitsnelheid van het apparaat op te geven.

Clients hebben toegang tot deze eigenschappen door de IVideoEncoder COM-interface te afleiden van de IEncoderAPI COM-interface (beschreven in de documentatie van de Windows Software Development Kit (SDK).

Een minidriver moet standaardwaarden opgeven voor elk van de eigenschappen ENCAPIPARAM_Xxx . In het onderwerp Encoder Code-voorbeelden ziet u hoe u standaardeigenschapswaarden kunt opgeven. Tijdens de ontwikkeling en foutopsporing van een encoderfilter kan de huidige eigenschappenpagina worden geactiveerd vanuit een minidriver die de ENCAPIPARAM_BITRATE eigenschappenset ondersteunt.

In DirectX 9.0 zijn er zes extra eigenschappensets en één gebeurtenisset gedefinieerd in ksmedia.h om betere ondersteuning te bieden voor een grotere verscheidenheid aan encoders, waaronder encoders met alleen-audio. Net als bij ENCAPIPARAM_Xxx-eigenschappen ontvangt elke eigenschap een eigen eigenschappenset:

Eigenschappenset Beschrijving
CODECAPI_VIDEO_ENCODER

Als uw apparaat ondersteuning biedt voor het coderen van videostreams (inclusief hulpaudio zoals tv-audio), implementeert u ondersteuning voor deze eigenschappenset.

CODECAPI_AUDIO_ENCODER

Als uw apparaat een encoder voor alleen-audio is, implementeert u ondersteuning voor deze eigenschap die is ingesteld in plaats van CODECAPI_VIDEO_ENCODER.

CODECAPI_SETALLDEFAULTS

Implementeer deze eigenschap die is ingesteld om alle interne instellingen van het encoderapparaat opnieuw in te stellen, zoals de coderingssnelheid en coderingsmodus op de standaardwaarden.

CODECAPI_ALLSETTINGS

Implementeer deze eigenschap die is ingesteld om de huidige instellingen van het encoderapparaat te communiceren. Deze eigenschappenset wordt gebruikt voor communicatie naar en van clients.

CODECAPI_SUPPORTSEVENTS

Als uw apparaat gebeurtenissen van de gebruikersmodus ondersteunt, zoals het wijzigen van de coderingsmodus, bitsnelheid of andere instellingen, implementeert u deze eigenschappenset. Als u deze eigenschappenset implementeert, moet u ook ondersteuning implementeren voor de CODECAPI_CHANGELISTS gebeurtenis.

CODECAPI_CURRENTCHANGELIST

Implementeer deze eigenschap die is ingesteld om te bepalen welke encoderparameters zijn gewijzigd in een vorige aanroep om een of meer encodereigenschappen in te stellen.

Evenementenset Beschrijving

CODECAPI_CHANGELISTS

Als het apparaat ondersteuning biedt voor het reageren op gebeurtenissen in de gebruikersmodus via de CODECAPI_SUPPORTSEVENTS eigenschappenset, implementeert u deze gebeurtenisset om een lijst met encoderinstellingen te retourneren die zijn gewijzigd als gevolg van de eerdere aanroep van de set-eigenschap van een client naar CODECAPI_SETALLDEFAULTS of CODECAPI_ALLSETTINGS.

Clients hebben toegang tot deze eigenschappen via de ICodecAPI COM-interface (beschreven in de Windows SDK-documentatie). Zie Encoder-installatie en -registratie voor meer informatie over de COM-interfaces, waaronder hoe u opgeeft welke interface KsProxy beschikbaar moet maken.

Een minidriver moet ondersteuning implementeren voor eenvoudige query's voor get-property. In het onderwerp Encoder Code-voorbeelden ziet u hoe u get-property-query's kunt ondersteunen.

Bij het ontwikkelen van een coderingsfilter verplaatst u de coderingsfunctionaliteit naar een afzonderlijk filter van een videoopnamefilter. Definieer uw eigen privémedia, zodat grafiekbouwers encoders correct kunnen verbinden en filters kunnen vastleggen. Als uw hardware in staat is om niet-gecodeerde inhoud te beheersen, kunt u ook openbare mediums beschikbaar maken. Als u zowel openbare als privémedia implementeert, moet u eerst de privémedia's vermelden omdat de bouwtijd van grafieken wordt verminderd; om het juiste filter te vinden bij het bouwen van een filtergrafiek.

Zie Mediums en Categorieën voor meer informatie over het gebruik van mediums en meerdere exemplaren van een filter (in afzonderlijke filtergrafieken).