code: def _get_animation_info(self, all_datasets, filename, fill_value=None):
          
          valid_datasets = [ds for ds in all_datasets if ds is not None]
          first_dataset = valid_datasets[0]
          last_dataset = valid_datasets[-1]
          first_img = get_enhanced_image(first_dataset)
          first_img_data = first_img.finalize(fill_value=fill_value)[0]
          shape = tuple(first_img_data.sizes.get(dim_name)
                        for dim_name in ('y', 'x', 'bands'))
          if fill_value is None and filename.endswith('gif'):
              log.warning("Forcing fill value to '0' for GIF Luminance images")
              fill_value = 0
              shape = shape[:2]
  
          attrs = first_dataset.attrs.copy()
          if 'end_time' in last_dataset.attrs:
              attrs['end_time'] = last_dataset.attrs['end_time']
          this_fn = filename.format(**attrs)
          return this_fn, shape, fill_value
docs: Determine filename and shape of animation to be created.