
    =Og0H                        	 d dl mZ d dlZ ej        ed            e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eee	e
eegZ G d de          Zd Zd Z G d d          Z G d d          ZddZdS )    )
namedtupleN)      )remove_sunau_paramsz7nchannels sampwidth framerate nframes comptype compnameidns.      r                              l    c                       e Zd ZdS )ErrorN)__name__
__module____qualname__     /usr/lib64/python3.11/sunau.pyr   r      s        Dr   r   c                     d}t          d          D ]5}|                     d          }|st          |dz  t          |          z   }6|S )Nr   r
   r      )rangereadEOFErrorord)filexibytes       r   	_read_u32r%      sS    	A1XX  yy|| 	NcECIIHr   c                     g }t          d          D ]:}t          |d          \  }}|                    dt          |                     |};|                     t          |                     d S )Nr
   r   r   )r   divmodinsertintwritebytes)r!   r"   datar#   dms         r   
_write_u32r/      sl    D1XX  a~~1As1vvJJuT{{r   c                       e 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 Zd ZdS )Au_readc                     t          |          t          d          k    r"dd l}|                    |d          }d| _        nd| _        |                     |           d S )N r   rbTFtypebuiltinsopen_openedinitfpselffr7   s      r   __init__zAu_read.__init__   X    77d2hhOOOa&&ADLL DLAr   c                 @    | j         r|                                  d S d S N_filecloser<   s    r   __del__zAu_read.__del__   s'    : 	JJLLLLL	 	r   c                     | S rA   r   rE   s    r   	__enter__zAu_read.__enter__       r   c                 .    |                                   d S rA   rD   r<   argss     r   __exit__zAu_read.__exit__       

r   c                    || _         d| _        t          t          |                    }|t          k    rt          d          t          t          |                    | _        | j        dk     rt          d          | j        dk    rt          d          t          |          | _        | j        t          k    rt          | j                  | _        t          t          |                    | _	        | j	        t          vrt          d          | j	        t          t          fv rd| _        d	| _        n| j	        t          k    rd	x| _        | _        nl| j	        t           k    rdx| _        | _        nM| j	        t"          k    rd
x| _        | _        n.| j	        t$          k    rdx| _        | _        nt          d          t          t          |                    | _        t          t          |                    | _        | j        st          d          | j        | j        z  | _        | j        dk    rF|                    | j        dz
            | _        | j                            d          \  | _        }}nd| _        	 |                                | _        d S # t4          t6          f$ r d | _        Y d S w xY w)Nr   zbad magic numberr   zheader size too smalld   zheader size ridiculously largezencoding not (yet) supportedr	   r   r   r
   zunknown encodingzbad # of channels    r   )rC   	_soundposr)   r%   AUDIO_FILE_MAGICr   	_hdr_size
_data_sizeAUDIO_UNKNOWN_SIZE	_encoding_simple_encodingsAUDIO_FILE_ENCODING_MULAW_8AUDIO_FILE_ENCODING_ALAW_8
_sampwidth
_framesizeAUDIO_FILE_ENCODING_LINEAR_8AUDIO_FILE_ENCODING_LINEAR_16AUDIO_FILE_ENCODING_LINEAR_24AUDIO_FILE_ENCODING_LINEAR_32
_framerate
_nchannelsr   _info	partitiontell	_data_posAttributeErrorOSError)r<   r!   magic_s       r   r:   zAu_read.initfp   s   
IdOO$$$$$*+++Yt__-->B/000>C8999#D//?000!$/22DOYt__-->!2226777>9,. . .DODOO^;;;011DOdoo^<<<011DOdoo^<<<011DOdoo^<<<011DOdoo*+++ioo..ioo.. 	-+,,,/DO;>B4>B#677DJ#z33E::DJ11DJ	"!YY[[DNNN( 	" 	" 	"!DNNNN	"s   	J$ $K ?K c                     | j         S rA   )rC   rE   s    r   getfpzAu_read.getfp   s
    zr   c                     | j         S rA   )rc   rE   s    r   getnchannelszAu_read.getnchannels   
    r   c                     | j         S rA   )r\   rE   s    r   getsampwidthzAu_read.getsampwidth   rp   r   c                     | j         S rA   )rb   rE   s    r   getframeratezAu_read.getframerate   rp   r   c                 n    | j         t          k    rt          S | j        t          v r| j         | j        z  S dS )Nr   )rV   rW   rX   rY   r]   rE   s    r   
