
    v;3h&3                        	 d dl mZ d dl mZ d dlZd dlZ	 d dl	m
Z
 d dlmZ  G d de      Zd Zd	 Zd
 Zd-dZd Zd-dZd-dZd-dZd-dZd-dZd-dZd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d  Z&d! Z'd" Z(d# Z)d$ Z*d% Z+d.d&Z,d' Z-d( Z.d) Z/d* Z0d+ Z1d, Z2y# e$ r d dlmZ d dlmZ Y w xY w# e$ r	 d dlm
Z
 Y w xY w)/    )max)minN)gcd)create_string_bufferc                       e Zd Zy)errorN)__name__
__module____qualname__     O/var/www/html/audio-gradio/venv/lib/python3.12/site-packages/pydub/pyaudioop.pyr   r      s    r   r   c                 <    | dk7  r| dk7  r| dk7  rt        d      y y y )N         zSize should be 1, 2 or 4)r   )sizes    r   _check_sizer      s*    qyTQY419.// $-Yyr   c                 @    t        |       | |z  dk7  rt        d      y )Nr   not a whole number of frames)r   r   )lengthr   s     r   _check_paramsr      s'    }233 r   c                     t        |       |z  S N)lencpr   s     r   _sample_countr      s    r7T>r   c              #   `   K   t        t        | |            D ]  }t        | |||        y wr   )ranger   _get_sample)r   r   signedis       r   _get_samplesr$   #   s2     =T*+ /"dAv../s   ,.c                 F    | dk(  r|rdS dS | dk(  r|rdS dS | dk(  r|rdS d	S y )
Nr   bBr   hHr   r#   Ir   r   r"   s     r   _struct_formatr,   (   sC    qys%#%	s%#%	s%#% 
r   c                 x    t        ||      }||z  }||z   }t        j                  |t        |       ||       d   S Nr   )r,   structunpack_frombuffer)r   r   r#   r"   fmtstartends          r   r!   r!   1   sC    
v
&CHE
$,Cc6":eC#89!<<r   c                 R    t        ||      }t        j                  || ||z  |       y r   )r,   r/   	pack_into)r   r   r#   valr"   r2   s         r   _put_sampler8   8   s&    
v
&C
S"a$h,r   c                 X    |r| dk(  ry| dk(  ry|r| dk(  ry| dk(  ry|r| dk(  ry| dk(  ry	y )
Nr         r   i  i  r   il    r   r+   s     r   _get_maxvalr<   =   sI    $!)		DAI		DAI	 
r   c                 .    |sy| dk(  ry| dk(  ry| dk(  ryy )Nr   r   ir   i r   i   r   r+   s     r   _get_minvalr>   L   s+    			 
r   c                 B    t        | |      t        | |      fdS )Nc                 0    t        t        |             S r   )builtin_maxr   )r7   maxvalminvals    r   <lambda>z_get_clipfn.<locals>.<lambda>Z   s    {3sF#3V< r   )r<   r>   )r   r"   rB   rC   s     @@r   _get_clipfnrE   W   s!    v&Fv&F<<r   c                     t        ||      }t        ||      }|| cxk  r|k  r| S  |dz  }|rd|dz
  z  }| |z   d|z  z  |z
  S | d|z  z  S )N   r   r   )r>   r<   )r7   r   r"   rC   rB   bitsoffsets          r   	_overflowrJ   ]   sr    v&Fv&F
  !8DT!Vv!T'*f44agr   c                     t        t        |       |       d|cxk  rt        |       |z  k  st        d       t        d      t        | ||      S )Nr   zIndex out of range)r   r   r   r!   )r   r   r#   s      r   	getsamplerL   k   sQ    #b'4 #SWt^#()) $())r4##r   c                     t        t        |       |       t        |       dk(  ryt        d t        | |      D              S )Nr   c              3   2   K   | ]  }t        |        y wr   )abs.0samples     r   	<genexpr>zmax.<locals>.<genexpr>x   s     Hvs6{Hs   )r   r   rA   r$   r   s     r   r   r   r   s6    #b'4 
2w!|Hb$1GHHHr   c                     t        t        |       |       d\  }}t        | |      D ]  }t        ||      }t	        ||      } ||fS )N)r   r   )r   r   r$   rA   builtin_min)r   r   
max_sample
min_samplerR   s        r   minmaxrX   {   sU    #b'4 !J
r4( 5 4
 4
5 z!!r   c                     t        t        |       |       t        | |      }|dk(  ryt        t	        | |            |z  S r.   )r   r   r   sumr$   )r   r   sample_counts      r   avgr\      s>    #b'4  T*Lq|B%&55r   c                     t        t        |       |       t        | |      }|dk(  ryt        d t	        | |      D              }t        t        j                  ||z              S )Nr   c              3   &   K   | ]	  }|d z    yw)r   Nr   rP   s     r   rS   zrms.<locals>.<genexpr>   s     EFfaiEs   )r   r   r   rZ   r$   intmathsqrt)r   r   r[   sum_squaress       r   rmsrc      sW    #b'4  T*LqEl2t.DEEKtyy|3455r   c                 j    d}d}t        |      D ]   }|t        | ||      t        |||      z  z  }" |S )Nr   r   )r    rL   )cp1cp2r   r   totalr#   s         r   _sum2rh      sG    DE6] C3a(9S$+BBBCLr   c                    d}t        |       dz  dk7  st        |      dz  dk7  rt        d      t        |       t        |      k  rt        d      t        | |      }t        ||      }t        |||      }t        | | |      }t        | ||      }||z  ||z  z
  |z  }|}	d}
