DirectShow DirectShow 레퍼런스 DirectShow base class base class 레퍼런스 CBaseAllocator [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
The CBaseAllocator 클래스는, 할당자를 처리 하는 추상 base class이다. 할당자는 IMemAllocator 인터페이스를 공개한다.
allocator 는 메모리 버퍼를 할당하는 개체이다. 할당자는 사용 가능한 버퍼의 리스트를 보관 유지한다. 클라이언트 (일반적으로는 필터)가 버퍼를 요구 하면, 할당자는 리스트로부터 버퍼를 얻어온다. 클라이언트는 버퍼에 데이터를 저장 한다. 버퍼를 다른 개체에 건네주는 경우도 있다. 최종적으로 버퍼는 릴리즈 되어 할당자는 릴리즈 된 버퍼를 사용 가능한 버퍼의 리스트에 되돌린다.
각 버퍼는미디어 샘플을 호출하는 개체에 의해 캡슐화된다. 미디어 샘플은 COM (Component Object Model) 프레임워크(framework)를 사용해 포인터를 메모리 블록에 패키지 하는 1 개의 방법이다. 미디어 샘플은 IMediaSample 인터페이스를 공개해,CMediaSample 클래스를 사용해 처리 된다. 미디어 샘플은,IMediaSample::GetPointer 의 호출에 의해 액세스 할 수 있는 관련지을 수 있었던 버퍼의 포인터를 포함한다. 더 자세한 정보는, 「샘플과 할당자」를 참조할것.
이 클래스를 사용하려면 , 다음의 스텝을 실행한다.
Commit 메서드는 버퍼의 메모리를 할당하는 가상 메서드 CBaseAllocator::Alloc 를 호출한다. Decommit 메서드는 메모리를 릴리즈 하는 순수 가상 메서드 CBaseAllocator::Free 를 호출한다. 상속 클래스에서는 이 2 개의 메서드를 오버라이드(override) 해야 한다.
CMemAllocator base class는 CBaseAllocator 로부터 파생한다. 필터 base class는 CMemAllocator 클래스를 사용한다.
요건
헤더: Amfilter.h 로 선언해, Streams.h 를 인클루드 한다.
라이브러리: Strmbase.lib (리테일 빌드) 또는 Strmbasd.lib (디버그 빌드).
프로텍트 멤버 변수 | |
m_lFree | 사용 가능한 (프리의) 미디어 샘플의 리스트의 포인터. |
m_hSem | 샘플이 사용 가능한 때 신호를 받는 semaphore. |
m_lWaiting | 샘플을 기다리고 있는 thread의 수. |
m_lCount | 제공하는 버퍼의 수. |
m_lAllocated | 현재 할당할 수 있는 버퍼의 수. |
m_lSize | 각 버퍼의 사이즈. |
m_lAlignment | 각 버퍼의 alignment. |
m_lPrefix | 각 버퍼의 프레픽스. |
m_bChanged | 버퍼 요구가 변경되었는지 어떠했는지를 나타내는 플래그. |
m_bCommitted | 할당자가 위탁되고 있는지를 나타내는 플래그. |
m_bDecommitInProgress | 데코밋트 처리가 진행중인지 아닌지를 나타내는 플래그. |
m_pNotify | 샘플이 릴리즈 되었을 때에 불려 가는 콜백 인터페이스의 포인터. |
m_fEnableReleaseCallback | 릴리즈 콜백이 유효한가 어떤가를 나타내는 플래그. |
프로텍트 메서드 | |
Alloc | 버퍼에 메모리를 할당한다. 가상. |
퍼블릭 메서드 | |
CBaseAllocator | 생성자(constructor) 메서드. |
~CBaseAllocator | 소멸자 메서드. |
SetNotify | 사용되지 않았다. |
GetFreeCount | 사용되지 않은 미디어 샘플의 수를 얻어온다. |
NotifySample | 샘플을 기다리고 있는 thread를 릴리즈 한다. |
SetWaiting | 대기 상태의 thread의 수를 인크리먼트(increment) 한다. |
순수 가상 메서드 | |
Free | 모든 버퍼 메모리를 릴리즈 한다. |
IMemAllocator 메서드 | |
SetProperties | 할당하는 버퍼의 수와 각 버퍼의 사이즈를 지정한다. |
GetProperties | 할당자가 생성 하는 버퍼의 수와 버퍼의 프로퍼티를 얻어온다. |
Commit | 버퍼에 메모리를 할당한다. |
Decommit | 버퍼를 데코밋트 한다. |
GetBuffer | 버퍼를 포함한 미디어 샘플을 얻어온다. |
ReleaseBuffer | 프리 미디어 샘플의 리스트에 미디어 샘플을 돌려준다. |