Implémentation et prise en charge de l’encodeur
Dans Windows XP Service Pack 1, Microsoft a défini trois jeux de propriétés de diffusion en continu du noyau et une énumération dans ksmedia.h pour prendre en charge les appareils d’encodeur vidéo uniquement. Chaque jeu de propriétés contient une seule propriété. 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 :
Jeu de propriétés | Description |
---|---|
ENCAPIPARAM_BITRATE | Implémentez ce jeu de propriété pour spécifier les dé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 la vitesse d’encodage maximale de l’appareil. |
Les clients accèdent à ces propriétés en dérivant l’interface COM IVideoEncoder 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 . La rubrique Exemples de code d’encodeur montre comment spécifier des 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 active 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 jeux de propriétés supplémentaires et un jeu d’événements ont été définis dans ksmedia.h pour offrir une meilleure prise en charge d’une plus grande variété 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 :
Jeu de propriétés | Description |
---|---|
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 encodeur, tels que le débit binaire d’encodage et le mode d’encodage, à 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. Cet ensemble de propriétés est utilisé pour la communication avec 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, la vitesse de transmission 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 | Description |
---|---|
Si l’appareil prend en charge la réponse aux événements en mode utilisateur via le 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 été modifiés à la suite de l’appel antérieur de set-property 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 SDK Windows). Pour plus d’informations sur les interfaces COM, consultez Installation et inscription de l’encodeur , notamment comment spécifier l’interface que KsProxy doit exposer.
Un minidriver doit implémenter la prise en charge des requêtes get-property de base. La rubrique Exemples de code d’encodeur montre comment prendre en charge les requêtes get-property.
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 encodé, vous pouvez également exposer des supports publics. Si vous implémentez à la fois des supports publics et privés, répertoriez d’abord les médiums privés, car cela réduit le temps de création de graphique ; pour trouver le filtre approprié lors de la création d’un graphique de filtre.
Pour plus d’informations sur l’utilisation de médiums et de plusieurs instances d’un filtre (dans des graphiques de filtre distincts), consultez Moyennes et catégories.