code: def __call__(self, samples: List):
      targets, target_lengths = _extract_labels(self.sp_model, samples)
      if self.args.modality == "audio":
          audios, audio_lengths = _extract_features(
              self.valid_video_pipeline,
              self.valid_audio_pipeline,
              samples,
              self.args,
          )
          return Batch(audios, audio_lengths, targets, target_lengths)
      if self.args.modality == "video":
          videos, video_lengths = _extract_features(
              self.valid_video_pipeline,
              self.valid_audio_pipeline,
              samples,
              self.args,
          )
          return Batch(videos, video_lengths, targets, target_lengths)
      if self.args.modality == "audiovisual":
          (
              audios,
              videos,
              audio_lengths,
              video_lengths,
          ) = _extract_features(
              self.valid_video_pipeline,
              self.valid_audio_pipeline,
              samples,
              self.args,
          )
          return AVBatch(
              audios,
              videos,
              audio_lengths,
              video_lengths,
              targets,
              target_lengths,
          )
  
imports: import random
  from typing import List
  import sentencepiece
  import torch
  import torchvision
  from data_module import LRS3DataModule
  from lightning import Batch
  from lightning_av import AVBatch
label_desc: Use image node_id 2 for calling the ValTransform obj's underlying member method code with example usage: obj.__call__(samples) and returns: Batch, Batch, AVBatch