code: def read(
      self,
      table: TableCatalogEntry,
      batch_mem_size: int,
      predicate: AbstractExpression = None,
      sampling_rate: int = None,
      sampling_type: str = None,
      read_audio: bool = False,
      read_video: bool = True,
  ) -> Iterator[Batch]:
      for video_files in self._rdb_handler.read(
          self._get_metadata_table(table), 12
      ):
          for _, (row_id, video_file_name, _) in video_files.iterrows():
              system_file_name = self._xform_file_url_to_file_name(
                  video_file_name
              )
              video_file = Path(table.file_url) / system_file_name
              # increase batch size when reading audio so that
              # the audio for the file is returned in one single batch
              if read_audio:
                  batch_mem_size = sys.maxsize
              reader = DecordReader(
                  str(video_file),
                  batch_mem_size=batch_mem_size,
                  predicate=predicate,
                  sampling_rate=sampling_rate,
                  sampling_type=sampling_type,
                  read_audio=read_audio,
                  read_video=read_video,
              )
              for batch in reader.read():
                  batch.frames[table.columns[0].name] = row_id
                  batch.frames[table.columns[1].name] = str(
                      video_file_name
                  )
                  batch.frames[ROW_NUM_COLUMN] = (
                      row_id * ROW_NUM_MAGIC
                      + batch.frames[ROW_NUM_COLUMN]
                  )
                  yield batch
  
file_path: evadb/evadb/storage/video_storage_engine.py
imports: import sys
  from pathlib import Path
  from typing import Iterator
  from evadb.catalog.models.table_catalog import TableCatalogEntry
  from evadb.catalog.sql_config import ROW_NUM_COLUMN, ROW_NUM_MAGIC
  from evadb.database import EvaDBDatabase
  from evadb.expression.abstract_expression import AbstractExpression
  from evadb.models.storage.batch import Batch
  from evadb.readers.decord_reader import DecordReader
  from evadb.storage.abstract_media_storage_engine import AbstractMediaStorageEngine
label_desc: Use image node_id 2 for calling the DecordStorageEngine obj's underlying member method code with example usage: obj.read(table, batch_mem_size, predicate, sampling_rate, sampling_type, read_audio, read_video) without return types