code: def _calc_oa_lens(s1, s2):
      # See scipy's documentation in scipy.signal._signaltools
  
      # Set up the arguments for the conventional FFT approach.
      fallback = (s1 + s2 - 1, None, s1, s2)
  
      # Use conventional FFT convolve if sizes are same.
      if s1 == s2 or s1 == 1 or s2 == 1:
          return fallback
  
      # Make s1 the larger size
      swapped = s2 > s1
      if swapped:
          s1, s2 = s2, s1
  
      # There cannot be a useful block size if s2 is more than half of s1.
      if s2 >= s1 // 2:
          return fallback
  
      # Compute the optimal block size from the overlap
      overlap = s2 - 1
      block_size = fft.next_fast_len(_optimal_oa_block_size(overlap))
  
      # Use conventional FFT convolve if there is only going to be one block.
      if block_size >= s1:
          return fallback
  
      # Get step size for each of the blocks
      in1_step, in2_step = block_size - s2 + 1, s2
      if swapped:
          in1_step, in2_step = in2_step, in1_step
  
      return block_size, overlap, in1_step, in2_step
  
file_path: cupy/cupyx/scipy/signal/_signaltools_core.py
imports: import math
  import cupy
  from cupy._core import internal
  from cupyx.scipy import fft
  from cupyx.scipy.ndimage import _filters
  from cupyx.scipy.ndimage import _util
label_desc: Use image node_id 10 for calling a global function with example usage: _calc_oa_lens(s1, s2) and returns: block_size,  overlap,  in1_step,  in2_step, fallback, fallback, fallback