  
      def get_writer(self):
          """ Add the requested encoding options and return the writer """
          logger.debug("writer config: %s", self.config)
          return imageio.get_writer(self.video_tmp_file,
                                    fps=self.video_fps,
                                    ffmpeg_log_level="error",
                                    quality=None,
                                    macro_block_size=8,
                                    output_params=self.output_params)
  
 
</s> remove     def get_writer(self):
        """ Add the requested encoding options and return the writer """
 </s> add     def _get_writer(self) -> imageio.plugins.ffmpeg.FfmpegFormat.Writer:
        """ Add the requested encoding options and return the writer.

        Returns
        -------
        :class:`imageio.plugins.ffmpeg.FfmpegFormat.Writer`
            The imageio ffmpeg writer
        """ </s> remove                                   output_params=self.output_params)
 </s> add                                   output_params=self._output_params) </s> remove     def write(self, filename, image):
        """ Frames come from the pool in arbitrary order, so cache frames
            for writing out in correct order """
 </s> add     def write(self, filename: str, image) -> None:
        """ Frames come from the pool in arbitrary order, so frames are cached for writing out
        in the correct order.

        Parameters
        ----------
        filename: str
            The incoming frame filename.
        image: :class:`numpy.ndarray`
            The converted image to be written
        """ </s> remove def get_config(plugin_name, configfile=None):
    """ Return the config for the requested model """
 </s> add def get_config(plugin_name: str, configfile: Optional[str] = None) -> dict:
    """ Obtain the configuration settings for the writer plugin.

    Parameters
    ----------
    plugin_name: str
        The name of the convert plugin to return configuration settings for
    configfile: str, optional
        The full path to a custom configuration ini file. If ``None`` is passed
        then the file is loaded from the default location. Default: ``None``.

    Returns
    -------
    dict
        The requested configuration dictionary
    """ </s> remove     def cache_frame(self, filename, image):
        """ Add the incoming frame to the cache """
 </s> add     def cache_frame(self, filename, image) -> None:
        """ Add the incoming converted frame to the cache ready for writing out.

        Used for ffmpeg and gif writers to ensure that the frames are written out in the correct
        order.

        Parameters
        ----------
        filename: str
            The filename of the incoming frame, where the frame index can be extracted from
        image: class:`numpy.ndarray`
            The converted frame corresponding to the given filename
        """
        return imageio.get_writer(self._video_tmp_file,
                                  fps=self._video_fps,
  
      def get_writer(self):
          """ Add the requested encoding options and return the writer """
          logger.debug("writer config: %s", self.config)
        return imageio.get_writer(self._video_tmp_file,
                                  fps=self._video_fps,
        return imageio.get_writer(self._video_tmp_file,
                                  fps=self._video_fps,
                                    ffmpeg_log_level="error",
                                    quality=None,
                                    macro_block_size=8,
                                    output_params=self.output_params)
  
keep keep keep keep replace replace keep keep keep keep keep
 ffmpeg writer: Create new filename if output pre-exists 
plugins/convert/writer/ffmpeg.py