파일 읽기용 버퍼 할당
가장 기본적인 파일 읽기 시나리오에서 샘플을 제공하는 데 사용되는 버퍼는 읽기 개체(판독기 개체 또는 동기 판독기 개체)에 의해 할당됩니다. 그러나 버퍼를 직접 할당할 수 있습니다. 사용자 고유의 버퍼 할당의 이점에 대한 자세한 내용은 사용자 할당 샘플 지원을 참조하세요.
파일 읽기에 사용자 고유의 버퍼를 사용하려면 다음 단계를 수행합니다.
- 버퍼가 필요할 때 판독기가 호출할 콜백 또는 콜백을 구현합니다. 출력 샘플을 읽는 경우 IWMReaderAllocatorEx::AllocateForOutputEx를 사용합니다. 스트림 샘플을 읽는 경우 IWMReaderAllocatorEx::AllocateForStreamEx를 사용합니다. 애플리케이션에 적합한 버퍼를 관리하기 위한 논리를 포함합니다.
- 파일 읽기에 사용할 버퍼 풀을 할당합니다.
- 버퍼가 사용되는 각 출력 및/또는 스트림에 대해 IWMReaderAdvanced::GetMaxOutputSampleSize 또는 IWMReaderAdvanced::GetMaxStreamSampleSize 를 호출하여 버퍼에 필요한 크기를 찾습니다. 동기 판독기를 사용하는 경우 대신 IWMSyncReader::GetMaxOutputSampleSize 또는 IWMSyncReader::GetMaxStreamSampleSize를 사용합니다.
- 풀에 대한 각 버퍼를 만듭니다.
- 읽기용 읽기 권한자 또는 동기 판독기를 설정합니다. 자세한 내용은 비동기 판독기를 사용하여 파일 읽기 또는 동기 판독 기를 사용하여 파일 읽기를 참조하세요.
- 쓰기를 시작하기 전에 판독기 개체를 사용하여 버퍼를 할당하는 각 출력 및 스트림에 대해 IWMReaderAdvanced::SetAllocateForOutput 또는 IWMReaderAdvanced::SetAllocateForStream 을 호출합니다. 동기 판독기에서 IWMSyncReader2::SetAllocateForOutput 또는 IWMSyncReader2::SetAllocateForStream 을 대신 호출합니다.
- 파일 읽기를 시작합니다.
읽기 개체는 적절한 할당자 콜백을 호출하고 애플리케이션에서 샘플을 가져옵니다. 버퍼 관리 논리에는 버퍼를 다시 사용할 수 있음을 알리는 방법이 포함되어야 합니다. 일반적으로 버퍼는 콘텐츠가 렌더링될 때 풀에 다시 배치됩니다. 애플리케이션에 따라 풀에 버퍼가 몇 개나 필요할 수 있습니다.
관련 항목