public static ps_seg_t kws_search_seg_iter(ps_search_t search) { kws_search_t kwss = (kws_search_t)search; kws_seg_t itor; Pointer <gnode_t> detect_head = kwss.detections.Deref.detect_list; while (detect_head.IsNonNull && ((Pointer <kws_detection_t>)glist.gnode_ptr(detect_head)).Deref.ef > kwss.frame - kwss.delay) { detect_head = glist.gnode_next(detect_head); } if (detect_head.IsNull) { return(null); } itor = new kws_seg_t(); itor.vt = kws_segfuncs; itor.search = search; itor.lwf = 1.0f; itor.detection = detect_head; itor.last_frame = kwss.frame - kwss.delay; kws_seg_fill(itor); return((ps_seg_t)itor); }
public static void kws_seg_fill(kws_seg_t itor) { Pointer <kws_detection_t> detection = (Pointer <kws_detection_t>)glist.gnode_ptr(itor.detection); itor.word = detection.Deref.keyphrase; itor.sf = detection.Deref.sf; itor.ef = detection.Deref.ef; itor.prob = detection.Deref.prob; itor.ascr = detection.Deref.ascr; itor.lscr = 0; }
public static ps_seg_t kws_seg_next(ps_seg_t seg) { kws_seg_t itor = (kws_seg_t)seg; Pointer <gnode_t> detect_head = glist.gnode_next(itor.detection); while (detect_head.IsNonNull && ((Pointer <kws_detection_t>)glist.gnode_ptr(detect_head)).Deref.ef > itor.last_frame) { detect_head = glist.gnode_next(detect_head); } itor.detection = detect_head; if (itor.detection.IsNull) { kws_seg_free(seg); return(null); } kws_seg_fill(itor); return(seg); }