package brasero tag 619723 + patch thanks Tanguy Ortolo, 2011-11-10 18:04 UTC+0100: > So now, frame contain the nano-frame number, between 0 included and 75e9 > excluded. L. 20, it is divided by a billion to get the frame number and > it is added one if it was an exact frame. The result is thus between 0 > and 75 *included*, equal to 75 in the cases where (len % 1e9) * 75 == > 74e9.
My mistake: it is incremented by one if it was *not* an exact frame. In practice, I imagine this would almost always be the case. So the result is equal to 75 in all the cases where 74e9 < (len % 1e9) * 75 < 75e9. The attached C program allows to demonstrate it: $ ./test 999999999 # this is one second minus one nanosecond 0 0:0:75 I imagine that the conditional increment is meant to include the last incomplete frame in the case where a track does not exactly end on a frame. The current implementation is wrong, and it could be corrected by conditionally incrementing len *before* we start computing anything from it; however, given that a frame is only one 75th a second, I think it would be better to simply remove the conditional increment: part of a frame could be lost on the very last track of the disk but I do not think it would matter to anyone. For instance, if you replace l. 22 from my program by the commented one just above: $ ./test 999999999 0 0:0:75 If you agree with this solution, here is a quilt patch that implements it. Regards, -- ,--. : /` ) Tanguy Ortolo <xmpp:tan...@ortolo.eu> <irc://irc.oftc.net/Elessar> | `-' Debian Maintainer \_
signature.asc
Description: Digital signature