      """
  
      _actions_req_fps = ["extract", "gen_vid"]
      _actions_req_ref_video = ["mux_audio"]
      _actions_can_preview = ["gen_vid", "mux_audio", "rescale", "rotate",
                              "slice"]
      _actions_can_use_ref_video = ["gen_vid"]
      _actions_have_dir_output = ["extract"]
      _actions_have_vid_output = ["gen_vid", "mux_audio", "rescale", "rotate",
                                  "slice"]
      _actions_have_print_output = ["get_fps", "get_info"]
 
</s> remove         self._opts = OptionalActions(self._args, self._images.input_images, self._alignments)
 </s> add         self._opts = OptionalActions(self._args, self._images.file_list, self._alignments) </s> remove         self._images = Images(self._args)
 </s> add         self._images = ImagesLoader(self._args.input_dir, fast_count=True) </s> remove             minframe, maxframe = 1, self._images.images_found
 </s> add             minframe, maxframe = 1, self._images.count </s> remove             retval = min(total_cpus(), self._images.images_found)
 </s> add             retval = min(total_cpus(), self._images.count) </s> remove             retval = min(self._args.jobs, total_cpus(), self._images.images_found)
 </s> add             retval = min(self._args.jobs, total_cpus(), self._images.count)
      """
  
      _actions_req_fps = ["extract", "gen_vid"]
      _actions_req_ref_video = ["mux_audio"]


      _actions_can_use_ref_video = ["gen_vid"]
      _actions_have_dir_output = ["extract"]
      _actions_have_vid_output = ["gen_vid", "mux_audio", "rescale", "rotate",
                                  "slice"]
      _actions_have_print_output = ["get_fps", "get_info"]
keep keep keep keep replace replace keep keep keep keep keep
 Bugfixes and minor updates:
  - Remove preview option from effmpeg tool
  - Remove json filetypes from GUI for alignments files
  - Capture and raise empty timelapse folder errors
  - Move convert to use centralized ImagesLoader 
tools/effmpeg/effmpeg.py