docs: def process_features(self, corpus, input_features, output_path):
          """
          Process all features of the given corpus and save the processed features in a feature-container.
          The features are processed in **offline** mode, all features of an utterance at once.
  
          Args:
              corpus (Corpus): The corpus to process the utterances from.
              input_features (FeatureContainer): The feature-container to process the frames from.
              output_path (str): A path to save the feature-container to.
  
          Returns:
              FeatureContainer: The feature-container containing the processed features.
          """
          feat_container = containers.FeatureContainer(output_path)
          feat_container.open()
  
          input_features.open()
  
          for utterance in corpus.utterances.values():
              sampling_rate = input_features.sampling_rate
              frames = input_features.get(utterance.idx, mem_map=False)
              processed = self.process_frames(frames, sampling_rate, offset=0, last=True,
                                              utterance=utterance, corpus=corpus)
              feat_container.set(utterance.idx, processed)
  
          tf_frame_size, tf_hop_size = self.frame_transform(input_features.frame_size, input_features.hop_size)
          feat_container.frame_size = tf_frame_size
          feat_container.hop_size = tf_hop_size
          feat_container.sampling_rate = input_features.sampling_rate
  
          feat_container.close()
  
          return feat_container