Source de couleur vidéo

[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.]

Notes

[Déconseillé. Cette API peut être supprimée des versions ultérieures de Windows.]

 

La source de couleur vidéo crée une image vidéo continue d’une couleur unie.

ID de classe (CLSID) : {0CFDD070-581A-11D2-9EE6-006008039E37}

Nom de la variable CLSID : CLSID_ColorSource

Propriétés

Propriété Type Default Description
« Couleur » DWORD 0 Spécifie la couleur à générer. Consultez la section Notes.

 

Notes

La source de couleur vidéo est utilisée avec les objets sources. Tout d’abord, créez un objet source. Définissez ensuite le GUID de sous-objet de l’objet source sur CLSID_ColorSource, en appelant la méthode IAMTimelineObj::SetSubObjectGUID .

Pour définir la couleur, créez un objet Property Setter et appliquez la propriété « Color » à l’heure zéro. La valeur de cette propriété est un nombre hexadécimal au format 0xAARRGGBB, où AA est la valeur alpha, RR est la valeur rouge, GG est la valeur verte et BB est la valeur bleue. Les valeurs alpha vont de 0x00 (transparent) à 0xFF (opaque). La propriété est statique et doit être appliquée à l’heure zéro.

Si vous ne spécifiez pas la valeur alpha, la valeur par défaut est zéro (transparent). Dans un projet vidéo 32 bits en couleur, cela entraîne des transitions ou des effets qui utilisent l’alpha pour restituer la source de couleur vidéo comme entièrement transparente. Pour être sûr, spécifiez toujours l’alpha. Par exemple, le noir opaque est 0xFF000000.

L’exemple de code suivant montre comment utiliser cet objet. Pour plus d’informations sur l’utilisation d’IPropertySetter, consultez Définition des propriétés sur les effets et les transitions :

DWORD           dwYellow = 0xFFFF00;
IAMTimelineObj  *pSource = NULL;

// Create the source.
HRESULT hr = pTimeline->CreateEmptyNode(&pSource, TIMELINE_MAJOR_TYPE_SOURCE);
if (SUCCEEDED(hr))
{
    hr = pSource->SetStartStop(0, 50000000);
}

if (SUCCEEDED(hr))
{
    hr = pSource->SetSubObjectGUID(CLSID_ColorSource);
}

// Create a property setter.
if (SUCCEEDED(hr))
{
    IPropertySetter *pProp = NULL;
    
    hr = CoCreateInstance(CLSID_PropertySetter, NULL, CLSCTX_INPROC_SERVER, 
        IID_PPV_ARGS(&pProp));

    if SUCCEEDED(hr))
    {
        // Set the color.    
        DEXTER_PARAM param;
        DEXTER_VALUE val;

        param.Name = SysAllocString(OLESTR("Color"));
        param.dispID = 0;
        param.nValues = 1;

        if (param.Name == NULL)
        {
            hr = E_OUTOFMEMORY;
        }
        else
        {
            val.v.vt = VT_I4;
            val.v.lVal = dwYellow;
            val.rt = 0;  // Time must be zero.
            val.dwInterp = DEXTERF_JUMP;

            hr = pProp->AddProp(param, &val);
            
            SysFreeString(param.Name);
        }

        if (SUCCEEDED(hr))
        {
            hr = pSource->SetPropertySetter(pProp); 
        }
        pProp->Release();
    }
}

L’exemple suivant montre la représentation XML de l’objet créé dans l’exemple précédent. Dans ce cas, l’élément param ne prend pas en charge les éléments linéairesat ou, car l’objet ne prend pas en charge les propriétés dynamiques :

<clip start="0" stop="5" clsid="{0CFDD070-581A-11D2-9EE6-006008039E37}">
    <param name="Color" value="16776960"/>
</clip>