during toc scan, acquire video thumbnail for each position transform video_thumbnail to media frame_key mark frames which exist in video_frames foreach frame in toc, find next marked frame acquire video thumbnail for mark position transform video_thumbnail to media frame_key find frame_key in video_frames giving video_frame_id best = bad -- for every commercial using this frame foreach clip_set in timelines matching (video_frame_id) score = 0 -- for every frame in the commercial foreach timeline_sequence matching (clip_set_id, seq_no++) acquire video frame (now-offset) transform video_thumbnail to media frame_key access video_frame(video_frame_id); compute error frame_key against video_frame(frame_key) add error to score if score > best then break done if score < best score then best = score done if best is bad then exit perform action for best match reset position past match done during playback, while normal playback acquire video thumbnail for current position transform video_thumbnail to media frame_key find frame_key in video_frames giving video_frame_id if found, playback = commercial save clip_set,seq_no and start_offset of timelines matching (video_frame_id) perform highest priority action for matching clip_set playtime = 0 while commercial playback acquire video thumbnail for next position transform video_thumbnail to media frame_key find frame_key in video_frames giving video_frame_id playback = normal if not found : break foreach timelines matching video_frame_id search saved clip_set for time_line clip_set_id if not found : continue if( time_line sequence_no != saved ++seq_no ) delete saved clip_set, empty save set : break continue access timeline_sequence(clip_set(i),++seq_no(i)) giving next_time_line if( next_time_line.offset-start_offset(i) == playtime ) playback = commerial, break