Compartilhar via


Origem da Cor do Vídeo

[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

Observação

[Preterido. Essa API pode ser removida de versões futuras do Windows.]

 

A Origem da Cor do Vídeo cria uma imagem de vídeo contínua de uma cor sólida.

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

Nome da variável CLSID: CLSID_ColorSource

Propriedades

Propriedade Type Padrão Descrição
"Cor" DWORD 0 Especifica a cor a ser gerada. Consulte Observações.

 

Comentários

A Origem da Cor do Vídeo é usada com objetos de origem. Primeiro, crie um novo objeto de origem. Em seguida, defina o GUID do subobjeto do objeto de origem como CLSID_ColorSource, chamando o método IAMTimelineObj::SetSubObjectGUID .

Para definir a cor, crie um objeto Property Setter e aplique a propriedade "Color" no momento zero. O valor dessa propriedade é um número hexadecimal com o formato 0xAARRGGBB, em que AA é o valor alfa, RR é o valor vermelho, GG é o valor verde e BB é o valor azul. Os valores alfa variam de 0x00 (transparente) a 0xFF (opaco). A propriedade é estática e deve ser aplicada no momento zero.

Se você não especificar o valor alfa, ele usará como padrão zero (transparente). Em um projeto de vídeo em cores de 32 bits, isso causará transições ou efeitos que usam alfa para tornar a Fonte de Cores de Vídeo completamente transparente. Para ser seguro, especifique sempre o alfa. Por exemplo, preto opaco é 0xFF000000.

O exemplo de código a seguir mostra como usar esse objeto . Para obter mais informações sobre como usar IPropertySetter, consulte Definindo propriedades em efeitos e transições:

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

O exemplo a seguir mostra a representação XML do objeto criado no exemplo anterior. Nesse caso, o elemento param não dá suporte a elementos lineares ou , pois o objeto não dá suporte a propriedades dinâmicas:

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