Partager via


API encodeur

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement au nouveau code d’utiliser MediaPlayer, IMFMediaEngine et La capture audio/vidéo dans Media Foundation au lieu de DirectShow, lorsque cela est possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

L’API Encodeur fournit une interface uniforme pour la configuration des encodeurs logiciels et matériels. Les applications peuvent utiliser l’API Encodeur pour configurer un encodeur et stocker les paramètres de configuration. Les fournisseurs d’encodeurs peuvent utiliser l’API Encodeur pour exposer les fonctionnalités d’un encodeur. Bien que l’API Encodeur soit conçue principalement pour les encodeurs, il est assez général que les décodeurs puissent également la prendre en charge.

L’API Encodeur est exposée aux applications via l’interface ICodecAPI , qui est exposée par le filtre d’encodeur. Le filtre d’encodeur peut être un filtre DirectShow natif, un encodeur matériel ou un objet multimédia DirectX (DMO).

  • Filtres logiciels : un encodeur implémenté en tant que filtre DirectShow natif doit exposer l’ICodecAPI directement.
  • Encodeurs matériels : le périphérique d’encodage est exposé via un ou plusieurs mini-disques AVStream, qui sont représentés en mode utilisateur par KSProxy. KSProxy traduit les appels de méthode ICodecAPI en jeux de propriétés KS. Pour plus d’informations, consultez la documentation DDK.
  • DMO : le DMO doit exposer l’interface ICodecAPI . Les applications DirectShow peuvent interroger le filtre wrapper DMO, qui expose l’interface en agrégeant le DMO. Les applications non basées sur DirectShow peuvent interroger directement le DMO.

Capabilties de l’encodeur

Un encodeur peut inscrire une liste de fonctionnalités de haut niveau en les stockant dans le registre système. Chaque fonctionnalité est identifiée par un GUID. Pour énumérer les fonctionnalités d’un encodeur particulier, procédez comme suit :

  1. Créez le moniker qui représente le filtre d’encodeur. (Voir Utilisation de l’énumérateur d’appareil système.)
  2. Interrogez le moniker de filtre pour l’interface IGetCapabilitiesKey .
  3. Appelez IGetCapabilitiesKey::GetCapabilitiesKey. La méthode retourne un handle à la clé de Registre qui contient la liste des fonctionnalités du filtre.
  4. Appelez la fonction RegEnumValue pour énumérer les valeurs de la clé retournée.

Si vous vlamentez un encodeur, créez les entrées de Registre pour les fonctionnalités lors de l’inscription du filtre. Pour les filtres logiciels, créez une clé nommée Capabilities qui est adjacente aux clés FilterData et FriendlyName . En règle générale, vous ajoutez ces informations après avoir appelé AMovieDllRegisterServer2 pour inscrire les données de filtre standard. Pour plus d’informations, consultez Comment inscrire des filtres DirectShow. Vous pouvez également créer une clé CapabilitiesLocation qui contient une chaîne indiquant l’emplacement de la clé Capabilities dans le Registre. La chaîne doit commencer par « HKLM\ », « HKCR\ » ou « HKCU\ » pour indiquer la sous-arborescence du Registre. Pour les appareils Plug-and-Play, les fichiers d’installation du pilote doivent créer une clé Capabilities adjacente à la clé FriendlyName du filtre, ou utiliser une clé CapabilitiesLocation comme décrit pour les filtres logiciels.

Une fois que vous avez créé la clé Fonctionnalités , créez une valeur pour chaque GUID de fonctionnalité. Le nom de la valeur doit être la forme de chaîne du GUID, sous la forme {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}. Chaque type de valeur doit être l’un des suivants :

  • Valeur numérique unique. Utilisez une valeur DWORD .
  • GUID (identificateur global unique). Utilisez la forme de chaîne du GUID.
  • Paires numériques. Utilisez une chaîne de la forme « a,b » pour représenter des paires de valeurs, telles que la largeur et la hauteur, ou le numérateur et le dénominateur pour les fractions.
  • Tableaux de valeurs. Utilisez plusieurs chaînes (REG_SZ_MULTI) pour représenter plusieurs valeurs.

L’exemple suivant montre la disposition du Registre pour un filtre logiciel :

\HKCR\CLSID\Filter Category\Instance\Filter CLSID\Capabilities\
    
Values: 
    
    guid1: 1234 (REG_DWORD)   
    
    guid2: "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}" (REG_SZ)
    
    guid3: "2","4","6" (REG_SZ_MULTI)
    
    guid4: "720,480" (REG_SZ) 

Profils d’encodeur

Un profil d’encodeur est une liste fixe de paramètres de configuration qui peuvent être appliqués à un encodeur au moment de l’exécution. Les profils sont indépendants de l’encodeur ; une application peut sélectionner un encodeur, puis sélectionner un profil et appliquer les paramètres de profil à l’encodeur. Les profils sont identifiés par un GUID et doivent être stockés à l’emplacement suivant dans le Registre :

\HKLM\Software\Microsoft\EncoderProfiles\Profile GUID\

GUID de profil

est la forme de chaîne du GUID qui identifie le profil. Créez des valeurs pour chaque paramètre. Créez également une valeur de chaîne nommée « FriendlyName » dont les données identifient le profil (par exemple, « LowBandwidthVideo »).

Développement de l’encodeur et du décodeur