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


Часы 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-уведомлений, например фильтр записи, имеет предпочтение в качестве поставщика часов.