Часы AVStream
Фильтры AVStream поддерживают часы на контактах.
Чтобы указать, что закрепление AVStream предоставляет часы, задайте KSPIN_FLAG_IMPLEMENT_CLOCK в элементе Flags первого KSPIN_DESCRIPTOR_EX в элементе PinDescriptorsKSFILTER_DESCRIPTOR.
Кроме того, укажите указатель на структуру KSCLOCK_DISPATCH в KSPIN_DISPATCH.
Для выполнения запросов часов используйте методы, определенные в интерфейсе IKsReferenceClock . Интерфейс IKsReferenceClock можно получить, вызвав KsPinGetReferenceClockInterface. Мини-накопитель AVStream отвечает за освобождение интерфейса по завершении.
Чтобы получить значения таймера для размещения в поле PresentationTimeKSSTREAM_HEADER, вызовите IKsReferenceClock::GetCorrelatedTime.
Обратите внимание, что часы никогда не отображаются в GraphEdit, даже если они были выбраны.
Чтобы убедиться, что часы выбраны, убедитесь, что вызовы методов IKsReferenceClock создают вызовы подпрограмм диспетчеризации, указанных в KSCLOCK_DISPATCH.
Диспетчер графов фильтров выбирает часы при переходе графа в состояние приостановки. Любой фильтр, который является источником push-уведомлений, например фильтр записи, имеет предпочтение в качестве поставщика часов.