Clarification of zero-duration intervals
Brian Birtles <[email protected]> Thu, 22 Jan 2009 14:35:57 +1300
| Newsgroups | gmane.comp.web.smil |
|---|---|
| Message-ID | <[email protected]> |
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