class_docstr: Evenly splits the video into clips of size clip_duration.
class_docstr_tok: ["Evenly","splits","the","video","into","clips","of","size","clip_duration","."]
docstr: Args:
      last_clip_end_time (float): the last clip end time sampled from this video. This
          should be 0.0 if the video hasn't had clips sampled yet.
      video_duration: (float): the duration of the video that's being sampled in seconds
      annotation (Dict): Not used by this sampler.
  Returns:
      clip_info: (ClipInfo): includes the clip information (clip_start_time,
      clip_end_time, clip_index, aug_index, is_last_clip), where the times are in
      seconds and is_last_clip is False when there is still more of time in the video
      to be sampled.
docstr_tok: ["Args",":","last_clip_end_time","(","float",")",":","the","last","clip","end","time","sampled","from","this","video",".","This","should","be","0.0","if","the","video","has","n't","had","clips","sampled","yet",".","video_duration",":","(","float",")",":","the","duration","of","the","video","that","'s","being","sampled","in","seconds","annotation","(","Dict",")",":","Not","used","by","this","sampler",".","Returns",":","clip_info",":","(","ClipInfo",")",":","includes","the","clip","information","(","clip_start_time",",","clip_end_time",",","clip_index",",","aug_index",",","is_last_clip",")",",","where","the","times","are","in","seconds","and","is_last_clip","is","False","when","there","is","still","more","of","time","in","the","video","to","be","sampled","."]
code: def __call__(
      self,
      last_clip_end_time: Optional[float],
      video_duration: float,
      annotation: Dict[str, Any],
  ) -> ClipInfo:
      """
      Args:
          last_clip_end_time (float): the last clip end time sampled from this video. This
              should be 0.0 if the video hasn't had clips sampled yet.
          video_duration: (float): the duration of the video that's being sampled in seconds
          annotation (Dict): Not used by this sampler.
      Returns:
          clip_info: (ClipInfo): includes the clip information (clip_start_time,
          clip_end_time, clip_index, aug_index, is_last_clip), where the times are in
          seconds and is_last_clip is False when there is still more of time in the video
          to be sampled.
      """
      clip_start, clip_end = self._clip_start_end(
          last_clip_end_time,
          video_duration,
          backpad_last=self._backpad_last,
      )
  
      # if they both end at the same time - it's the last clip
      _, next_clip_end = self._clip_start_end(
          clip_end, video_duration, backpad_last=self._backpad_last
      )
      if self._backpad_last:
          is_last_clip = abs(next_clip_end - clip_end) < self._eps
      else:
          is_last_clip = (next_clip_end - video_duration) > self._eps
  
      clip_index = self._current_clip_index
      self._current_clip_index += 1
  
      if is_last_clip:
          self.reset()
  
      return ClipInfo(clip_start, clip_end, clip_index, 0, is_last_clip)
  
imports: import random
  from abc import ABC, abstractmethod
  from fractions import Fraction
  from typing import Any, Dict, List, NamedTuple, Optional, Tuple, Union
label_desc: Use image node_id 3 for calling the UniformClipSampler obj's underlying member method code with example usage: obj.__call__(last_clip_end_time, video_duration, annotation) and returns: ClipInfo