
    AVh+                         d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ  ed	      e	j                  dd              Zy
)z8Signal reconstruction via overlapped addition of frames.    )dtypes)ops)tensor_util)	array_ops)math_ops)dispatch)	tf_exportzsignal.overlap_and_addNc                    t        j                  |d| |g      5  t        j                  | d      } | j                  j	                  d       t        j                  |d      }|j                  j                  d       |j                  j                  st        d|j                  z        t        j                  |      }|du}|r|n|}t        j                  |       }t        j                  |      }||}|dd	 t        j                        }t        j                  |      }||}fd
}	|d   }
|d	   }|
||dz
  z  z   }|rf| j                  j                  P|| j                  j                  d   j                  k(  r* |	|g      }t        j                  | |d      cddd       S |
 |z   }d|gd||z  |
z
  gg}t        j                   |dgt"        j$                        }t        j&                  ||gd      }t        j(                  | |      }  |	||z   ||g      }t        j                  | |      } t        j&                  t+        j,                  |      |g dz   gd      }t        j                  |      }||n|}t        j.                  | |      }  |	||z   |z  |g      }t        j                  | |      } | dd||z   dz
  |z  ddf   }  |	|||z   dz
  |g      }t        j                  | |      } t+        j0                  | d      }  |	||z   dz
  |z  g      }t        j                  | |      } | dd|f   } | cddd       S # 1 sw Y   yxY w)a_  Reconstructs a signal from a framed representation.

  Adds potentially overlapping frames of a signal with shape
  `[..., frames, frame_length]`, offsetting subsequent frames by `frame_step`.
  The resulting tensor has shape `[..., output_size]` where

      output_size = (frames - 1) * frame_step + frame_length

  Args:
    signal: A [..., frames, frame_length] `Tensor`. All dimensions may be
      unknown, and rank must be at least 2.
    frame_step: An integer or scalar `Tensor` denoting overlap offsets. Must be
      less than or equal to `frame_length`.
    name: An optional name for the operation.

  Returns:
    A `Tensor` with shape `[..., output_size]` containing the overlap-added
    frames of `signal`'s inner-most two dimensions.

  Raises:
    ValueError: If `signal`'s rank is less than 2, or `frame_step` is not a
      scalar integer.
  overlap_and_addsignal)name   
frame_stepr   z%frame_step must be an integer. Got %sNc                 4    t        j                  | gd      S )Nr   )r   concat)inner_shapeouter_dimensionss    _/home/dcms/DCMS/lib/python3.12/site-packages/tensorflow/python/ops/signal/reconstruction_ops.py
full_shapez#overlap_and_add.<locals>.full_shapeM   s    /=qAA       	fast_path)r   r   r   .)r   
name_scopeconvert_to_tensorshapewith_rank_at_leastassert_has_rankdtype
is_integer
ValueErrorr   constant_valuer   sizedimsvaluereshapezerosr   int32r   padr   range	transpose
reduce_sum)r   r   r   frame_step_staticframe_step_is_staticsignal_shapesignal_shape_static
outer_rankouter_rank_staticr   frame_lengthframesoutput_lengthoutput_shapesegmentspaddingsouter_paddingsr   permperm_staticr   s                       @r   r   r      s   4 ~~d-
/CD o""69F
LL##A&&&zEJ$$Q'&&>!''( ) )#22:>,D8&:"
J??6*L%44\B&(l $CR( 01J#22:>$$jB  #L"F !:!#<<M 	!2!2!>fll''+1110lv|+FOo od *,-H H8j#8<#GHIH__j!_fllCN :A>H]]68,F )8Z@AEvu-F 	
	#Z)%;<aAD,,T2K%1;tD  .F (*h6
CDEvu-F C<6H,q0H<<a?@F 6H#4q#8:FGEvu-F   ,F (*Q.*<=>Evu-F C-'(F_o o os   FM0FMM)N)__doc__tensorflow.python.frameworkr   r   r   tensorflow.python.opsr   r   tensorflow.python.utilr    tensorflow.python.util.tf_exportr	   add_dispatch_supportr    r   r   <module>rE      sI    ? . + 3 + * + 6 #$	G  %Gr   