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


Реализовать обратный вызов OnSample

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

Асинхронный модуль чтения предоставляет образцы управляемому приложению в порядке времени представления, выполняя вызовы к методу IWMReaderCallback::OnSample. При создании приложения с помощью асинхронного средства чтения необходимо реализовать OnSample для работы с несжатыми образцами. Как правило, функции или методы, созданные для отрисовки содержимого, будут вызываться из OnSample.

Типичная реализация обратного вызова OnSample включает следующие шаги.

  1. Получение расположения и размера буфера, содержащего пример, путем вызова INSSBuffer::GetBufferAndLength в буфере, переданном как pSample.
  2. Распределите логику в зависимости от выходного значения. Выходной номер передается OnSample как dwOutputNumber.
  3. Включите логику отрисовки для каждого выходного числа, которое вы хотите поддерживать. Если вы выполняете отрисовку примеров из нескольких выходных данных, может потребоваться синхронизировать отрисовку.

Приложения, которые предоставляют сжатые примеры из файлов ASF, необходимо реализовать метод обратного вызова IWMReaderCallbackAdvanced::OnStreamSample. Функция OnStreamSample работает почти идентично функции OnSample, за исключением того, что она получает сжатые выборки по номеру потока, а не несжатые выборки по номеру вывода.

интерфейс IWMReaderCallback

интерфейс IWMReaderCallbackAdvanced

чтение файлов с помощью асинхронного ридера

Использование методов обратного вызова