다음을 통해 공유


사용자 할당 샘플 지원

[이 페이지와 연결된 기능인 Windows Media Format 11 SDK는 레거시 기능입니다. 원본 판독기 및 싱크 작성기에 의해 대체되었습니다. 원본 판독기 및 싱크 작성기는 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 Windows Media Format 11 SDK 대신 소스 판독기 및 싱크 작성기를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

정상적인 상황에서 판독기 개체와 동기 판독기 개체는 애플리케이션에 전달되는 각 샘플에 대해 새 버퍼 개체를 만듭니다. 읽기 개체는 애플리케이션이 샘플을 받은 후 샘플에서 수행하는 작업을 알 수 없기 때문입니다. 많은 애플리케이션이 샘플을 즉시 렌더링하기 위해서만 읽어도 일부 애플리케이션은 오랫동안 샘플을 유지 관리해야 할 수 있습니다. 따라서 읽기 개체는 할당하는 버퍼를 다시 사용할 수 없습니다. 애플리케이션에 배달한 다음 제어할 수 있습니다.

이 방법의 문제는 파일에 엄청난 수의 샘플이 포함될 수 있다는 것입니다. 각 버퍼 개체를 만들어야 하는 경우 메모리를 할당하고 해제하는 데 많은 프로세서 시간이 낭비됩니다. 미디어 플레이어와 같은 시간에 민감한 애플리케이션에서 이 오버헤드는 성능에 매우 해로울 수 있습니다.

판독기 할당 샘플의 성능 문제를 완화하기 위해 판독기와 동기 판독기 모두 사용자 할당 샘플을 지원합니다. 애플리케이션에서 할당한 샘플을 사용하기 위해 읽기 개체는 구현하는 샘플 할당 콜백 메서드를 호출합니다. 읽기 개체에 버퍼를 제공하기 위해 콜백에서 사용하는 논리는 전적으로 사용자에게 달려 있습니다. 전체 파일에 버퍼 풀을 사용하거나 각 출력 또는 스트림에 하나씩 여러 버퍼 풀을 사용하거나 애플리케이션에서 작동하는 다른 구성표를 사용할 수 있습니다.

파일 읽기용 버퍼 할당

파일 읽기 기능