Freigeben über


Videofarbquelle

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde von MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation abgelöst. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code mediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet, wenn möglich. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, so umgeschrieben wird, dass nach Möglichkeit die neuen APIs verwendet werden.]

Hinweis

[Veraltet. Diese API kann aus zukünftigen Versionen von Windows entfernt werden.]

 

Die Videofarbquelle erstellt ein fortlaufendes Videobild einer Volltonfarbe.

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

CLSID-Variablenname: CLSID_ColorSource

Eigenschaften

Eigenschaft type Standard BESCHREIBUNG
"Farbe" DWORD 0 Gibt die zu generierende Farbe an. Siehe Hinweise.

 

Hinweise

Die Videofarbquelle wird mit Quellobjekten verwendet. Erstellen Sie zunächst ein neues Quellobjekt. Legen Sie dann die Unterobjekt-GUID des Quellobjekts auf CLSID_ColorSource fest, indem Sie die IAMTimelineObj::SetSubObjectGUID-Methode aufrufen.

Um die Farbe festzulegen, erstellen Sie ein Property Setter-Objekt , und wenden Sie die Eigenschaft "Color" zum Zeitpunkt 0 an. Der Wert dieser Eigenschaft ist eine Hexadezimalzahl im Format 0xAARRGGBB, wobei AA der Alphawert, RR der rote Wert, GG der grüne Wert und BB der blaue Wert ist. Alphawerte reichen von 0x00 (transparent) bis 0xFF (undurchsichtig). Die Eigenschaft ist statisch und muss zum Zeitpunkt 0 (null) angewendet werden.

Wenn Sie den Alphawert nicht angeben, ist er standardmäßig null (transparent). In einem 32-Bit-Farbvideoprojekt führt dies zu Übergängen oder Effekten, die Alpha verwenden, um die Videofarbquelle als vollständig transparent zu rendern. Um sicher zu sein, geben Sie immer das Alpha an. Beispielsweise ist undurchsichtiges Schwarz 0xFF000000.

Im folgenden Codebeispiel wird die Verwendung dieses Objekts veranschaulicht. Weitere Informationen zur Verwendung von IPropertySetter finden Sie unter Festlegen von Eigenschaften für Effekte und Übergänge:

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();
    }
}

Das folgende Beispiel zeigt die XML-Darstellung des Objekts, das im vorherigen Beispiel erstellt wurde. In diesem Fall unterstützt das param-Element keine linearen oder -Elemente, da das Objekt keine dynamischen Eigenschaften unterstützt:

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