Partager via


Implémentation et prise en charge de l’encodeur

Dans Windows XP Service Pack 1, Microsoft a défini trois ensembles de propriétés de streaming de noyau et une énumération dans ksmedia.h pour prendre en charge les appareils encodeur vidéo uniquement. Chaque jeu de propriétés contient une propriété unique. En d’autres termes, chaque propriété reçoit son propre jeu de propriétés. Si votre pilote effectue des appels get-property ou Set-property, spécifiez le GUID du jeu de propriétés (tel que défini dans ksmedia.h) dans le membre Set de la structure KSPROPERTY et zéro dans le membre Id lorsque vous configurez l’appel :

Ensemble de propriétés Descriptif
ENCAPIPARAM_BITRATE

Implémentez cette propriété définie pour spécifier les taux de bits d’encodage pris en charge par l’appareil d’encodeur. Pour plus d’informations, consultez Exemples de code d’encodeur .

ENCAPIPARAM_BITRATE_MODE

Implémentez ce jeu de propriétés pour spécifier les modes d’encodage pris en charge par l’appareil. Ce jeu de propriétés utilise l’énumération VIDEOENCODER_BITRATE_MODE pour spécifier les modes pris en charge. Pour plus d’informations, consultez Exemples de code d’encodeur .

ENCAPIPARAM_PEAK_BITRATE

Implémentez cette propriété définie pour spécifier le taux de bits d’encodage maximal de l’appareil.

Les clients accèdent à ces propriétés en dérivant l’interface COM IVideoEncoder à partir de l’interface COM IEncoderAPI (décrite dans la documentation du Kit de développement logiciel (SDK) Windows).

Un minidriver doit spécifier des valeurs par défaut pour chacune des propriétés ENCAPIPARAM_Xxx . Le sujet Exemples de code de l’encodeur montre comment spécifier les valeurs de propriété par défaut. Pendant le développement et le débogage d’un filtre d’encodeur, la page de propriétés actuelle peut être déclenchée à partir d’un minidriver prenant en charge le jeu de propriétés ENCAPIPARAM_BITRATE.

Dans DirectX 9.0, six ensembles de propriétés supplémentaires et un jeu d’événements ont été définis dans ksmedia.h pour fournir une meilleure prise en charge d’un plus grand nombre d’encodeurs, y compris les encodeurs audio uniquement. Comme avec les propriétés ENCAPIPARAM_Xxx , chaque propriété reçoit son propre jeu de propriétés :

Ensemble de propriétés Descriptif
CODECAPI_VIDEO_ENCODER

Si votre appareil prend en charge l’encodage de flux vidéo (y compris l’audio auxiliaire tel que l’audio tv), implémentez la prise en charge de ce jeu de propriétés.

CODECAPI_AUDIO_ENCODER

Si votre appareil est un encodeur audio uniquement, implémentez la prise en charge de cette propriété définie au lieu de CODECAPI_VIDEO_ENCODER.

CODECAPI_SETALLDEFAULTS

Implémentez cette propriété définie pour réinitialiser tous les paramètres internes de l’appareil d’encodeur, tels que le taux de bits d’encodage et le mode d’encodage sur leurs valeurs par défaut.

CODECAPI_ALLSETTINGS

Implémentez ce jeu de propriétés pour communiquer les paramètres actuels de l’appareil d’encodeur. Ce jeu de propriétés est utilisé pour la communication vers et depuis les clients.

CODECAPI_SUPPORTSEVENTS

Si votre appareil prend en charge les événements du mode utilisateur, par exemple pour modifier le mode d’encodage, le débit binaire ou d’autres paramètres, implémentez ce jeu de propriétés. Si vous implémentez ce jeu de propriétés, vous devez également implémenter la prise en charge de l’événement CODECAPI_CHANGELISTS.

CODECAPI_CURRENTCHANGELIST

Implémentez ce jeu de propriétés pour déterminer quels paramètres d’encodeur ont été modifiés dans un appel précédent pour définir une ou plusieurs propriétés d’encodeur.

Jeu d’événements Descriptif

CODECAPI_CHANGELISTS

Si l’appareil prend en charge la réponse aux événements en mode utilisateur par le biais du jeu de propriétés CODECAPI_SUPPORTSEVENTS, implémentez ce jeu d’événements pour renvoyer une liste de paramètres d’encodeur qui ont changé en raison de l’appel de propriété Set-property antérieur d’un client à CODECAPI_SETALLDEFAULTS ou CODECAPI_ALLSETTINGS.

Les clients accèdent à ces propriétés via l’interface COM ICodecAPI (décrite dans la documentation du Kit de développement logiciel (SDK) Windows). Consultez l’installation et l’inscription de l’encodeur pour plus d’informations sur les interfaces COM, notamment sur la façon de spécifier l’interface KsProxy à exposer.

Un minidriver doit implémenter la prise en charge des requêtes get-property de base. Les exemples de code de l’encodeur illustrent comment prendre en charge les requêtes de propriétés get.

Lors du développement d’un filtre d’encodeur, déplacez la fonctionnalité d’encodage dans un filtre distinct d’un filtre de capture vidéo. Définissez vos propres supports privés afin que les générateurs de graphiques puissent connecter correctement des filtres d’encodeur et de capture. Si votre matériel est capable de maîtriser le contenu non codé en bus, vous pouvez également exposer des supports publics. Si vous implémentez à la fois des supports publics et privés, répertoriez d’abord les supports privés, car ils réduisent le temps de construction des graphes pour trouver le filtre correct lors de la création d'un graphe de filtres.

Pour plus d’informations sur l’utilisation de supports et de plusieurs instances d’un filtre (dans des graphiques de filtre distincts), consultez Moyennes et catégories.