为文件读取分配缓冲区

在最基本的文件读取方案中,用于传送样本的缓冲区由读取器对象 (读取器对象或同步读取器对象) 分配。 但是,可以自行分配缓冲区。 有关分配自己的缓冲区的好处的详细信息,请参阅 用户分配的示例支持

若要使用自己的缓冲区读取文件,请执行以下步骤。

  1. 实现回调或回调,供读取器在需要缓冲区时调用。 如果要读取输出示例,请使用 IWMReaderAllocatorEx::AllocateForOutputEx。 如果要读取流示例,请使用 IWMReaderAllocatorEx::AllocateForStreamEx。 包括用于管理适合应用程序的缓冲区的任何逻辑。
  2. 分配将用于文件读取的缓冲区池。
  3. 设置读取器或同步读取器以供读取。 有关详细信息,请参阅 使用异步读取器读取文件 或使用 同步读取器读取文件
  4. 在开始编写之前,请调用 IWMReaderAdvanced::SetAllocateForOutputIWMReaderAdvanced::SetAllocateForStream ,以获取使用读取器对象为其分配缓冲区的每个输出和流。 对于同步读取器,请改为调用 IWMSyncReader2::SetAllocateForOutputIWMSyncReader2::SetAllocateForStream
  5. 开始读取文件。

读取对象将调用相应的分配器回调,并从应用程序获取示例。 缓冲区管理逻辑必须包含一种方法来指示可以再次使用缓冲区。 通常,缓冲区在呈现其内容时放回池中。 根据应用程序的不同,你可能只需要池中的几个缓冲区或多个缓冲区。

读取 ASF 文件