Aller au contenu

Guide d'enregistrement du SDK

Les filtres DirectShow et les composants du SDK doivent souvent être correctement enregistrés pour fonctionner dans vos applications. Ce guide présente des méthodes détaillées d'implémentation pour enregistrer les filtres DirectShow dans plusieurs langages de programmation.

Vue d'ensemble de l'enregistrement

La plupart des filtres DirectShow du SDK peuvent être enregistrés via l'interface IVFRegister. Cette approche standardisée fonctionne de façon cohérente dans tous les environnements de développement. Certains filtres spécialisés (comme les convertisseurs RGB2YUV) sont toutefois conçus pour fonctionner sans enregistrement explicite.

Méthodes d'enregistrement par langage

Implémentation en C++

Le code C++ suivant montre comment accéder à l'interface d'enregistrement :

// {59E82754-B531-4A8E-A94D-57C75F01DA30}
DEFINE_GUID(IID_IVFRegister,
    0x59E82754, 0xB531, 0x4A8E, 0xA9, 0x4D, 0x57, 0xC7, 0x5F, 0x01, 0xDA, 0x30);

/// <summary>
/// Interface d'enregistrement des filtres.
/// </summary>
DECLARE_INTERFACE_(IVFRegister, IUnknown)
{
    /// <summary>
    /// Définit l'enregistrement.
    /// </summary>
    /// <param name="licenseKey">
    /// Clé de licence.
    /// </param>
    STDMETHOD(SetLicenseKey)
        (THIS_
            WCHAR * licenseKey
            )PURE;
};

Implémentation en C

Pour les développeurs .NET, l'interface d'enregistrement peut être importée à l'aide du code C# suivant :

    /// <summary>
    /// Interface publique d'enregistrement des filtres.
    /// </summary>
    [ComImport]
    [System.Security.SuppressUnmanagedCodeSecurity]
    [Guid("59E82754-B531-4A8E-A94D-57C75F01DA30")]
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IVFRegister
    {
        /// <summary>
        /// Définit l'enregistrement.
        /// </summary>
        /// <param name="licenseKey">
        /// Clé de licence.
        /// </param>
        [PreserveSig]
        void SetLicenseKey([In, MarshalAs(UnmanagedType.LPWStr)] string licenseKey);
    }

Implémentation en Delphi

Pour les développeurs Delphi, implémentez l'interface d'enregistrement comme suit :

const
  IID_IVFRegister: TGUID = '{59E82754-B531-4A8E-A94D-57C75F01DA30}';

type
  /// <summary>
  /// Interface publique d'enregistrement des filtres.
  /// </summary>
  IVFRegister = interface(IUnknown)
    /// <summary>
    /// Définit l'enregistrement.
    /// </summary>
    /// <param name="licenseKey">
    /// Clé de licence.
    /// </param>
    procedure SetLicenseKey(licenseKey: PWideChar); stdcall;
  end;