!7 !include once #1025225 // Shared IntegralImage cmodule SegmentScreenshotStream > DynPrintLogAndEnabled { ISegmenter segMainVideo; Rect mainVideo; transient BufferedImage screenshot = ss; transient ReliableSingleThread rstAnalyzeScreen = dm_rst(this, r analyzeScreen); visual withCenteredButtons(super, +moveMouseToMainVideo); start-thread { if (segMainVideo == null) segMainVideo = mandatorySegmenterFromAGIBlue("Find main YT video #1"); dm_onScreenshot_q(ss -> { screenshot = (BufferedImage) get image(ss); rstAnalyzeScreen.trigger(); }); } void analyzeScreen { BufferedImage img = screenshot; if (img == null) ret; dm_setFieldAndPrintIfChanged(mainVideo := first_warnIfMultiple(segMainVideo.get(img))); if (mainVideo == null) ret with print("No main video found"); } // API void moveMouseToMainVideo { dm_moveMouse(+mainVideo); // move to the middle } }