getnframeszAu_read.getnframes   s8    ?000%%>...?do55qr   c                 N    | j         t          k    rdS | j         t          k    rdS dS )NULAWALAWNONErX   rZ   r[   rE   s    r   getcomptypezAu_read.getcomptype   s-    >8886^99966r   c                 N    | j         t          k    rdS | j         t          k    rdS dS )NCCITT G.711 u-lawCCITT G.711 A-lawnot compressedr{   rE   s    r   getcompnamezAu_read.getcompname   s0    >888&&^999&&##r   c           	         t          |                                 |                                 |                                 |                                 |                                 |                                           S rA   r   ro   rr   rt   rv   r|   r   rE   s    r   	getparamszAu_read.getparams  h    T..00$2C2C2E2E##%%t'8'8""$$d&6&6&8&8: : 	:r   c                     d S rA   r   rE   s    r   
getmarkerszAu_read.getmarkers  s    tr   c                      t          d          )Nzno marks)r   )r<   ids     r   getmarkzAu_read.getmark  s    Jr   c                    | j         t          v r|t          k    r| j                                        }n"| j                            || j        z            }| xj        t          |          | j        z  z  c_        | j         t          k    ret          j
                    5  t          j        dt                     dd l}d d d            n# 1 swxY w Y   |                    || j                  }|S d S )Nignorecategoryr   )rX   rY   rW   rC   r   r]   rS   lenrZ   warningscatch_warningssimplefilterDeprecationWarningaudioopulaw2linr\   )r<   nframesr,   r   s       r   
