
    rh&3                         S SK Jr  S SK Jr  S SKrS SKr S SK	J
r
  S SKJr   " S S\5      rS rS	 rS
 rS-S jrS rS-S jrS-S jrS-S jrS-S jrS-S jrS-S jrS rS rS rS rS rS rS rS r S r!S r"S r#S r$S r%S  r&S! r'S" r(S# r)S$ r*S% r+S.S& jr,S' r-S( r.S) r/S* r0S+ r1S, r2g! \ a    S SKJr  S SKJr   Nf = f! \ a	    S SKJ
r
   Nf = f)/    )max)minN)gcd)create_string_bufferc                       \ rS rSrSrg)error    N)__name__
__module____qualname____firstlineno____static_attributes__r
       I/home/james-whalen/.local/lib/python3.13/site-packages/pydub/pyaudioop.pyr   r      s    r   r   c                 B    U S:w  a  U S:w  a  U S:w  a  [        S5      eg g g )N         zSize should be 1, 2 or 4)r   )sizes    r   _check_sizer      s*    qyTQY419.// $-Yyr   c                 @    [        U5        X-  S:w  a  [        S5      eg )Nr   not a whole number of frames)r   r   )lengthr   s     r   _check_paramsr      s%    }233 r   c                     [        U 5      U-  $ N)lencpr   s     r   _sample_countr!      s    r7T>r   c              #   ^   #    [        [        X5      5       H  n[        XX25      v   M     g 7fr   )ranger!   _get_sample)r    r   signedis       r   _get_samplesr'   #   s&     =*+"A.. ,s   +-c                 j    U S:X  a  U(       a  S$ S$ U S:X  a  U(       a  S$ S$ U S:X  a  U(       a  S$ S	$ g )
Nr   bBr   hHr   r&   Ir
   r   r%   s     r   _struct_formatr/   (   sC    qys%#%	s%#%	s%#% 
r   c                 r    [        X5      nX!-  nXQ-   n[        R                  " U[        U 5      XV 5      S   $ Nr   )r/   structunpack_frombuffer)r    r   r&   r%   fmtstartends          r   r$   r$   1   s;    

&CHE
,Cc6":e#89!<<r   c                 N    [        X5      n[        R                  " XPX!-  U5        g r   )r/   r2   	pack_into)r    r   r&   valr%   r5   s         r   _put_sampler;   8   s     

&C
Sah,r   c                     U(       a  U S:X  a  gU S:X  a  gU(       a  U S:X  a  gU S:X  a  gU(       a  U S:X  a  gU S:X  a  g	g )
Nr         r   i  i  r   il    r
   r.   s     r   _get_maxvalr?   =   sI    $!)		DAI		DAI	 
r   c                 >    U(       d  gU S:X  a  gU S:X  a  gU S:X  a  gg )Nr   r   ir   i r   i   r
   r.   s     r   _get_minvalrA   L   s+    			 
r   c                 @   ^^ [        X5      m[        X5      mUU4S j$ )Nc                 0   > [        [        U T5      T5      $ r   )builtin_maxr   )r:   maxvalminvals    r   <lambda>_get_clipfn.<locals>.<lambda>Z   s    {3sF#3V<r   )r?   rA   )r   r%   rE   rF   s     @@r   _get_clipfnrI   W   s    &F&F<<r   c                     [        X5      n[        X5      nX0s=::  a  U::  a   U $   US-  nU(       a  SUS-
  -  nX-   SU-  -  U-
  $ U SU-  -  $ )N   r   r   )rA   r?   )r:   r   r%   rF   rE   bitsoffsets          r   	_overflowrN   ]   sj    &F&F
  !8DT!V!T'*f44agr   c                     [        [        U 5      U5        SUs=::  a  [        U 5      U-  :  d  O  [        S5      e[        XU5      $ )Nr   zIndex out of range)r   r   r   r$   )r    r   r&   s      r   	getsamplerP   k   s>    #b'4 #SWt^#())r##r   c                     [        [        U 5      U5        [        U 5      S:X  a  g[        S [        X5       5       5      $ )Nr   c              3   8   #    U  H  n[        U5      v   M     g 7fr   )abs.0samples     r   	<genexpr>max.<locals>.<genexpr>x   s     H1Gvs6{{1Gs   )r   r   rD   r'   r   s     r   r   r   r   s4    #b'4 
