Udostępnij przez


Źródło koloru wideo

[Funkcja skojarzona z tą stroną, DirectShow, jest starszą funkcją. Został zastąpiony przez MediaPlayer, IMFMediaEnginei Audio/Video Capture w Media Foundation. Te funkcje zostały zoptymalizowane pod kątem systemów Windows 10 i Windows 11. Firma Microsoft zdecydowanie zaleca, aby nowy kod używał MediaPlayer, IMFMediaEngine i Audio/Video Capture w programie Media Foundation zamiast DirectShow, jeśli to możliwe. Firma Microsoft sugeruje, że istniejący kod, który używa starszych interfejsów API, należy przepisać go do korzystania z nowych interfejsów API, jeśli to możliwe.]

Nuta

[Przestarzałe. Ten interfejs API może zostać usunięty z przyszłych wersji systemu Windows.]

 

Źródło koloru wideo tworzy ciągły obraz wideo o stałym kolorze.

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

Nazwa zmiennej CLSID: CLSID_ColorSource

Właściwości

Własność Typ Domyślny Opis
"Kolor" DWORD 0 Określa kolor do wygenerowania. Zobacz uwagi.

 

Uwagi

Źródło koloru wideo jest używane z obiektami źródłowymi. Najpierw utwórz nowy obiekt źródłowy. Następnie ustaw identyfikator GUID podobiektu obiektu źródłowego na CLSID_ColorSource, wywołując metodę IAMTimelineObj::SetSubObjectGUID.

Aby ustawić kolor, utwórz obiekt property Setter i zastosuj właściwość "Color" w czasie zero. Wartość tej właściwości jest szesnastkowa liczba z formatem 0xAARRGGBB, gdzie AA jest wartością alfa, RR jest czerwoną wartością, GG jest zieloną wartością, a BB jest niebieską wartością. Wartości alfa wahają się od 0x00 (przezroczyste) do 0xFF (nieprzezroczyste). Właściwość jest statyczna i musi być stosowana w czasie zero.

Jeśli nie określisz wartości alfa, wartość domyślna to zero (przezroczyste). W 32-bitowym projekcie wideo spowoduje to przejście lub efekty, które używają alfa do renderowania źródła kolorów wideo jako całkowicie przezroczystego. Aby zapewnić bezpieczeństwo, zawsze określ alfa. Na przykład nieprzezroczyste czarne jest 0xFF000000.

W poniższym przykładzie kodu pokazano, jak używać tego obiektu. Aby uzyskać więcej informacji na temat używania IPropertySetter, zobacz Setting Properties on Effects and 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();
    }
}

Poniższy przykład przedstawia reprezentację XML obiektu utworzonego w poprzednim przykładzie. W tym przypadku elementparamnie obsługuje w lub elementach liniowych, ponieważ obiekt nie obsługuje właściwości dynamicznych:

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