Re: Error in dropNTSC algorithm

Thanks for this correction. I have created a new issue [1] to track this.

[1] https://www.w3.org/AudioVideo/TT/tracker/issues/322


On Wed, Jun 18, 2014 at 8:06 AM, Charles Ritchea <CRitchea@nexidia.com>
wrote:

>  There is an error in the below SMPTE Time algorithm:
>
> TTML Semantics – Time Expressions and SMPTE Time Relationship
>
>
> S = (countedFrames - droppedFrames + (subFrames / subFrameRate)) /
> effectiveFrameRate
>
> where
>
> countedFrames = (3600 * hours + 60 * minutes + seconds) * frameRate +
> frames
>
> hours, minutes, seconds, frames, subFrames components are extracted from
> time expression if present, or zero if not present;
>
> droppedFrames is computed as follows:
>
> 1. let *dropMode* be the computed value of the ttp:dropMode parameter;
>
> 2. if *dropMode* is dropNTSC, let droppedFrames = (hours * 54 +
> floor(minutes - minutes/10)) * 2;
>
> 3. otherwise, if *dropMode* is dropPAL, let droppedFrames = (hours * 27 +
> floor(minutes/2 - minutes/20)) * 4;
>
> 4. otherwise, let droppedFrames = 0;
>
> frameRate is the computed value of the ttp:frameRate parameter;
>
> subFrameRate is the computed value of the ttp:subFrameRate parameter;
>
> and effectiveFrameRate (in frames per second) is frameRate *
> frameRateMultipler where frameRate is the computed value of the
> ttp:frameRate parameter and frameRateMultipler is the computed value of
> the ttp:frameRateMultiplier parameter.
>
> Notwithstanding the above, if a time expression contains a frame code that
> is designated as dropped according to *6.2.3 ttp:dropMode*
> <http://www.w3.org/TR/ttaf1-dfxp/#parameter-attribute-dropMode>, then
> that time expression should be considered to be invalid for purposes of
> validation assessment.
>
>
>
> 2. if *dropMode* is dropNTSC, let droppedFrames = (hours * 54 +
> floor(minutes - minutes/10)) * 2;
>
> should be:
>
> 2. if *dropMode* is dropNTSC, let droppedFrames = (hours * 54 + minutes –
> floor(minutes/10)) * 2;
>
>
>
> This can be clearly seen in the case of 00:01:00:03, which obviously has 2
> frames dropped.
>
> In the original algorithm: floor(1 - 1/10)*2 -> floor(1 - 0.1)*2 ->
> floor(0.9)*2 -> 0*2 -> 0
>
> In the modified algorithm: (1 - floor(1/10))*2 -> (1 –floor(0.1))*2 ->
> (1-0)*2 -> 1*2 -> 2
>
>
>
> And I assume:
>
> 3. otherwise, if *dropMode* is dropPAL, let droppedFrames = (hours * 27 +
> floor(minutes/2 - minutes/20)) * 4;
>
> should be:
> 3. otherwise, if *dropMode* is dropPAL, let droppedFrames = (hours * 27 +
> floor(minutes/2) – floor(minutes/20)) * 4;
>

Received on Thursday, 19 June 2014 14:58:41 UTC