t	        d||z
  dz         D ]g  }t        | ||dz
        }t        | |||z   dz
        }||dz  |dz  z
  z  }t        t        |       ||z  d  ||      }||z  ||z  z
  |z  }||	k  sd|}	|}
i t        t        |       |
|z  d  ||      |z  }|
|fS )Nr   r   Strings should be even-sizedzFirst sample should be longerr   )r   r   r   rh   r    r!   r1   )re   rf   r   len1len2sum_ri_2	sum_aij_2
sum_aij_riresultbest_resultbest_ir#   aj_m1aj_lm1factors                  r   findfitrv      s   D
3x!|qCHqLA-233
3x#c(344d#Dd#DS#t$Hc3%IsC&J"Z*%<<	IFKF1dTkAo& Cq1u-S$D15VQY))	6#;qvw/d;
Y&j)@@IMK KF 6#;vd{|,c488CF6>r   c                     d}t        |       dz  dk7  rt        d      t        |       t        |      k7  rt        d      t        | |      }t        |||      }t        | ||      }||z  S )Nr   r   rj   zSamples should be same size)r   r   r   rh   )re   rf   r   r[   rm   ro   s         r   
findfactorrx      sr    D
3x!|q233
3x3s8122 d+LS#|,HsC.J  r   c                 Z   d}t        | |      }t        |       dz  dk7  rt        d      |dk  s||k  rt        d      |dk(  ryt        | | |      }|}d}t	        d||z
  dz         D ]?  }t        | ||dz
        }t        | |||z   dz
        }	||dz  z  }||	dz  z  }||kD  s<|}|}A |S )Nr   r   rj   zInput sample should be longerr   )r   r   r   rh   r    rL   )
r   rl   r   r[   rp   rq   rr   r#   sample_leaving_windowsample_entering_windows
             r   findmaxr|      s    D T*L
2w{a233ax<$&344q2r4 FKF1lT)A-. 	 )"dAE :!*2tQX\!B'**(!++K KF	 Mr   c                 J   t        t        |       |       t        | |      }d}d }d}d}t        | |d      }t        | |d      }||z
  }	t	        d|      D ]B  }
t        | ||
      }||z
  }||	z  dk  r|r|t        ||z
        z  }|dz  }d}|}|}|dk7  sA|}	D |dk(  ry||z  S NFr   r   Tr   r   r   rL   r    rO   )r   r   r[   prevextremevalidprevextremer\   nextremeprevvalr7   prevdiffr#   diffs               r   avgppr      s    #b'4  T*LK
CHD!$G
Ba
 CW}H1l# D!$W}(?Qs7[011A#!K19H  1}>r   c                 2   t        t        |       |       t        | |      }d}d }d}t        | |d      }t        | |d      }||z
  }t	        d|      D ]A  }	t        | ||	      }||z
  }
|
|z  dk  r|rt        ||z
        }||kD  r|}d}|}|}|
dk7  s@|
}C |S r~   r   )r   r   r[   r   r   r   r   r7   r   r#   r   extremediffs               r   maxppr     s    #b'4  T*LK
CD!$G
Ba
 CW}H1l# D!$W}(?Q!'K"78$%C#!K19H  Jr   c                     t        t        |       |       d}d}t        | |      D ]$  }|dcxk  r|k  sn |dcxk\  r|kD  rn n|dz  }|}& |S )Nr   r   )r   r   r$   )r   r   	crossingslast_samplerR   s        r   crossr   <  s_    #b'4 IKr4( Q$$!(Ak(ANI
 r   c                     t        t        |       |       t        |      }t        t        |             }t	        t        | |            D ]'  \  }} |t        ||z              }t        ||||       ) |j                  S r   )	r   r   rE   r   	enumerater$   r_   r8   raw)r   r   ru   cliprp   r#   rR   s          r   mulr   I  st    #b'4 tD!#b'*F|B56 -	6c&6/*+FD!V,- ::r   c                 F   t        t        |       |       t        |      }t        | |      }t	        t        |       dz        }t        d|d      D ]C  }t        | ||      }t        | ||dz         }	||z  |	|z  z   }
 ||
      }
