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


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

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

Чтобы использовать собственные буферы для чтения файлов, выполните следующие действия.

  1. Реализуйте обратный вызов или обратные вызовы, чтобы средство чтения вызывало, когда ему требуется буфер. Если вы читаете выходные примеры, используйте IWMReaderAllocatorEx::AllocateForOutputEx. Если вы читаете примеры потоков, используйте IWMReaderAllocatorEx::AllocateForStreamEx. Включите любую логику для управления буферами, которая подходит вашему приложению.
  2. Выделите пул буферов, которые будут использоваться для чтения файлов.
  3. Настройте средство чтения или синхронное средство чтения для чтения. Дополнительные сведения см. в разделе Чтение файлов с помощью асинхронного средства чтения или Чтение файлов с помощью синхронного средства чтения.
  4. Перед началом записи вызовите IWMReaderAdvanced::SetAllocateForOutput или IWMReaderAdvanced::SetAllocateForStream для каждого вывода и потока, для которого вы выделяете буферы с помощью объекта чтения. Для синхронного средства чтения вызовите вместо него IWMSyncReader2::SetAllocateForOutput или IWMSyncReader2::SetAllocateForStream .
  5. Начните чтение файла.

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

Чтение ФАЙЛОВ ASF