| 216 | } |
| 217 | |
| 218 | static void create_tracker(vapp_state& app) { |
| 219 | if (app.visual_only) { |
| 220 | // SAM2 / visual-only: use visual tracker (no text detection) |
| 221 | app.visual_track_params.assoc_iou_threshold = app.track_params.assoc_iou_threshold; |
| 222 | app.visual_track_params.max_keep_alive = app.track_params.max_keep_alive; |
| 223 | app.visual_track_params.recondition_every = app.track_params.recondition_every; |
| 224 | app.visual_track_params.fill_hole_area = app.track_params.fill_hole_area; |
| 225 | app.tracker = sam3_create_visual_tracker(*app.model, app.visual_track_params); |
| 226 | } else { |
| 227 | if (app.init_mode == VMODE_TEXT) |
| 228 | app.track_params.text_prompt = app.text_prompt; |
| 229 | else |
| 230 | app.track_params.text_prompt = ""; |
| 231 | app.tracker = sam3_create_tracker(*app.model, app.track_params); |
| 232 | } |
| 233 | app.tracker_created = (app.tracker != nullptr); |
| 234 | snprintf(app.status, sizeof(app.status), app.tracker_created |
| 235 | ? "Tracker created. Press Play or add instances." |
| 236 | : "Failed to create tracker."); |
| 237 | } |
| 238 | |
| 239 | static void decode_and_track(vapp_state& app, int fi) { |
| 240 | app.frame = sam3_decode_video_frame(app.video_path, fi); |
no test coverage detected