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

COutputQueue 클래스

COutputQueue

COutputQueue 클래스는, 미디어 샘플을 출력하는 큐를 처리 한다.

이 클래스에 의해 출력 핀은 샘플을 비동기에게 출력할 수가 있다. 샘플은 큐에 놓여져 워커 thread는 그것을 입력 핀에 출력한다. 큐는 새로운 세그먼트(segment), 엔드 오브 스트림 통지, 또는 플래시 처리를 나타내는 컨트롤 메시지도 보관 유지한다.

이 클래스를 사용하려면 , 필터의 출력 핀 마다 COutputQueue 개체를 생성 하는 것. 생성자 메서드로 그 출력 핀에 접속하는 입력 핀을 지정하는 것. 이 클래스의 사용중은, 출력 핀은 직접 입력 핀을 호출할 수가 없다. 대신에, 다음 표에 나타내도록(듯이) COutputQueue 의 대응하는 메서드를 호출한다.

Pin 메서드 COutputQueue 메서드
IPin::BeginFlush BeginFlush
IPin::EndFlush EndFlush
IPin::EndOfStream EOS
IPin::NewSegment NewSegment
IMemInputPin::Receive Receive
IMemInputPin::ReceiveMultiple ReceiveMultiple

옵션으로서 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 개체가 큐로부터 샘플을 삭제했는지 어떠했는지를 통지하는 이벤트를 지정한다.

↑TOP