Поделиться через


Пример поддержки, выделенный пользователем

[Функция, связанная с этой страницей, Windows Media Format 11 SDK, является устаревшей функцией. Она была заменена средствами чтения источника и модуля записи приемников. Средство чтения источника и модуль записи приемников оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде средство чтения исходного кода и модуль записи приемников вместо пакета SDK для Windows Media Format 11, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]

В обычных условиях как объект чтения, так и синхронный объект чтения создают новый объект буфера для каждого примера, доставленного в приложение. Это связано с тем, что объект чтения не может узнать, что приложение делает с примерами после их получение. Несмотря на то, что многие приложения читают примеры только для их немедленной отрисовки, некоторым приложениям может потребоваться хранить примеры в течение длительного времени. Таким образом, объект чтения не может повторно использовать буферы, которые он выделяет; он доставляет их в приложение, которое затем контролирует их.

Проблема этого подхода заключается в том, что файл может содержать огромное количество примеров. Если для каждого из них требуется создать новый объект буфера, много времени процессора тратится впустую на выделение и освобождение памяти. В приложениях с учетом времени, таких как проигрыватели мультимедиа, эти издержки могут быть очень вредными для производительности.

Чтобы устранить проблемы с производительностью выборок, выделенных для чтения, средство чтения и синхронное средство чтения поддерживают выборки, выделенные пользователем. Чтобы использовать примеры, выделенные приложением, объект чтения выполняет вызовы метода обратного вызова выделения примера, который вы реализуете. Логика, используемая обратным вызовом для доставки буферов в объект чтения, полностью зависит от вас. Вы можете использовать пул буферов для всего файла или несколько пулов буферов, по одному для каждого вывода или потока, или любую другую схему, которая работает для вашего приложения.

Выделение буферов для чтения файлов

Функции чтения файлов