# Path: automl_video_ondevice/object_tracking/base_object_detection.py
# class BaseObjectDetectionInference:
#   """Interface that must be implemented for support of different model types."""
# 
#   def __init__(self, frozen_graph_path, label_map_path, config):
#     raise NotImplementedError()
# 
#   def input_size(self):
#     return Size(256, 256)
# 
#   def run(self, timestamp, frame, annotations):
#     raise NotImplementedError()
# 
# Path: automl_video_ondevice/types.py
# class NormalizedBoundingBox:
#   left: float
#   top: float
#   right: float
#   bottom: float
# 
# Path: automl_video_ondevice/types.py
# class ObjectTrackingAnnotation:
#   timestamp: float
#   track_id: int
#   class_id: int
#   class_name: str
#   confidence_score: float
#   bbox: NormalizedBoundingBox


import numpy as np
  import platform
from automl_video_ondevice.object_tracking.base_object_detection import BaseObjectDetectionInference
from automl_video_ondevice.types import NormalizedBoundingBox
from automl_video_ondevice.types import ObjectTrackingAnnotation
    from automl_video_ondevice.object_tracking.mediapipe_tracker.aarch64 import mediapipe_tracker  # pylint: disable=line-too-long
    input_stream_handler: "SyncSetInputStreamHandler"
    options {
      [mediapipe.SyncSetInputStreamHandlerOptions.ext] {
        sync_set {
          tag_index: "TRACKING"
          tag_index: "TRACK_TIME"
        }
        sync_set {
          tag_index: "START_POS"
        }
        sync_set {
          tag_index: "CANCEL_OBJECT_ID"
        }
      }
    }
  }

  node_options: {
    [type.googleapis.com/mediapipe.BoxTrackerCalculatorOptions]: {
      tracker_options: {
        track_step_options {
          track_object_and_camera: true
          tracking_degrees: TRACKING_DEGREE_TRANSLATION
          inlier_spring_force: 0.0
          static_motion_temporal_ratio: 3e-2
        }
      }
      visualize_tracking_data: false
      streaming_track_data_cache_size: 100
    }

# Path: automl_video_ondevice/object_tracking/base_object_detection.py
# class BaseObjectDetectionInference:
#   """Interface that must be implemented for support of different model types."""
# 
#   def __init__(self, frozen_graph_path, label_map_path, config):
#     raise NotImplementedError()
# 
#   def input_size(self):
#     return Size(256, 256)
# 
#   def run(self, timestamp, frame, annotations):
#     raise NotImplementedError()
# 
# Path: automl_video_ondevice/types.py
# class NormalizedBoundingBox:
#   left: float
#   top: float
#   right: float
#   bottom: float
# 
# Path: automl_video_ondevice/types.py
# class ObjectTrackingAnnotation:
#   timestamp: float
#   track_id: int
#   class_id: int
#   class_name: str
#   confidence_score: float
#   bbox: NormalizedBoundingBox


# Path: automl_video_ondevice/object_tracking/mediapipe_object_tracker.py
import numpy as np
  import platform
from automl_video_ondevice.object_tracking.base_object_detection import BaseObjectDetectionInference
from automl_video_ondevice.types import NormalizedBoundingBox
from automl_video_ondevice.types import ObjectTrackingAnnotation
    from automl_video_ondevice.object_tracking.mediapipe_tracker.aarch64 import mediapipe_tracker  # pylint: disable=line-too-long

    input_stream_handler: "SyncSetInputStreamHandler"
    options {
      [mediapipe.SyncSetInputStreamHandlerOptions.ext] {
        sync_set {
          tag_index: "TRACKING"
          tag_index: "TRACK_TIME"
        }
        sync_set {
          tag_index: "START_POS"
        }
        sync_set {
          tag_index: "CANCEL_OBJECT_ID"
        }
      }
    }
  }

  node_options: {
    [type.googleapis.com/mediapipe.BoxTrackerCalculatorOptions]: {
      tracker_options: {
        track_step_options {
          track_object_and_camera: true
          tracking_degrees: TRACKING_DEGREE_TRANSLATION
          inlier_spring_force: 0.0
          static_motion_temporal_ratio: 3e-2
        }
      }
      visualize_tracking_data: false
      streaming_track_data_cache_size: 100
    }

  }