code: def test_build_frame_manifest_from_nested_directory(
      self, multithreading=True
  ):
      with tempfile.TemporaryDirectory(
          prefix="TestEpicKitchenUtils"
      ) as tempdir:
          video_frames_expected = get_nested_video_frames(
              tempdir, "png"
          )
          write_mock_frame_files(video_frames_expected, tempdir, "png")
  
          video_frames = build_frame_manifest_from_nested_directory(
              tempdir, multithreading
          )
          self.assertEqual(
              len(video_frames_expected), len(video_frames)
          )
          for video_id in video_frames_expected:
              self.assertEqual(
                  video_frames[video_id],
                  video_frames_expected[video_id],
              )
  
file_path: pytorchvideo/tests/test_data_epic_kitchen_utils.py
imports: import os
  import tempfile
  import unittest
  import unittest.mock
  from pathlib import Path
  from pytorchvideo.data.dataset_manifest_utils import EncodedVideoInfo, VideoFrameInfo
  from pytorchvideo.data.epic_kitchen.utils import build_encoded_manifest_from_nested_directory, build_frame_manifest_from_flat_directory, build_frame_manifest_from_nested_directory
label_desc: Use image node_id 4 for calling the TestEpicKitchenUtils obj's underlying member method code with example usage: obj.test_build_frame_manifest_from_nested_directory(multithreading) without return types