o
    i!                     @   s  d dl mZ d dlmZmZ d dlZd dlZd dlm	Z	 d dl
mZmZmZ d dlmZ eeZdejded	ejfd
dZ		ddejdedededee dee d	ejfddZdejd	ejfddZdejded	eejejf fddZddejdeded	ejfddZdS )    )Fraction)OptionalTupleN)	get_dtype)AudioFormatAudioLayoutDtype)
get_loggerndarraydtypereturnc                 C   s"  t dd | jD r| S | j}t|}|jdkr||kr| S |jdkrE|  |  }}|dk s5|dkrDtd||| t	| dd} n%| 
tj} |jdkr]| t|j d d	 } n|jd
krj| t|j } |jdv rtt|j}|jdkr| d	 d | } n| | } tj| |dS )Nc                 s   s    | ]}|d kV  qdS )r   N ).0dimr   r   E/home/ubuntu/.local/lib/python3.10/site-packages/audiolab/av/frame.py	<genexpr>   s    zclip.<locals>.<genexpr>fg      g      ?z.Cliping %s ndarray from: %g ~ %g to -1.0 ~ 1.0u      i)r   r   g      ?)r   )anyshaper   npkindminmaxloggerwarningclipastypefloat64iinfoasarray)r
   r   	src_dtype	dst_dtype	min_value	max_valuer   r   r   r      s.   





r   formatlayoutratepts	time_basec                 C   s   t | } t|trt|}|jr| jdd} t|tr#t	|}t
|}t| |} t | } tj| |j|}||_|d urD||_|d urK||_|S )Nr   )r   
atleast_2d
isinstancestravr   	is_packedTreshaper   r   r   ascontiguousarray
AudioFramefrom_ndarraynamer*   r+   r,   )r
   r(   r)   r*   r+   r,   r   framer   r   r   r7   9   s"   






r7   r9   c                 C   s&   |   }| jjr|d| jjj}|S )Nr-   )
to_ndarrayr(   r2   r4   r)   nb_channelsr3   )r9   r
   r   r   r   r:   V   s   r:   offsetc                 C   s   |dkrd | fS || j kr| d fS t| }|d d d |f |d d |d f }}| jjr=|jdd|jdd}}tj|| jj	| j
}tj|| jj	| j
}| j| j|_|_| jd url| j| j| |_|_| jd urz| j| j|_|_||fS )Nr   r   r-   )samplesr:   r(   r2   r3   r4   r1   r6   r7   r8   r)   r*   r+   r,   )r9   r<   r
   leftrightr   r   r   split_audio_frame_   s    
*

r@   
frame_size
fill_valuec                 C   s^   || j | jdkr
dnd  }|dkr| S | jdkr#tj| d|f|dS tj| dd|ff|dS )Nr   r   )constant_values)r   r   )r   ndimr   pad)r9   rA   rB   
pad_neededr   r   r   rE   t   s   
rE   )NN)r   )	fractionsr   typingr   r   r1   numpyr   audiolab.av.formatr   audiolab.av.typingr   r   r   audiolab.av.utilsr	   __name__r   r
   r   intr6   r7   r:   r@   floatrE   r   r   r   r   <module>   s:   "
$	$