2w!|Hb1GHHHr   c                     [        [        U 5      U5        Su  p#[        X5       H  n[        XB5      n[	        XC5      nM     X24$ )N)r   r   )r   r   r'   rD   builtin_min)r    r   
max_sample
min_samplerV   s        r   minmaxr]   {   sF    #b'4 !Jr( 4
 4
 ) !!r   c                 ~    [        [        U 5      U5        [        X5      nUS:X  a  g[        [	        X5      5      U-  $ r1   )r   r   r!   sumr'   )r    r   sample_counts      r   avgra      s:    #b'4  *Lq|B%&55r   c                     [        [        U 5      U5        [        X5      nUS:X  a  g[        S [	        X5       5       5      n[        [        R                  " X2-  5      5      $ )Nr   c              3   *   #    U  H	  oS -  v   M     g7f)r   Nr
   rT   s     r   rW   rms.<locals>.<genexpr>   s     E.DFai.Ds   )r   r   r!   r_   r'   intmathsqrt)r    r   r`   sum_squaress       r   rmsri      sQ    #b'4  *LqEl2.DEEKtyy3455r   c                 j    SnSn[        U5       H  nU[        XU5      [        XU5      -  -  nM!     U$ )Nr   r   )r#   rP   )cp1cp2r   r   totalr&   s         r   _sum2rn      s<    DE6]3a(9S+BBB Lr   c                 j   Sn[        U 5      S-  S:w  d  [        U5      S-  S:w  a  [        S5      e[        U 5      [        U5      :  a  [        S5      e[        X5      n[        X5      n[        XU5      n[        X U5      n[        XU5      nXV-  Xw-  -
  U-  nUn	Sn
[	        SX4-
  S-   5       Ha  n[        XUS-
  5      n[        XX-   S-
  5      nXmS-  US-  -
  -  n[        [        U 5      X-  S  X5      nXV-  Xw-  -
  U-  nX:  d  M]  Un	Un
Mc     [        [        U 5      X-  S  X5      U-  nX4$ )Nr   r   Strings should be even-sizedzFirst sample should be longerr   )r   r   r!   rn   r#   r$   r4   )rk   rl   r   len1len2sum_ri_2	sum_aij_2
sum_aij_riresultbest_resultbest_ir&   aj_m1aj_lm1factors                  r   findfitr|      sY   D
3x!|qCHqLA-233
3x#c(344#D#DSt$Hc%Is&J"Z%<<	IFKF1dkAo&Cq1u-S15QY))	6#;qvw/;
&)@@IM KF ' 6#;v{|,c88CF>r   c                     Sn[        U 5      S-  S:w  a  [        S5      e[        U 5      [        U5      :w  a  [        S5      e[        X5      n[        XU5      n[        XU5      nXT-  $ )Nr   r   rp   zSamples should be same size)r   r   r!   rn   )rk   rl   r   r`   rs   ru   s         r   
findfactorr~      sj    D
3x!|q233
3x3s8122 +LS|,Hs.J  r   c                 V   Sn[        X5      n[        U 5      S-  S:w  a  [        S5      eUS:  d  X1:  a  [        S5      eUS:X  a  g[        X U5      nUnSn[	        SX1-
  S-   5       H<  n[        XUS-
  5      n[        XXq-   S-
  5      n	XHS-  -  nXIS-  -  nXE:  d  M8  UnUnM>     U$ )Nr   r   rp   zInput sample should be longerr   )r!   r   r   rn   r#   rP   )
r    rr   r   r`   rv   rw   rx   r&   sample_leaving_windowsample_entering_windows
             r   findmaxr      s    D *L
2w{a233ax<&344q24 FKF1l)A-. )"AE :!*2QX\!B**!++ KF / Mr   c                 N   [        [        U 5      U5        [        X5      nSnS nSnSn[        XS5      n[        XS5      nX-
  n	[	        SU5       HG  n
[        XU
5      nX-
  nX-  S:  a   U(       a  U[        Xt-
  5      -  nUS-  nSnUnUnUS:w  d  ME  Un	MI     US:X  a  gXV-  $ NFr   r   Tr   r   r!   rP   r#   rS   )r    r   r`   prevextremevalidprevextremera   nextremeprevvalr:   prevdiffr&   diffs               r   avgppr      s    #b'4  *LK
CH!$G
Ba
 C}H1l#!$}?Qs7011A#!K19H $  1}>r   c                 6   [        [        U 5      U5        [        X5      nSnS nSn[        XS5      n[        XS5      nXv-
  n[	        SU5       HF  n	[        XU	5      nXv-
  n
X-  S:  a  U(       a  [        Xd-
  5      nX:  a  UnSnUnUnU
S:w  d  MD  U
nMH     U$ r   r   )r    r   r`   r   r   r   r   r:   r   r&   r   extremediffs               r   maxppr     s    #b'4  *LK
C!$G
Ba
 C}H1l#!$}?Q!'"78$%C#!K19H $  Jr   c                     [        [        U 5      U5        SnSn[        X5       H)  nUSs=::  a  U:  d  O  USs=:  a  U:  a  O  OUS-  nUnM+     U$ )Nr   r   )r   r   r'   )r    r   	crossingslast_samplerV   s        r   crossr   <  sX    #b'4 IKr(Q$$!(Ak(ANI )
 r   c                     [        [        U 5      U5        [        U5      n[        [        U 5      5      n[	        [        X5      5       H$  u  pVU" [        Xb-  5      5      n[        XAXV5        M&     UR                  $ r   )	r   r   rI   r   	enumerater'   re   r;   raw)r    r   r{   cliprv   r&   rV   s          r   mulr   I  se    #b'4 tD!#b'*F|B56	c&/*+F!, 7 ::r   c                 >   [        [        U 5      U5        [        U5      n[        X5      n[	        [        U 5      S-  5      n[        SUS5       H?  n[        XU5      n[        XUS-   5      n	X-  X-  -   n
U" U
5      n
[        XaUS-  U
5        MA     UR                  $ )Nr   r   r   )	r   r   rI   r!   r   r#   rP   r;   r   )r    r   fac1fac2r   r`   rv   r&   l_sampler_samplerV   s              r   tomonor   V  s    #b'4 tD *L!#b'A+.F1lA&Rq)Rq1u-/ho6fF!a%0 ' ::r   c                 H   [        [        U 5      U5        [        X5      n[        [        U 5      S-  5      n[	        U5      n[        U5       HF  n[        XU5      nU" X-  5      n	U" X-  5      n
[        XQUS-  U	5        [        XQUS-  S-   U
5        MH     UR                  $ )Nr   r   )	r   r   r!   r   rI   r#   r$   r;   r   )r    r   r   r   r`   rv   r   r&   rV   r   r   s              r   tostereor   j  s    #b'4  *L!#b'A+.FtD< Rq)&&F!a%2F!a%!)X6 ! ::r   c                 ^   [        [        U 5      U5        [        U 5      [        U5      :w  a  [        S5      e[        U5      n[	        X5      n[        [        U 5      5      n[        U5       H1  n[        XU5      n[        XU5      nU" Xx-   5      n	[        XRXi5        M3     UR                  $ )NzLengths should be the same)
r   r   r   rI   r!   r   r#   rP   r;   r   )
rk   rl   r   r   r`   rv   r&   sample1sample2rV   s
             r   addr   ~  s    #c(D!
3x3s8011tD +L!#c(+F< Cq)Cq)g'(F!, ! ::r   c                     [        [        U 5      U5        [        [        U 5      5      n[        [	        X5      5       H  u  pE[        XR-   U5      n[        X1XE5        M!     UR                  $ r   )r   r   r   r   r'   rN   r;   r   )r    r   biasrv   r&   rV   s         r   r   r     sX    #b'4 !#b'*F|B56	6=$/F!, 7 ::r   c                     [        [        U 5      U5        [        X5      n[        [        U 5      5      n[	        [        X5      5       H  u  pE[        X1X$-
  S-
  U5        M     UR                  $ )Nr   )r   r   r!   r   r   r'   r;   r   )r    r   r`   rv   r&   rV   s         r   reverser     s^    #b'4  *L!#b'*F|B56	F,"2Q"6? 7 ::r   c                 ^   [        [        U 5      U5        [        U5        X:X  a  U $ [        U 5      U-  U-  n[        U5      n[	        [        X5      5       HG  n[        XU5      nX:  a  USU-  U-  -  nOX:  a  USU-  U-  -	  n[        Xb5      n[        XBXV5        MI     UR                  $ )Nr   )
r   r   r   r   r#   r!   r$   rN   r;   r   )r    r   size2new_lenrv   r&   rV   s          r   lin2linr     s    #b'4 }	2w~&G!'*F=*+Rq)<E	D 01F\D5 01F6)F1- , ::r   c           
      F   [        [        U 5      U5        US:  a  [        S5      eX-  n[        U 5      U-  n	X-  U:w  a  [        S5      eUS:  d  US:  a  [        S5      e[        U 5      U-  S:w  a  [        S5      eUS::  d  US::  a  [        S5      e[	        X45      n
X:-  nXJ-  nS/U-  nS/U-  nUc  U* n
O=Uu  p[        U5      U:w  a  [        S5      e[        U6 u  p[        U5      [        U5      pX-  nUS-   U-  nX-  n[        U5      n[        X5      nSn U
S:  a  U	S:X  aE  [        X5      nUR                  nUU-  [        U5      -
  n[        U5      S U nUU
[        U5      44$ [        U5       H5  nUU   UU'   UR                  5       UU'   XlU   -  X{U   -  -   Xg-   -  UU'   M7     U	S-  n	X-  n
U
S:  a  M  U
S:  aQ  [        U5       H6  nUU   U
-  UU   XJ-
  -  -   U-  n[        UUU[        UU5      5        US-  nM8     X-  n
U
S:  a  MQ  GM   )	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   r4   tupler#   nextr;   rN   )r    r   	nchannelsinrateoutratestateweightAweightBbytes_per_frameframe_countdprev_icur_isampsqceilingnbytesrv   samplesout_iretval
trim_indexchancur_os                           r   ratecvr     s   #b'4 1}233&Ob'O+K"d*CDD{gkDEE
2w A%233{gl+,,FA
KFLGS9_FC)OE}Hu:"011UVd5kA1uG&F!&)F2$GE
!eaF* $o5VD
4E%L 122i($T{t%llnd T{*Wd|-CC(* d	 ) 1KLA+ !e. 1fi(D\A%dw{(CC  FD%5$1GH
 ) KA 1f1 r   c                     [        5       er   NotImplementedErrorr   s     r   lin2ulawr         

r   c                     [        5       er   r   r   s     r   ulaw2linr     r   r   c                     [        5       er   r   r   s     r   lin2alawr     r   r   c                     [        5       er   r   r   s     r   alaw2linr      r   r   c                     [        5       er   r   r    r   r   s      r   	lin2adpcmr   $  r   r   c                     [        5       er   r   r   s      r   	adpcm2linr   (  r   r   )T)r   r   )3__builtin__r   rD   r   rZ   ImportErrorbuiltinsrf   r2   	fractionsr   ctypesr   	Exceptionr   r   r   r!   r'   r/   r$   r;   r?   rA   rI   rN   rP   r]   ra   ri   rn   r|   r~   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. C .CCCC