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 엘리먼트는 at 및 linear 엘리먼트를 지원 하지 않는다.
<clip start="0" stop="5" clsid="{0CFDD070-581A-11D2-9EE6-006008039E37}">
<param name="Color" value="16776960"/>
</clip>