code: def test_time_decimate_with_transition(self):
      new_src_segments, new_dst_segments = helpers.compute_segments(
          "time_decimate",
          src_duration=20,
          dst_duration=8,
          src_fps=25.0,
          dst_fps=30.0,
          metadata=None,
          start_offset_factor=0.1,  # 2sec
          on_factor=0.2,  # 4sec
          off_factor=0.5,  # 2sec (relative to on_factor)
          transition=af.TransitionConfig(
              effect=af.TransitionEffect.CIRCLECLOSE, duration=2.0
          ),
      )
      self.assert_equal_segment_lists(
          new_src_segments,
          [
              Segment(start=2.0, end=5.0),
              Segment(start=9.0, end=11.0),
              Segment(start=15.0, end=18.0),
          ],
      )
      self.assert_equal_segment_lists(
          new_dst_segments,
          [
              Segment(start=0, end=3.0),
              Segment(start=3.0, end=5.0),
              Segment(start=5.0, end=8.0),
          ],
      )
  
imports: import os
  import unittest
  from typing import List
  from unittest.mock import MagicMock, patch
  from augly.utils import Segment
  from augly.utils.base_paths import ASSETS_BASE_DIR
  from augly.video import helpers
  from augly.video.augmenters import ffmpeg
label_desc: Use image node_id 9 for calling the MetadataUnitTest obj's underlying member method code with example usage: obj.test_time_decimate_with_transition() without return types