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

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

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

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

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

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

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