The following should work:
double second = (double)time.timeValue / (double)time.timeScale;
int result = second / 60;
second -= 60 * result;
int minute = result % 60;
result = result / 60;
int hour = result % 24;
int days = result / 24;
NSString *SMPTE_string = [NSString stringWithFormat:@"%02d:%02d:%06.3f", hour, minute, second];
The seconds are computed as double
instead of int
and then printed
with millisecond precision using the %06.3f
format.
(Note that days = result
in your code is not correct.)
If you prefer integer arithmetic then you can also compute the milliseconds from
QTTime time
with
long long milli = (1000 * (time.timeValue % time.timeScale)) / time.timeScale;