Clarification of zero-duration intervals

Dear all,

I would like to request a review of the pseudocode for getFirstInterval and
getNextInterval in all versions of the SMIL specification, including SMIL3.
It would be most helpful if this pseudocode was also accompanied by a prose
description of the behaviour of zero-duration intervals.

In my previous message I referred to the following piece of pseudocode:

   If (currentInterval.end > currentInterval.begin)
       Set tempBegin = the first value in the begin list that is >=
beginAfter.
   Else
       Set tempBegin = the first value in the begin list that is >
beginAfter.

I believe that this belongs in getNextInterval as indicated in the SMIL2
errata.[1]

Assuming that this is correct, and noting that beginAfter =
currentInterval.end, it would appear that this condition disallows
non-zero-duration intervals after zero-duration intervals. That is, suppose
currentInterval.end == currentInterval.begin (and therefore == beginAfter).
In such a case tempBegin = the first value in the begin list that is >
currentInterval.end.

So if we have:

begin=1s; 1s
end=1s; 3s
dur=1s

We would make an interval from 1s-1s initially, then when we come to get the
next interval we would note that for the previous interval
currentInterval.end == currentInterval.begin and so we would search for the
first value in the begin list that is > 1s, which doesn't exist and so we
would fail and the result being that we would yield only one interval and
not two. Therefore it is not possible to have a non-zero-duration interval
after a zero-duration interval according to the pseudocode quoted above.

It should also be clarified what the expected results are for the following:

begin=1s
end=1s; 3s

Is it one interval, 1s-1s? Or two: 1s-1s, 1s-3s. i.e. can we re-use a begin
time? The pseudocode suggests we re-use begin times and I this makes
implementation easier.

Whatever the result, something analogous should happen in getFirstInterval
for the following case:

begin=-0.5s
end=-0.5s; 1s

Perhaps the rules is that we cannot have more than one zero-duration
interval with the same begin time?

Such that

begin=1s
end=1s; 1s; 1s; 3s;

produces two intervals

I have tested many of these scenarios with various implementations and they
produce different results so I hope this issue can be clarified.

Thank you.

Best regards,

Brian Birtles

[1] http://www.w3.org/2001/07/REC-SMIL20-20010731-errata#E14

Received on Thursday, 22 January 2009 01:36:33 UTC