code: def compute_video_metrics_from_png_files(
      output_dirs, problem_name, video_length, frame_shape):
    
    ssim_all_decodes, psnr_all_decodes = [], []
    for output_dir in output_dirs:
      output_files, target_files = get_target_and_output_filepatterns(
          output_dir, problem_name)
      args = get_zipped_dataset_from_png_files(
          output_files, target_files, video_length, frame_shape)
      psnr_single, ssim_single = compute_one_decoding_video_metrics(*args)
      psnr_all_decodes.append(psnr_single)
      ssim_all_decodes.append(ssim_single)
  
    psnr_all_decodes = np.array(psnr_all_decodes)
    ssim_all_decodes = np.array(ssim_all_decodes)
    all_results = {"PSNR": psnr_all_decodes, "SSIM": ssim_all_decodes}
    return compute_all_metrics_statistics(all_results)
docs: Computes the average of all the metric for one decoding.
  
    This function assumes that all the predicted and target frames
    have been saved on the disk and sorting them by name will result
    to consecutive frames saved in order.
  
    Args:
      output_dirs: directory with all the saved frames.
      problem_name: prefix of the saved frames usually name of the problem.
      video_length: length of the videos.
      frame_shape: shape of each frame in HxWxC format.
  
    Returns:
      Dictionary which contains the average of each metric per frame.