DirectShow DirectShow 편집 서비스 C++ 레퍼런스 트랜지션 및 이펙트 비디오 컬러 소스   [목차열람] [주소복사] [슬롯비우기]
비디오 컬러 소스
 
Microsoft DirectX 9.0

비디오 컬러 소스

비디오 컬러 소스는, 단색의 연속적인 비디오 이미지를 생성 한다.

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

CLSID 변수명 : CLSID_ColorSource

프로퍼티

프로퍼티 디폴트 설명
Color DWORD 0 생성하는 색을 지정한다. 「주의」를 참조할것.

주의

비디오 컬러 소스는, 소스 개체와 함께 사용된다. 최초로, 새로운 소스 개체를 생성 한다. 다음에,IAMTimelineObj::SetSubObjectGUID 메서드를 호출해, 소스 개체의 서브 개체 GUID 에 CLSID_ColorSource 를 설정한다.

색을 설정하려면 ,프로파티셋타 개체 를 생성 해,Color 프로퍼티를 시간 제로에 적용한다. 이 프로퍼티의 값은 0xAARRGGBB 포맷의 16 진수값이며,AA 는 알파값,RR 는 빨강의 값,GG 는 초록의 값,BB 는 파랑의 값을 나타낸다. 알파값은 0x00 (투명) ~ 0xFF (불투명)의 범위이다. 이 프로퍼티는 정적이고, 시간 제로로 적용되지 않으면 안 된다.

알파값을 지정하지 않는 경우는, 디폴트값의 제로 (투명)가 사용된다. 32 비트 컬러 비디오 프로젝트에서는, 이 알파를 사용해 비디오 컬러 소스를 렌더링 하는 트랜지션 또는 이펙트를 완전하게 투명하게 한다. 안전이기 때문에, 항상 알파를 지정하는 것. 예를 들어, 불투명한 흑은 0xFF000000 가 된다.

다음 샘플 코드는, 이 개체의 사용법을 나타내고 있다. IPropertySetter 의 사용법의 더 자세한 정보는, 「이펙트 및 트랜지션의 프로퍼티의 설정」을 참조할것.

DWORD           dwYellow = 0xFFFF00;
IAMTimelineObj  *pSource = NULL;
IPropertySetter *pProp = NULL;

// 간단하게 하기 위해서 에러 체크는 생략.

hr = pTimeline->CreateEmptyNode(&pSourceObj, TIMELINE_MAJOR_TYPE_SOURCE);
pSource->SetStartStop(0, 50000000);
pSource->SetSubObjectGUID(CLSID_ColorSource);

// 프로파티셋타를 생성 한다.
CoCreateInstance(CLSID_PropertySetter, NULL, CLSCTX_INPROC_SERVER, 
    IID_IPropertySetter, (void**) &pProp);

// 색을 설정한다.
DEXTER_PARAM param;
DEXTER_VALUE val;

param.Name = SysAllocString(OLESTR("Color"));
param.dispID = 0;
param.nValues = 1;

val.v.vt = VT_I4;
val.v.lVal = dwYellow;
val.rt = 0;  // 시간은 제로가 아니면 안된다.
val.dwInterp = DEXTERF_JUMP;

pProp->AddProp(param, &val);
pSource->SetPropertySetter(pProp);

// 클린 업 한다.
SysFreeString(param.Name);
VariantClear(&val.v);
pProp->Release();

다음 샘플 코드는, 전의 예로 생성 한 개체의 XML 표현을 나타내고 있다. 이 경우, 개체가 동적인 프로퍼티를 지원 하고 있지 않기 때문에,param 엘리먼트는 atlinear 엘리먼트를 지원 하지 않는다.

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