DirectShow DirectShow 레퍼런스 DirectShow base class base class 레퍼런스 COutputQueue [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
COutputQueue 클래스는, 미디어 샘플을 출력하는 큐를 처리 한다.
이 클래스에 의해 출력 핀은 샘플을 비동기에게 출력할 수가 있다. 샘플은 큐에 놓여져 워커 thread는 그것을 입력 핀에 출력한다. 큐는 새로운 세그먼트(segment), 엔드 오브 스트림 통지, 또는 플래시 처리를 나타내는 컨트롤 메시지도 보관 유지한다.
이 클래스를 사용하려면 , 필터의 출력 핀 마다 COutputQueue 개체를 생성 하는 것. 생성자 메서드로 그 출력 핀에 접속하는 입력 핀을 지정하는 것. 이 클래스의 사용중은, 출력 핀은 직접 입력 핀을 호출할 수가 없다. 대신에, 다음 표에 나타내도록(듯이) COutputQueue 의 대응하는 메서드를 호출한다.
옵션으로서 COutputQueue 개체를 구성해, 워커 thread를 사용하지 않고 동기를 취해 샘플을 출력할 수가 있다. 개체는 실행시에, 입력 핀 상태를 기본으로 워커 thread를 사용할지 어떨지를 결정할 수도 있다. 더 자세한 정보는, 「COutputQueue::COutputQueue 」를 참조할것.
요건
헤더: Outputq.h 로 선언해, Streams.h 를 인클루드 한다.
라이브러리: Strmbase.lib (리테일 빌드) 또는 Strmbasd.lib (디버그 빌드).
프로텍트 멤버 변수 | |
m_pPin | 입력 핀의 IPin 인터페이스의 포인터. |
m_pInputPin | 입력 핀의 IMemInputPin 인터페이스의 포인터. |
m_bBatchExact | 개체가 정확한 배치로 샘플을 출력할지 어떨지를 지정하는 플래그. |
m_lBatchSize | 배치 사이즈. |
m_List | 미디어 샘플 큐. |
m_hSem | semaphore의 핸들. 샘플을 기다리는 thread가 사용한다. |
m_evFlushComplete | 플래시 처리가 종료했을 때에 그것을 통지하는 이벤트. |
m_hThread | 워커 thread의 핸들. |
m_ppSamples | COutputQueue::m_lBatchSize 사이즈의 샘플의 배열. |
m_nBatched | 현재 배치화 되어 처리를 기다리고 있는 샘플의 수. |
m_lWaiting | thread가 샘플을 기다리고 있을 때 제로 이외의 값을 가지는 플래그. |
m_bFlushing | 개체가 플래시 처리를 실행중인지 아닌지를 지정하는 플래그. |
m_bTerminate | thread가 종료해야할 것인가 제발을 지정하는 플래그. |
m_bSendAnyway | 배치처리를 오버라이드(override) 하는 플래그. |
m_hr | 개체가 샘플을 받아들일지 어떨지를 나타내는 HRESULT 값. |
m_hEventPop | 개체가 큐로부터 샘플을 삭제할 때마다 통지되는 이벤트. |
프로텍트 메서드 | |
InitialThreadProc | thread가 생성 되었을 때,COutputQueue::ThreadProc 메서드를 호출한다. |
ThreadProc | 샘플을 큐로부터 취득해, 그것을 입력 핀에 출력한다. |
IsQueued | 개체가 워커 thread를 사용해 샘플을 출력하고 있을지 어떨지를 확인한다. |
QueueSample | 미디어 샘플 또는 컨트롤 메시지를 큐에 넣는다. |
IsSpecialSample | 큐에 넣어진 데이터가 컨트롤 메시지인지 아닌지를 확인한다. |
FreeSamples | 모든 보류 상태의 샘플을 릴리즈 한다. |
NotifyThread | 큐에 데이터가 들어가 있는 것을 thread에 통지한다. |
퍼블릭 메서드 | |
COutputQueue | 생성자 메서드. |
~COutputQueue | 소멸자 메서드. |
BeginFlush | 플래시 처리를 시작 한다. |
EndFlush | 플래시 처리를 종료한다. |
EOS | 입력 핀에 엔드 오브 스트림 호출을 출력한다. |
SendAnyway | 보류 상태의 모든 샘플을 출력한다. |
NewSegment | 입력 핀에 새로운 세그먼트(segment)를 출력한다. |
Receive | 입력 핀에 미디어 샘플을 출력한다. |
ReceiveMultiple | 미디어 샘플의 배치를 입력 핀에 출력한다. |
Reset | 개체를 리셋 해, 다시 데이터를 받아들이도록(듯이) 한다. |
IsIdle | 개체가 데이터를 기다리고 있는지를 확인한다. |
SetPopEvent | 개체가 큐로부터 샘플을 삭제했는지 어떠했는지를 통지하는 이벤트를 지정한다. |