                  continue
  
              converted_image = item.get_image_copy(self.color_format)
              for f_idx, face in enumerate(item.detected_faces):
                  batch.setdefault("image", []).append(converted_image)
                  batch.setdefault("detected_faces", []).append(face)
                  batch.setdefault("filename", []).append(item.filename)
                  idx += 1
                  if idx == self.batchsize:
                      frame_faces = len(item.detected_faces)
                      if f_idx + 1 != frame_faces:
                          self._rollover = ExtractMedia(
 
</s> remove         batch = {}
 </s> add         batch = AlignerBatch() </s> remove                 logger.trace("EOF received")
 </s> add                 logger.trace("EOF received")  # type:ignore
                self._filter.output_counts() </s> remove                 logger.trace("Getting from queue: (filename: %s, faces: %s)",
 </s> add                 logger.trace("Getting from queue: (filename: %s, faces: %s)",  # type:ignore </s> remove         for filename, face in zip(batch["filename"], batch["detected_faces"]):
 </s> add         for frame, filename, face in zip(batch.image, batch.filename, batch.detected_faces): </s> remove         logger.trace("Item out: %s", {key: val.shape if isinstance(val, np.ndarray) else val
                                      for key, val in batch.items()})
 </s> add         logger.trace("Item out: %s", {key: val.shape  # type:ignore
                                      if isinstance(val, np.ndarray) else val
                                      for key, val in batch.__dict__.items()})
                batch.image.append(converted_image)
                batch.detected_faces.append(face)
                batch.filename.append(item.filename)
                  continue
  
              converted_image = item.get_image_copy(self.color_format)
              for f_idx, face in enumerate(item.detected_faces):
                batch.image.append(converted_image)
                batch.detected_faces.append(face)
                batch.filename.append(item.filename)
                batch.image.append(converted_image)
                batch.detected_faces.append(face)
                batch.filename.append(item.filename)
                batch.image.append(converted_image)
                batch.detected_faces.append(face)
                batch.filename.append(item.filename)
                  idx += 1
                  if idx == self.batchsize:
                      frame_faces = len(item.detected_faces)
                      if f_idx + 1 != frame_faces:
                          self._rollover = ExtractMedia(
keep keep keep keep replace replace replace keep keep keep keep keep
 Extract updates:
  - Default CPU detector to MTCNN
  - add basic Aligner false positive filters
  - Typing: align + plugins
  - Use specific AlignerBatch class for alignment
  - 
plugins/extract/align/_base.py