gardesk/garbg / 609a151

Browse files

fix frame delays being 1000x too long — from_millis should be from_micros

Authored by espadonne
SHA
609a151c62900df0a0f55aefbeb006bc106ccd00
Parents
1578a8c
Tree
37db125

3 changed files

StatusFile+-
M garbg/src/media/apng.rs 1 1
M garbg/src/media/gif.rs 3 1
M garbg/src/media/webp.rs 1 1
garbg/src/media/apng.rsmodified
@@ -162,7 +162,7 @@ fn frame_delay_to_duration(frame: &Frame) -> Duration {
162162
     if denominator == 0 {
163163
         Duration::ZERO
164164
     } else {
165
-        Duration::from_millis((numerator as u64 * 1000) / denominator as u64)
165
+        Duration::from_micros((numerator as u64 * 1000) / denominator as u64)
166166
     }
167167
 }
168168
 
garbg/src/media/gif.rsmodified
@@ -162,12 +162,14 @@ impl AnimatedGif {
162162
 }
163163
 
164164
 /// Convert frame delay ratio to Duration
165
+/// numer_denom_ms() returns (numerator, denominator) where numerator/denominator = delay in ms
165166
 fn frame_delay_to_duration(frame: &Frame) -> Duration {
166167
     let (numerator, denominator) = frame.delay().numer_denom_ms();
167168
     if denominator == 0 {
168169
         Duration::ZERO
169170
     } else {
170
-        Duration::from_millis((numerator as u64 * 1000) / denominator as u64)
171
+        // Convert ms ratio to microseconds for sub-ms precision
172
+        Duration::from_micros((numerator as u64 * 1000) / denominator as u64)
171173
     }
172174
 }
173175
 
garbg/src/media/webp.rsmodified
@@ -159,7 +159,7 @@ fn frame_delay_to_duration(frame: &Frame) -> Duration {
159159
     if denominator == 0 {
160160
         Duration::ZERO
161161
     } else {
162
-        Duration::from_millis((numerator as u64 * 1000) / denominator as u64)
162
+        Duration::from_micros((numerator as u64 * 1000) / denominator as u64)
163163
     }
164164
 }
165165