Compartir a través de


Origen de color de vídeo

[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEnginey captura de audio y vídeo en Media Foundation. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer, IMFMediaEngine y captura de audio y vídeo en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.

Nota

[En desuso. Esta API se puede quitar de futuras versiones de Windows.]

 

El origen de color de vídeo crea una imagen de vídeo continua de un color sólido.

Id. de clase (CLSID): {0CFDD070-581A-11D2-9EE6-006008039E37}

Nombre de variable CLSID: CLSID_ColorSource

Propiedades

Propiedad Tipo Predeterminado Descripción
"Color" DWORD 0 Especifica el color que se va a generar. Vea comentarios.

 

Observaciones

El origen de color de vídeo se usa con objetos de origen. En primer lugar, cree un nuevo objeto de origen. A continuación, establezca el GUID del subobjeto del objeto de origen en CLSID_ColorSource llamando al método IAMTimelineObj::SetSubObjectGUID.

Para establecer el color, cree un objeto Property Setter y aplique la propiedad "Color" en el momento cero. El valor de esta propiedad es un número hexadecimal con el formato 0xAARRGGBB, donde AA es el valor alfa, RR es el valor rojo, GG es el valor verde y BB es el valor azul. Los valores alfa van de 0x00 (transparente) a 0xFF (opaco). La propiedad es estática y debe aplicarse en el momento cero.

Si no especifica el valor alfa, el valor predeterminado es cero (transparente). En un proyecto de vídeo de color de 32 bits, esto provocará transiciones o efectos que usan alfa para representar el origen de color de vídeo como completamente transparente. Para que sea seguro, especifique siempre el alfa. Por ejemplo, el negro opaco es 0xFF000000.

En el ejemplo de código siguiente se muestra cómo usar este objeto. Para obtener más información sobre el uso de IPropertySetter, vea propiedades de configuración de en efectos y transiciones:

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

En el ejemplo siguiente se muestra la representación XML del objeto creado en el ejemplo anterior. En este caso, el elementoparam no admite en ni elementos lineales, ya que el objeto no admite propiedades dinámicas:

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