Как вычислить неявные длительности для par и seq timeContainers в TTML?

У меня есть следующая выдержка из набора тестов TTML по адресу http://www.w3.org/2008/12/dfxp-testsuite/web-framework/START.html (MediaSeqTiming002):

<body timeContainer="par">
  <div timeContainer="seq" dur="40s">
    <div timeContainer="seq" dur="20s">
      <metadata>
        <ttm:desc>default duration for elements in this context is 0</ttm:desc>
      </metadata>
      <p begin="00:00:05:00" dur="5s">This text must appear at 5 seconds<br/>and be remain visible to 10 seconds,</p>
      <p begin="00:00:05:00">This text must not appear.</p>
      <p  dur="00:00:05:00">This text must appear at 15 seconds<br/>and be remain visible to 20 seconds,</p>
    </div>
    [...]
  </div>
</body>

Требуется ли второе <p> текст элемента (строка 8) не отображается правильно? Я проанализировал спецификацию TTML ( http://www.w3.org/TR/ttaf1-dfxp/) и обнаружил следующее:

  • "Этот текст не должен появляться" - это анонимный промежуток внутри параллельного timeContainer, поэтому в соответствии с 10.4 (первый маркер) его неявная длительность является неопределенной.
  • <p> элемент, содержащий вышеуказанный текст, имеет неявную длительность, которая заканчивается, когда все его дочерние элементы становятся неактивными (согласно endsync=all для параллельного timeContainers), поэтому его неявная длительность также неопределенна.

Исходя из этого, я считаю, что "этот текст не должен появляться" должен начинаться в 15 секунд и заканчиваться в 20 секунд, а третий <p> никогда не должен становиться активным.

Тест, кажется, предполагает, что неявная продолжительность второго <p> должно быть 0.

Где я не прав?

1 ответ

Решение

Вы не ошиблись; Я согласен с вашим выводом - см. Также мое объяснение в объяснении атрибутов синхронизации W3C TTML

Я полагаю, что приведенный вами пример разрешает следующее:

  • От 0 до 5: ничего не показано
  • От 5 до 10 с: This text must appear at 5 seconds<br/>and be remain visible to 10 seconds,
  • 10-15: ничего не показано
  • 15-20 This text must not appear.
  • 20 лет вперед: ничего не показано

Описание метаданных представляется неверным.

Анализ

TTML1 §10.4 Временные интервалы говорят:

  • Неявная продолжительность элемента body, div, p или span определяется в соответствии с (1), является ли элемент параллельным или последовательным контейнером времени, (2) семантикой endync по умолчанию, определенной выше в 10.2.4 timeContainer, и (3) семантика [SMIL 2.1] применительно к этим временным контейнерам.

В этом случае элементы div являются (явно) seq контейнеры времени и элементы р (неявно) par Контейнеры времени. Неявная продолжительность par timeContainer определен в SMIL 2.1 как

Неявная продолжительность номинала

Неявная длительность номинала контролируется функцией синхронизации. По умолчанию неявная продолжительность par определяется семантикой endynync="last". Неявная длительность заканчивается последним активным концом дочерних элементов.

Однако TTML1 указывает, что применимое значение endsync является "all"Это означает, что неявная длительность par timeContainer фактически равна "до тех пор, пока не закончится его родительский timeContainer".

Для полноты, неявный срок seq timeContainer определен в SMIL 2.1 как

Неявная продолжительность контейнеров seq

  • Неявная продолжительность seq заканчивается активным концом последнего дочернего элемента seq.
  • Если какой-либо дочерний элемент seq имеет неопределенную активную длительность, неявная длительность seq также неопределенна.

Это, конечно, здесь не применимо, потому что все seq timeContainers имеют явно заданную длительность.

Устранение неисправного теста

Я добавил этот тест как "плохой" к общей проблеме плохих тестов на https://www.w3.org/AudioVideo/TT/tracker/issues/265

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