Condividi tramite


Origine colore video

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation invece di DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Nota

[Deprecata. Questa API può essere rimossa dalle versioni future di Windows.]

 

L'origine colore video crea un'immagine video continua di un colore a tinta unita.

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

Nome variabile CLSID: CLSID_ColorSource

Proprietà

Proprietà Type Predefinito Descrizione
"Colore" DWORD 0 Specifica il colore da generare. Vedere la sezione Osservazioni.

 

Commenti

L'origine colore video viene utilizzata con gli oggetti di origine. Creare prima di tutto un nuovo oggetto di origine. Impostare quindi il GUID dell'oggetto di origine su CLSID_ColorSource chiamando il metodo IAMTimelineObj::SetSubObjectGUID .

Per impostare il colore, creare un oggetto Property Setter e applicare la proprietà "Color" alla volta zero. Il valore di questa proprietà è un numero esadecimale con il formato 0xAARRGGBB, dove AA è il valore alfa, RR è il valore rosso, GG è il valore verde e BB è il valore blu. I valori alfa sono compresi tra 0x00 (trasparente) e 0xFF (opaco). La proprietà è statica e deve essere applicata al momento zero.

Se non si specifica il valore alfa, per impostazione predefinita viene impostato su zero (trasparente). In un progetto video a colori a 32 bit, ciò causerà transizioni o effetti che usano alfa per eseguire il rendering dell'origine colore video come completamente trasparente. Per essere sicuro, specificare sempre il valore alfa. Ad esempio, il nero opaco è 0xFF000000.

Nell'esempio di codice seguente viene illustrato come utilizzare questo oggetto . Per altre informazioni sull'uso di IPropertySetter, vedere Impostazione delle proprietà per effetti e transizioni:

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

Nell'esempio seguente viene illustrata la rappresentazione XML dell'oggetto creato nell'esempio precedente. In questo caso l'elemento param non supporta elementi lineari o in corrispondenza di elementi lineari , perché l'oggetto non supporta le proprietà dinamiche:

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