t        |||dz  |
       E |j                  S )Nr   r   r   )	r   r   rE   r   r   r    rL   r8   r   )r   r   fac1fac2r   r[   rp   r#   l_sampler_samplerR   s              r   tomonor   V  s    #b'4 tD T*L!#b'A+.F1lA& 1Rq)Rq1u-T/ho6fFD!a%01 ::r   c                 P   t        t        |       |       t        | |      }t        t        |       dz        }t	        |      }t        |      D ]J  }t        | ||      } |||z        }	 |||z        }
t        |||dz  |	       t        |||dz  dz   |
       L |j                  S )Nr   r   )	r   r   r   r   rE   r    r!   r8   r   )r   r   r   r   r[   rp   r   r#   rR   r   r   s              r   tostereor   j  s    #b'4  T*L!#b'A+.FtD<  7Rq)&&FD!a%2FD!a%!)X67 ::r   c                 d   t        t        |       |       t        |       t        |      k7  rt        d      t        |      }t	        | |      }t        t        |             }t        |      D ]5  }t        | ||      }t        |||      } |||z         }	t        ||||	       7 |j                  S )NzLengths should be the same)
r   r   r   rE   r   r   r    rL   r8   r   )
re   rf   r   r   r[   rp   r#   sample1sample2rR   s
             r   addr   ~  s    #c(D!
3x3s8011tD d+L!#c(+F<  -Cq)Cq)g'(FD!V,- ::r   c                     t        t        |       |       t        t        |             }t        t	        | |            D ]"  \  }}t        ||z   |      }t        ||||       $ |j                  S r   )r   r   r   r   r$   rJ   r8   r   )r   r   biasrp   r#   rR   s         r   r   r     sg    #b'4 !#b'*F|B56 -	66D=$/FD!V,- ::r   c                     t        t        |       |       t        | |      }t        t        |             }t	        t        | |            D ]  \  }}t        ||||z
  dz
  |        |j                  S )Nr   )r   r   r   r   r   r$   r8   r   )r   r   r[   rp   r#   rR   s         r   reverser     so    #b'4  T*L!#b'*F|B56 @	6FD,"2Q"6?@ ::r   c                 d   t        t        |       |       t        |       ||k(  r| S t        |       |z  |z  }t        |      }t	        t        | |            D ]J  }t        | ||      }||k  r|d|z  |z  z  }n||kD  r|d|z  |z  z	  }t        ||      }t        ||||       L |j                  S )Nr   )
r   r   r   r   r    r   r!   rJ   r8   r   )r   r   size2new_lenrp   r#   rR   s          r   lin2linr     s    #b'4 u}	2w~&G!'*F=T*+ 	.Rq)%<E	D 01FE\D5 01F65)FE1f-	. ::r   c           
      >   t        t        |       |       |dk  rt        d      ||z  }t        |       |z  }	||z  |k7  rt        d      |dk  s|dk  rt        d      t        |       |z  dk7  rt        d      |dk  s|dk  rt        d      t	        ||      }
||
z  }||
z  }dg|z  }dg|z  }|| }
n?|\  }
}t        |      |k7  rt        d      t        | \  }}t        |      t        |      }}|	|z  }|dz   |z  }||z  }t        |      }t        | |      }d}	 |
dk  r|	dk(  rFt        ||      }|j                  }||z  t        |      z
  }t        |      d | }||
t        |      ffS t        |      D ]7  }||   ||<   |j                         ||<   |||   z  |||   z  z   ||z   z  ||<   9 |	dz  }	|
|z  }
|
dk  r|
dk\  rOt        |      D ]6  }||   |
z  ||   ||
z
  z  z   |z  }t        |||t        ||             |dz  }8 |
|z  }
|
dk\  rO)	Nr   z# of channels should be >= 1z%width * nchannels too big for a C intr   z.weightA should be >= 1, weightB should be >= 0r   zsampling rate not > 0zillegal state argument)r   r   r   OverflowErrorr   ziplistr   r$   r   r1   tupler    nextr8   rJ   )r   r   	nchannelsinrateoutratestateweightAweightBbytes_per_frameframe_countdprev_icur_isampsqceilingnbytesrp   samplesout_iretval
trim_indexchancur_os                           r   ratecvr     s   #b'4 1}233Y&Ob'O+K"d*CDD{gkDEE
2w A%233{gl+,,FGA
aKFqLGS9_FC)OE}H5u:"011UVd5kfA1uG&F!&)F2t$GE
!eaFE* $o5VD
4E%L 122i( $T{t%llnd uT{*Wvd|-CC(* d	 1KLA+ !e. 1fi( D\A%dw{(CC  FD%5$1GH
 KA 1f1 r   c                     t               r   NotImplementedErrorr   s     r   lin2ulawr         

r   c                     t               r   r   r   s     r   ulaw2linr     r   r   c                     t               r   r   r   s     r   lin2alawr     r   r   c                     t               r   r   r   s     r   alaw2linr      r   r   c                     t               r   r   r   r   r   s      r   	lin2adpcmr   $  r   r   c                     t               r   r   r   s      r   	adpcm2linr   (  r   r   )T)r   r   )3__builtin__r   rA   r   rU   ImportErrorbuiltinsr`   r/   	fractionsr   ctypesr   	Exceptionr   r   r   r   r$   r,   r!   r8   r<   r>   rE   rJ   rL   rX   r\   rc   rh   rv   rx   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>r      s  ,..   (	I 	0
4/
&=-
=$I"66$N!">!H@

((*	2Nb      I  ,++,  s"   B& B= &B:9B:=C
C