DirectShow DirectShow 레퍼런스 인터페이스 IMemAllocator   [목차열람] [주소복사] [슬롯비우기]
IMemAllocator 인터페이스
 
Microsoft DirectX 9.0

IMemAllocator 인터페이스

핀간에 데이터를 이동시키기 위해서(때문에), 미디어 샘플을 할당한다.

입력 핀이 IMemInputPin 인터페이스를 공개 할 때 할당자를 공유하는 핀에 의해 이 인터페이스는 사용된다. 핀간에 어느 핀이 할당자를 제공할까를 네고시에이트 한다. 할당자를 사용해, 메모리 버퍼를 할당해 빈 버퍼를 취득해, 버퍼를 릴리즈 한다. 모든 필터가 그것 자신의 할당자를 생성 하는 것은 아니기 때문에, 1 개의 할당자를 복수의 필터가 사용하는 경우도 있다. 더 자세한 정보는, 「필터의 접속」을 참조할것.

애플리케이션은 보통 이 인터페이스를 사용하지 않는다.

할당자를 사용하려면 , 다음의 스텝을 실행한다.

  1. IMemAllocator::SetProperties 메서드를 호출해, 버퍼의 수와 각 버퍼의 사이즈를 포함한 버퍼 요구를 지정한다.
  2. IMemAllocator::Commit 메서드를 호출해, 버퍼를 할당한다.
  3. IMemAllocator::GetBuffer 메서드를 호출해, 미디어 샘플을 얻어온다. 이 메서드는 다음 샘플이 유효하게 될 때까지 동작을 정지한다.
  4. 각 샘플에 대해 종료하면 샘플로 IUnknown::Release 메서드를 호출한다. 샘플은 그 참조 카운트가 제로가 되어도 삭제되지 않는다. 대신에, 샘플은 할당자의 면세표에 돌아온다.
  5. 그 할당자를 다 사용했으면,IMemAllocator::Decommit 메서드를 호출해 버퍼용의 메모리를 릴리즈 하는 것.

Vtable 순서의 메서드

이 인터페이스는,IUnknown 로부터 계승하는 메서드 이외에 이하의 메서드도 공개한다.

메서드 설명
SetProperties 할당하는 버퍼의 수와 각 버퍼의 사이즈를 지정한다.
GetProperties 할당자가 생성 하는 버퍼의 수와 버퍼의 프로퍼티를 얻어온다.
Commit 버퍼 메모리를 할당한다.
Decommit 버퍼 메모리를 릴리즈 한다.
GetBuffer 빈 버퍼를 가지는 미디어 샘플을 얻어온다.
ReleaseBuffer 미디어 샘플을 릴리즈 한다.

↑TOP