readframeszAu_read.readframes  s   >...,,,z((zw'@AANNc$ii4?::NN~!<<<,.. # #)(=OPPPP"NNN# # # # # # # # # # # # # # # ''do>>Kts    C

CCc                 ~    | j         t          d          | j                            | j                    d| _        d S )Ncannot seekr   )rg   ri   rC   seekrS   rE   s    r   rewindzAu_read.rewind   s9    >!-(((
'''r   c                     | j         S rA   )rS   rE   s    r   rf   zAu_read.tell&  
    ~r   c                     |dk     s||                                  k    rt          d          | j        t          d          | j                            | j        || j        z  z              || _        d S )Nr   zposition not in ranger   )rv   r   rg   ri   rC   r   r]   rS   )r<   poss     r   setposzAu_read.setpos)  sq    77cDOO----/000>!-(((
t)>>???r   c                 d    | j         }|r$d | _         | j        r|                                 d S d S d S rA   )rC   r9   rD   r<   r!   s     r   rD   zAu_read.close1  sG    z 	DJ| 

	 	 r   N)r   r   r   r>   rF   rH   rN   r:   rm   ro   rr   rt   rv   r|   r   r   r   r   r   r   rf   r   rD   r   r   r   r1   r1      sA               ," ," ,"\            $ $ $: : :
                   r   r1   c                       e 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 Zd Zd Zd Zd Zd Zd ZdS )Au_writec                     t          |          t          d          k    r"dd l}|                    |d          }d| _        nd| _        |                     |           d S )Nr3   r   wbTFr5   r;   s      r   r>   zAu_write.__init__:  r?   r   c                 J    | j         r|                                  d | _         d S rA   rB   rE   s    r   rF   zAu_write.__del__C  s$    : 	JJLLL


r   c                     | S rA   r   rE   s    r   rH   zAu_write.__enter__H  rI   r   c                 .    |                                   d S rA   rK   rL   s     r   rN   zAu_write.__exit__K  rO   r   c                     || _         d| _        d| _        d| _        d| _        t
          | _        d| _        d| _        d| _	        d| _
        d| _        d S )Nr   r   rx   )rC   rb   rc   r\   r]   rW   _nframes_nframeswritten_datawritten_datalengthrd   	_comptyper   s     r   r:   zAu_write.initfpN  sV    
* 
r   c                 f    | j         rt          d          |dvrt          d          || _        d S )N0cannot change parameters after starting to write)r   r	   r
   z"only 1, 2, or 4 channels supported)r   r   rc   )r<   	nchannelss     r   setnchannelszAu_write.setnchannels[  sB     	LJKKKI%%<===#r   c                 <    | j         st          d          | j         S )Nznumber of channels not set)rc   r   rE   s    r   ro   zAu_write.getnchannelsb  #     	64555r   c                 f    | j         rt          d          |dvrt          d          || _        d S )Nr   )r   r	   r   r
   zbad sample width)r   r   r\   )r<   	sampwidths     r   setsampwidthzAu_write.setsampwidthg  sB     	LJKKKL((*+++#r   c                 <    | j         st          d          | j        S )Nsample width not specified)rb   r   r\   rE   s    r   rr   zAu_write.getsampwidthn  r   r   c                 @    | j         rt          d          || _        d S )Nr   )r   r   rb   )r<   	framerates     r   setframeratezAu_write.setframerates  s(     	LJKKK#r   c                 <    | j         st          d          | j         S )Nzframe rate not set)rb   r   rE   s    r   rt   zAu_write.getframeratex  s#     	.,---r   c                 j    | j         rt          d          |dk     rt          d          || _        d S )Nr   r   z# of frames cannot be negative)r   r   r   )r<   r   s     r   
setnframeszAu_write.setnframes}  s@     	LJKKKQ;;8999r   c                     | j         S rA   r   rE   s    r   rv   zAu_write.getnframes      ##r   c                 :    |dv r	|| _         d S t          d          )N)rz   rx   zunknown compression type)r   r   )r<   r6   names      r   setcomptypezAu_write.setcomptype  s(    ###!DNNN2333r   c                     | j         S rA   r   rE   s    r   r|   zAu_write.getcomptype  r   r   c                 :    | j         dk    rdS | j         dk    rdS dS )Nrx   r~   ry   r   r   r   rE   s    r   r   zAu_write.getcompname  s.    >V##&&^v%%&&##r   c                     |\  }}}}}}|                      |           |                     |           |                     |           |                     |           |                     ||           d S rA   )r   r   r   r   r   )r<   paramsr   r   r   r   comptypecompnames           r   	setparamszAu_write.setparams  s~    GMD	9i(H)$$$)$$$)$$$   8,,,,,r   c           	         t          |                                 |                                 |                                 |                                 |                                 |                                           S rA   r   rE   s    r   r   zAu_write.getparams  r   r   c                     | j         S rA   r   rE   s    r   rf   zAu_write.tell  r   r   c                 B   t          |t          t          f          s"t          |                              d          }|                                  | j        dk    ret          j                    5  t          j	        dt                     dd l}d d d            n# 1 swxY w Y   |                    || j                  }t          |          | j        z  }| j                            |           | j        |z   | _        | j        t          |          z   | _        d S )NBrx   r   r   r   )
isinstancer+   	bytearray
memoryviewcast_ensure_header_writtenr   r   r   r   r   r   lin2ulawr\   r   r]   rC   r*   r   r   )r<   r,   r   r   s       r   writeframesrawzAu_write.writeframesraw  sD   $	 233 	.d##((--D##%%%>V##(**  %h9KLLLL               ##D$/::Dd))t.
#3g= -D		9s   1 BB!$B!c                     |                      |           | j        | j        k    s| j        | j        k    r|                                  d S d S rA   )r   r   r   r   r   _patchheader)r<   r,   s     r   writeframeszAu_write.writeframes  sW    D!!!4=00"d&777 87r   c                    | j         r	 |                                  | j        | j        k    s| j        | j        k    r|                                  | j                                          | j         }d | _         | j        r|	                                 d S d S # | j         }d | _         | j        r|	                                 w w xY wd S rA   )
rC   r   r   r   r   r   r   flushr9   rD   r   s     r   rD   zAu_write.close  s    : 	!
!++---'4=88(D,===%%'''
  """z!
< !JJLLLLL! ! z!
< !JJLLLL!	! 	!s   A!B ,Cc                     | j         sX| j        st          d          | j        st          d          | j        st          d          |                                  d S d S )Nz# of channels not specifiedr   zframe rate not specified)r   rc   r   r\   rb   _write_headerrE   s    r   r   zAu_write._ensure_header_written  sz    # 	!? ;9:::? :8999? 86777     	! 	!r   c                 \   | j         dk    rw| j        dk    rt          }d| _        n| j        dk    rt          }d| _        nl| j        dk    rt
          }d| _        nR| j        dk    rt          }d| _        n8t          d          | j         dk    rt          }d| _        nt          d          | j        | j	        z  | _        t          | j        t                     dt          | j                  z   }|d	z   d
z  }t          | j        |           | j        t           k    rt           }n| j        | j        z  }	 | j                                        | _        n# t&          t(          f$ r
 d | _        Y nw xY wt          | j        |           || _        t          | j        |           t          | j        | j                   t          | j        | j	                   | j                            | j                   | j                            d|t          | j                  z
  dz
  z             d S )Nrz   r   r	   r   r
   zinternal errorrx   r   r   irR   r   )r   r\   r^   r]   r_   r`   ra   r   rZ   rc   r/   rC   rT   r   rd   r   rW   rf   _form_length_posrh   ri   r   rb   r*   )r<   encodingheader_sizelengths       r   r   zAu_write._write_header  s   >V##!##7"#A%%8"#A%%8"#A%%8"#,---^v%%2HDOO()))/DO;4:/0003tz??*"Q",4:{+++=...'FF]T_4F	)$(JOO$5$5D!!( 	) 	) 	)$(D!!!	)4:v&&&!4:x(((4:t///4:t///
$$$
c$*oo = BCDDDDDs   6E E0/E0c                     | j         t          d          | j                            | j                    t	          | j        | j                   | j        | _        | j                            dd           d S )Nr   r   r	   )r   ri   rC   r   r/   r   r   rE   s    r   r   zAu_write._patchheader  sl     (-(((
-...4:t0111,
1r   N)r   r   r   r>   rF   rH   rN   r:   r   ro   r   rr   r   rt   r   rv   r   r|   r   r   r   rf   r   r   rD   r   r   r   r   r   r   r   r   8  s           
         $ $ $  
$ $ $  
$ $ $
  
     $ $ $4 4 4  $ $ $- - -: : :
$ $ $: : :     ! ! !$! ! !(E (E (ET    r   r   c                     |t          | d          r| j        }nd}|dv rt          |           S |dv rt          |           S t	          d          )Nmoder4   )rr4   )wr   z$mode must be 'r', 'rb', 'w', or 'wb')hasattrr   r1   r   r   )r=   r   s     r   r8   r8   
  sd    |1f 	6DDD{qzz			{{:;;;r   rA   )collectionsr   r   _deprecatedr   r   rT   rZ   r^   r_   r`   ra   AUDIO_FILE_ENCODING_FLOATAUDIO_FILE_ENCODING_DOUBLEAUDIO_FILE_ENCODING_ADPCM_G721AUDIO_FILE_ENCODING_ADPCM_G722 AUDIO_FILE_ENCODING_ADPCM_G723_3 AUDIO_FILE_ENCODING_ADPCM_G723_5r[   rW   rY   	Exceptionr   r%   r/   r1   r   r8   r   r   r   <module>r      s  gR # " " " " "   Xg . . . . 
?TV V      !  !  !   !# !# #%  #%      01222/1 	 	 	 	 	I 	 	 	    V V V V V V V VpP P P P P P P Pd< < < < < <r   