DirectShow DirectShow 레퍼런스 DirectShow base class base class 레퍼런스 CCmdQueue   [목차열람] [주소복사] [슬롯비우기]
CCmdQueue 클래스
 
Microsoft DirectX 9.0

CCmdQueue 클래스

CCmdQueue 클래스는,CDeferredCommand 개체의 큐, 및 큐에 넣어진 커멘드의 추가, 삭제, 상태 체크, 실행을 위한 멤버 함수를 제공하는 base class이다. CCmdQueue 개체는,IQueueCommand 메서드를 처리 하는 개체의 일부이다. 필터 그래프 매니저는,IQueueCommand 메서드를 처리 해, 애플리케이션이 필터 그래프에 대한 커멘드를 큐에 넣을 수가 있도록(듯이) 한다. IQueueCommand 인터페이스를 처리 하는 필터는, 이 클래스를 직접 사용한다. CDeferredCommand 개체를 사용하는 경우는, 이 클래스로부터 큐를 파생시키지 않으면 안 된다.

동기에게는, 엉성한 모드와 정확한 모드라고 하는 2 개의 모드가 있다. 엉성한 모드에서는, 애플리케이션은 지정된 시간까지 대기한 후, 커멘드를 실행한다. 정확한 모드에서는, 애플리케이션은, 그 시간에 표시하는 샘플에 대한 처리가 시작 될 때까지 대기한 후, 커멘드를 실행한다. 어느 쪽을 처리 할까는, 필터에 의해 정해진다. 필터 그래프 매니저는, 필터 그래프 매니저의 큐에 넣어지는 커멘드에 대해, 항상 엉성한 모드를 처리 한다.

엉성한 동기가 필요한 경우, 실행해야 할 커멘드가 큐에 넣어질 때까지 대기한 후, 커멘드를 실행할 수가 있다. 이것은,CCmdQueue::GetDueCommand 를 호출하는 것에 의해 실행할 수 있다. 복수의 항목을 대기하고 있는 경우는,CCmdQueue::GetDueHandle 으로부터 이벤트 핸들을 취득해, 신호 상태가 되면 CCmdQueue::GetDueCommand 를 호출한다. 스트림 타임 은,CCmdQueue::Run 멤버 함수와 CCmdQueue::EndRun 멤버 함수의 호출동안에서만 진행된다. 핸들이 설정되어 있어도, 커멘드의 준비가 되어 있다고 하는 보증은 없다. 이벤트가 신호 상태가 될 때마다, (타임 아웃을 0 으로 해) GetDueCommand 멤버 함수를 호출한다. 이것에 의해, 커멘드의 준비가 되지 않은 경우는, E_ABORT 를 돌려줄 수가 있다.

정확한 동기가 필요한 경우는,CCmdQueue::GetCommandDueFor 멤버 함수를 호출해, 처리하려고 하고 있는 샘플을 파라미터로서 건네준다. 이 경우, 다음의 항목이 반환된다.

포즈 모드시에 처리될 가능성이 있는 샘플에 대해 정확한 동기가 필요한 경우는, 스트림 타임 커멘드를 사용해야 한다.

모든 경우에 대해, 커멘드는 불려 갈까 삭제될 때까지 큐에 남는다. 이벤트 핸들의 설정 및 리셋은, 모두 이 큐 개체에 의해 관리된다.

프로텍트 데이터 멤버

m_bRunning 실행 상태의 플래그. 실행중의 경우는 TRUE 로 설정된다.
m_dwAdvise 기준 클럭 으로부터의 아드바이즈 식별자 (미처리의 아드바이즈가 없는 경우는 0).
m_evDue 커멘드를 실행하는 시간을 설정한다.
m_listPresentation 프레젠테이션 타임의 큐에 넣어진 커멘드를 저장 한다.
m_listStream 스트림 타임의 큐에 넣어진 커멘드를 저장 한다.
m_Lock 리스트에의 액세스를 보호한다.
m_pClock 현재의 기준 클럭.
m_StreamTimeOffset m_bRunning 가 TRUE 인 경우의 스트림 타임의 오프셋(offset)를 저장 한다.
m_StreamTimeOffset m_bRunning 가 TRUE 인 경우의 스트림 타임의 오프셋(offset)를 저장 한다.

멤버 함수

CCmdQueue CCmdQueue 개체를 생성 한다.
CheckTime 지정된 시간이 되었는지 어떠했는지를 판단한다.
GetDueHandle 통지하는 이벤트 핸들을 얻어온다.

오버라이드(override) 가능한 멤버 함수

EndRun 정지 또는 포즈 모드로 전환한다.
GetCommandDueFor 지정된 시간에 스케줄 되고 있는 지연 커멘드를 얻어온다.
GetDueCommand 다음에 실행할 예정의 커멘드의 포인터를 얻어온다.
Insert CDeferredCommand 개체를 큐에 추가한다.
New 실행하는 커멘드를 초기화해, 새로운 CDeferredCommand 개체를 돌려준다.
Remove CDeferredCommand 개체를 큐로부터 삭제한다.
Run 실행 모드로 전환한다.
SetSyncSource 타이밍에 사용하는 클럭을 설정한다.
SetTimeAdvise 기준 클럭을 사용해 바다거북 겨이삭띠를 설정한다.

↑TOP