o
     JAf                     @   s2  	 d dgZ ddlmZ eddZdej_dej_dej_d	ej_d
ej	_dd  Z
dd Zg Zdd Zee dd Zee dd Zee dd Zee dd Zee dd Zee dd Zee dd Zee dd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zed)kre  d*S d*S )+whatwhathdr    )
namedtuple
SndHeadersz.filetype framerate nchannels nframes sampwidthzThe value for type indicates the data type
and will be one of the strings 'aifc', 'aiff', 'au','hcom',
'sndr', 'sndt', 'voc', 'wav', '8svx', 'sb', 'ub', or 'ul'.zYThe sampling_rate will be either the actual
value or 0 if unknown or difficult to decode.z^The number of channels or 0 if it cannot be
determined or if the value is difficult to decode.z?The value for frames will be either the number
of frames or -1.zAEither the sample size in bits or
'A' for A-LAW or 'U' for u-LAW.c                 C   s   	 t | }|S )N)r   )filenameres r   /usr/lib/python3.10/sndhdr.pyr   4   s   c                 C   sp   	 t | d(}|d}tD ]}|||}|r$t|   W  d    S q	 W d    d S 1 s1w   Y  d S )Nrbi   )openreadtestsr   )r   fhZtfr   r   r   r	   r   :   s   


$c              	   C   s   dd l }| dsd S | dd dkrd}n| dd dkr!d}nd S |d z||d	}W n t|jfy=   Y d S w || | | d|	  fS )
Nr      FORM      s   AIFCaifcs   AIFFZaiffr)
r   
startswithseekr   EOFErrorErrorgetframerategetnchannels
getnframesgetsampwidth)r   r   r   fmtar   r   r	   	test_aifcK   s"   

r   c                 C   s   |  drt}n| d d dv rt}nd S d}|| dd }|| dd }|| dd }|| dd }|| dd	 }d
}	|d
krHd}
n|dkrOd}
n|dkrXd}
d}	nd}
|	| }|re|| }nd}|||||
fS )Ns   .snd   )s    ds.s   dns.Zaur   r               U      ?)r   get_long_beget_long_le)r   r   funcfiletypeZhdr_size	data_sizeencodingrate	nchannelsZsample_sizeZsample_bits
frame_sizeZnframer   r   r	   test_au`   s2   

r3   c                 C   sT   | dd dks| dd dkrd S t | dd }|r!d	| }nd
}d|dddfS )NA   E   s   FSSD      s   HCOM      i"V  r   Zhcomr$   r)   r   )r*   )r   r   Zdivisorr0   r   r   r	   	test_hcom   s    
r:   c                 C   st   |  dsd S t| dd }d}d|  krdk r3n n| | dkr3d| |d   }|r3td	| }d
|dddfS )Ns   Creative Voice Filer"      r   i  r$      r    g    .AZvocr)   r   )r   get_short_leint)r   r   Zsbseekr0   Zratecoder   r   r	   test_voc   s   
$r?   c              	   C   s   dd l }| dr| dd dks| dd dkrd S |d z||d}W n t|jfy5   Y d S w d	| | | d|	  fS )
Nr   s   RIFFr   r   s   WAVEr!   s   fmt r   Zwav)
waver   r   r   r   r   r   r   r   r   )r   r   r@   wr   r   r	   test_wav   s   *
rB   c                 C   s"   |  dr| dd dkrd S dS )Nr   r   r   s   8SVX)Z8svxr   r$   r   r   )r   )r   r   r   r   r	   	test_8svx   s   rC   c                 C   s<   |  drt| dd }t| dd }d|d|dfS d S )Ns   SOUNDr   r   r"   r;   Zsndtr$   )r   r+   r=   )r   r   Znsamplesr0   r   r   r	   	test_sndt   s
   
rD   c                 C   sJ   |  dr!t| dd }d|  krdkr#n d S d|ddd	fS d S d S )
Ns     r&   r    i  ia  Zsndrr$   r)   r   )r   r=   )r   r   r0   r   r   r	   	test_sndr   s   
rE   c                 C   ,   | d d> | d d> B | d d> B | d B S )Nr   r#   r$   r!   r&   r   r'   r   br   r   r	   r*         ,r*   c                 C   rF   )Nr'   r#   r&   r!   r$   r   r   r   rG   r   r   r	   r+      rI   r+   c                 C      | d d> | d B S )Nr   r   r$   r   rG   r   r   r	   get_short_be      rK   c                 C   rJ   )Nr$   r   r   r   rG   r   r   r	   r=      rL   r=   c                  C   s   dd l } d}| jdd  r| jd dkr| jdd= d}z| jdd  r2t| jdd  |d W d S tdg|d W d S  tyP   | jd | d Y d S w )Nr   r$   z-rr&   .z
[Interrupted]
)sysargvtestallKeyboardInterruptstderrwriteexit)rN   	recursiver   r   r	   test   s   rV   c              	   C   s   dd l }dd l}| D ]W}|j|r?t|d dd |s|r:td dd l}||j||d}t||d q
td q
t|d dd |j	
  ztt| W q
 tya   td	 Y q
w d S )
Nr   z/: )endzrecursing down:*z*** directory (use -r) ***:z*** not found ***)rN   ospathisdirprintglobjoinescaperP   stdoutflushr   OSError)listrU   ZtoplevelrN   r[   r   r_   namesr   r   r	   rP      s&   

rP   __main__N)__all__collectionsr   r   r-   __doc__Z	framerater1   ZnframesZ	sampwidthr   r   r   r   appendr3   r:   r?   rB   rC   rD   rE   r*   r+   rK   r=   rV   rP   __name__r   r   r   r	   <module>   sN     









