Представление меток времени

Я хотел бы представить временную метку HTMLMediaElement, Его определяющими характеристиками являются:

  • Его значение представляется в виде Double
  • Это может быть запрошено в любое время, используя getCurrentTime :: IO Double (как частично применяется к данному HTMLMediaElement)
  • Он может постоянно меняться (когда проигрыватель мультимедиа играет)

Мой первоначальный план состоял в том, чтобы представить его как Behavior t Double который повторно запускает IO Double каждый раз, когда это наблюдается, но это не сработало.

Вещи, которые я пробовал:

  • Используя Behavior это продвигается под капотом с фиксированной частотой, как описано в разделе обойти этот вопрос
  • Проходя Event t () представляя желаемую частоту дискретизации и возвращая Event t Double который содержит совпадающие метки времени

Мне тоже не очень нравится - первый либо слишком сильно привязывает поведение (извините) к моему конкретному случаю использования (если я использую возможную частоту дискретизации, которую я буду использовать в своем приложении), либо кажется расточительным (если я использую что-то как 1 кГц выборка при создании Behavior просто для того, чтобы сэмплировать его на частоте 60 Гц на стороне приложения), а второе довольно негибко, если вы хотите сделать более чем одну вещь с временной меткой при разных частотах дискретизации.

1 ответ

Решение

Прямо сейчас, используя Event явно выбрать время (ваш второй вариант) значение является вашей лучшей ставкой. Мы еще не создали способ написать BehaviorЭто ленивый опрос внешних ресурсов, хотя я надеюсь, что скоро мы сможем это сделать.

Имейте в виду, что при втором варианте вам не обязательно использовать конкретную частоту дискретизации; вместо этого вы можете производить выборку по требованию и даже иметь несколько мест, выполняющих эту выборку. Это не идеально, но я надеюсь, что это позволит вам сделать работу!

Другие вопросы по тегам