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>