              for extractor_output in self._extractor.detected_faces():
                  self._extractor_input_thread.check_and_raise_error()
                  updater(extractor_output)
              self._extractor_input_thread.join()
              if self._update_count != 0:
                  self._alignments.backup()
                  self._alignments.save()
          else:
              self._extractor_input_thread.join()
              self._saver.close()
 
</s> remove         if self._skip_count != 0:
 </s> add         if self._counts["skip"] != 0: </s> remove                            self._skip_count)
 </s> add                            self._counts["skip"]) </s> remove                 self._update_count += len(detected_faces)
 </s> add                 self._counts["update"] += len(detected_faces) </s> remove                     self._update_count += 1
 </s> add                     self._counts["update"] += 1 </s> remove                 self._skip_count += 1
 </s> add                 self._counts["skip"] += 1
            if self._counts["update"] != 0:
              for extractor_output in self._extractor.detected_faces():
                  self._extractor_input_thread.check_and_raise_error()
                  updater(extractor_output)
              self._extractor_input_thread.join()
            if self._counts["update"] != 0:
                  self._alignments.backup()
                  self._alignments.save()
          else:
              self._extractor_input_thread.join()
              self._saver.close()
keep keep keep keep replace keep keep keep keep keep
 Core Update (#995)

* lib.alignments - Add Video Meta Data methods

* lib.image - Monkey Path ImageIO for video scanning 
tools/mask/mask.py