- self.current_frame = max(
- 0,
- int(delta) * self.current_frame
- + int(value * self.audio_segment.frame_rate))
- # FIXME: si on fait un seek + delta, adapter le "loop"
+ if delta:
+ frame_count = int(self.audio_segment.frame_count())
+ frame_diff = int(value * self.audio_segment.frame_rate)
+ self.current_frame += frame_diff
+ while self.current_frame < 0:
+ self.current_loop -= 1
+ self.current_frame += frame_count
+ while self.current_frame > frame_count:
+ self.current_loop += 1
+ self.current_frame -= frame_count
+ if self.current_loop < 0:
+ self.current_loop = 0
+ self.current_frame = 0
+ if self.current_loop > self.last_loop:
+ self.current_loop = self.last_loop
+ self.current_frame = frame_count
+ else:
+ self.current_frame = max(
+ 0,
+ int(value * self.audio_segment.frame_rate))